Commit a71002de authored by Tim Song's avatar Tim Song Committed by Commit Bot

Ash Display: Do not call PrivacyScreenController observers on init.

Because we display a toast when the privacy screen setting changes,
we do not want to display it on initialization or switching users.

BUG=1040648

Change-Id: I7f507fa401e4c040f8dc3c531a3aaea91e3ff1fc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2079799
Commit-Queue: Tim Song <tengs@chromium.org>
Reviewed-by: default avatarAhmed Fakhry <afakhry@chromium.org>
Reviewed-by: default avatarGil Dekel <gildekel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#745363}
parent 3dcf72de
...@@ -90,12 +90,15 @@ void PrivacyScreenController::OnDisplayModeChanged( ...@@ -90,12 +90,15 @@ void PrivacyScreenController::OnDisplayModeChanged(
} }
} }
void PrivacyScreenController::OnEnabledPrefChanged() { void PrivacyScreenController::OnEnabledPrefChanged(bool notify_observers) {
if (IsSupported()) { if (IsSupported()) {
const bool is_enabled = GetEnabled(); const bool is_enabled = GetEnabled();
Shell::Get()->display_configurator()->SetPrivacyScreenOnInternalDisplay( Shell::Get()->display_configurator()->SetPrivacyScreenOnInternalDisplay(
is_enabled); is_enabled);
if (!notify_observers)
return;
for (Observer& observer : observers_) for (Observer& observer : observers_)
observer.OnPrivacyScreenSettingChanged(is_enabled); observer.OnPrivacyScreenSettingChanged(is_enabled);
} }
...@@ -109,9 +112,12 @@ void PrivacyScreenController::InitFromUserPrefs() { ...@@ -109,9 +112,12 @@ void PrivacyScreenController::InitFromUserPrefs() {
pref_change_registrar_->Add( pref_change_registrar_->Add(
prefs::kDisplayPrivacyScreenEnabled, prefs::kDisplayPrivacyScreenEnabled,
base::BindRepeating(&PrivacyScreenController::OnEnabledPrefChanged, base::BindRepeating(&PrivacyScreenController::OnEnabledPrefChanged,
base::Unretained(this))); base::Unretained(this),
/*notify_observers=*/true));
OnEnabledPrefChanged(); // We don't want to notify observers upon initialization or on account change
// because changes will trigger a toast to show up.
OnEnabledPrefChanged(/*notify_observers=*/false);
} }
} // namespace ash } // namespace ash
...@@ -60,7 +60,7 @@ class ASH_EXPORT PrivacyScreenController ...@@ -60,7 +60,7 @@ class ASH_EXPORT PrivacyScreenController
private: private:
// Called when the user pref for the status of PrivacyScreen is changed. // Called when the user pref for the status of PrivacyScreen is changed.
void OnEnabledPrefChanged(); void OnEnabledPrefChanged(bool notify_observers);
// Called when a change to |active_user_pref_service_| is detected (i.e. when // Called when a change to |active_user_pref_service_| is detected (i.e. when
// OnActiveUserPrefServiceChanged() is called. // OnActiveUserPrefServiceChanged() is called.
......
...@@ -148,6 +148,9 @@ TEST_F(PrivacyScreenControllerTest, TestEnableAndDisable) { ...@@ -148,6 +148,9 @@ TEST_F(PrivacyScreenControllerTest, TestEnableAndDisable) {
// Enable for user 1, and switch to user 2. User 2 should have it disabled. // Enable for user 1, and switch to user 2. User 2 should have it disabled.
controller()->SetEnabled(true); controller()->SetEnabled(true);
// Switching accounts shouldn't trigger observers.
::testing::Mock::VerifyAndClear(observer());
EXPECT_CALL(*observer(), OnPrivacyScreenSettingChanged).Times(0);
EXPECT_TRUE(controller()->GetEnabled()); EXPECT_TRUE(controller()->GetEnabled());
SwitchActiveUser(kUser2Email); SwitchActiveUser(kUser2Email);
EXPECT_FALSE(controller()->GetEnabled()); EXPECT_FALSE(controller()->GetEnabled());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment