Fix a bug that prevented switching from everyone mode to temporary everyone mode

PiperOrigin-RevId: 673949109
This commit is contained in:
Nick Bourdakos
2024-09-12 12:11:18 -07:00
committed by Copybara-Service
parent c9702906ba
commit 149366bd12
2 changed files with 21 additions and 8 deletions
+1 -8
View File
@@ -267,6 +267,7 @@ void NearbyShareSettings::SetVisibility(DeviceVisibility visibility,
<< ", expiration=" << expiration;
visibility_expiration_timer_.reset();
SetFallbackVisibility(last_visibility);
absl::Time now = clock_->Now();
if (expiration != absl::ZeroDuration()) {
NL_VLOG(1) << __func__ << ": temporary visibility timer starts.";
@@ -274,16 +275,8 @@ void NearbyShareSettings::SetVisibility(DeviceVisibility visibility,
preference_manager_.SetInteger(
prefs::kNearbySharingBackgroundVisibilityExpirationSeconds,
absl::ToUnixSeconds(fallback_visibility_timestamp));
SetFallbackVisibility(last_visibility);
StartVisibilityTimer(expiration);
} else {
// Since our UI provides the option to go back to temporary everyone mode,
// we should only clear the fallback visibility when we are not in everyone
// mode. Once we fall back to a non-everyone mode visibility, we should
// clear the fallback visibility.
if (visibility != DeviceVisibility::DEVICE_VISIBILITY_EVERYONE) {
SetFallbackVisibility(DeviceVisibility::DEVICE_VISIBILITY_UNSPECIFIED);
}
preference_manager_.SetInteger(
prefs::kNearbySharingBackgroundVisibilityExpirationSeconds, 0);
}
+20
View File
@@ -279,6 +279,26 @@ TEST_F(NearbyShareSettingsTest,
DeviceVisibility::DEVICE_VISIBILITY_UNSPECIFIED);
}
TEST_F(NearbyShareSettingsTest,
SetPersistentThenTemporaryVisibilityExpiresAndRestoresOriginal) {
// Set our initial visibility to self share.
settings()->SetVisibility(DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE);
// Set persistent everyone mode.
settings()->SetVisibility(DeviceVisibility::DEVICE_VISIBILITY_EVERYONE);
// Set everyone mode temporarily.
settings()->SetVisibility(
DeviceVisibility::DEVICE_VISIBILITY_EVERYONE,
absl::Seconds(prefs::kDefaultMaxVisibilityExpirationSeconds));
// Fast forward to the expiration time.
FastForward(absl::Seconds(prefs::kDefaultMaxVisibilityExpirationSeconds + 1));
// Verify that the visibility has expired and we are back to self share.
Flush();
EXPECT_EQ(settings()->GetVisibility(),
DeviceVisibility::DEVICE_VISIBILITY_SELF_SHARE);
EXPECT_EQ(settings()->GetFallbackVisibility().visibility,
DeviceVisibility::DEVICE_VISIBILITY_UNSPECIFIED);
}
TEST_F(NearbyShareSettingsTest,
GetFallbackVisibilityReturnsUnspecifiedIfPermanent) {
// Set our initial visibility to self share.