mirror of
https://github.com/kidfromjupiter/nearby.git
synced 2026-09-14 14:46:12 -04:00
Fix a bug that prevented switching from everyone mode to temporary everyone mode
PiperOrigin-RevId: 673949109
This commit is contained in:
committed by
Copybara-Service
parent
c9702906ba
commit
149366bd12
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user