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(
}
}
void PrivacyScreenController::OnEnabledPrefChanged() {
void PrivacyScreenController::OnEnabledPrefChanged(bool notify_observers) {
if (IsSupported()) {
const bool is_enabled = GetEnabled();
Shell::Get()->display_configurator()->SetPrivacyScreenOnInternalDisplay(
is_enabled);
if (!notify_observers)
return;
for (Observer& observer : observers_)
observer.OnPrivacyScreenSettingChanged(is_enabled);
}
......@@ -109,9 +112,12 @@ void PrivacyScreenController::InitFromUserPrefs() {
pref_change_registrar_->Add(
prefs::kDisplayPrivacyScreenEnabled,
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
......@@ -60,7 +60,7 @@ class ASH_EXPORT PrivacyScreenController
private:
// 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
// OnActiveUserPrefServiceChanged() is called.
......
......@@ -148,6 +148,9 @@ TEST_F(PrivacyScreenControllerTest, TestEnableAndDisable) {
// Enable for user 1, and switch to user 2. User 2 should have it disabled.
controller()->SetEnabled(true);
// Switching accounts shouldn't trigger observers.
::testing::Mock::VerifyAndClear(observer());
EXPECT_CALL(*observer(), OnPrivacyScreenSettingChanged).Times(0);
EXPECT_TRUE(controller()->GetEnabled());
SwitchActiveUser(kUser2Email);
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