| Index: chrome/browser/chromeos/policy/recommendation_restorer.cc
|
| diff --git a/chrome/browser/chromeos/policy/recommendation_restorer.cc b/chrome/browser/chromeos/policy/recommendation_restorer.cc
|
| index aaf19e08b155627ae23fe08d63688e0877dd52e6..d3e0c63a45f074b92769bbed9d5bd07c1c0004b9 100644
|
| --- a/chrome/browser/chromeos/policy/recommendation_restorer.cc
|
| +++ b/chrome/browser/chromeos/policy/recommendation_restorer.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/prefs/pref_service.h"
|
| #include "base/time/time.h"
|
| #include "base/values.h"
|
| +#include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/chromeos/profiles/profile_helper.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -33,22 +34,27 @@ RecommendationRestorer::RecommendationRestorer(Profile* profile)
|
| if (!chromeos::ProfileHelper::IsSigninProfile(profile))
|
| return;
|
|
|
| + global_pref_change_registrar_.Init(g_browser_process->local_state());
|
| + global_pref_change_registrar_.Add(
|
| + prefs::kSpokenFeedbackEnabled,
|
| + base::Bind(&RecommendationRestorer::RestoreGlobalPref,
|
| + base::Unretained(this), true));
|
| +
|
| pref_change_registrar_.Init(profile->GetPrefs());
|
| - pref_change_registrar_.Add(prefs::kLargeCursorEnabled,
|
| - base::Bind(&RecommendationRestorer::Restore,
|
| - base::Unretained(this), true));
|
| - pref_change_registrar_.Add(prefs::kSpokenFeedbackEnabled,
|
| - base::Bind(&RecommendationRestorer::Restore,
|
| - base::Unretained(this), true));
|
| - pref_change_registrar_.Add(prefs::kHighContrastEnabled,
|
| - base::Bind(&RecommendationRestorer::Restore,
|
| - base::Unretained(this), true));
|
| + pref_change_registrar_.Add(
|
| + prefs::kLargeCursorEnabled,
|
| + base::Bind(&RecommendationRestorer::RestoreUserPref,
|
| + base::Unretained(this), true));
|
| + pref_change_registrar_.Add(
|
| + prefs::kHighContrastEnabled,
|
| + base::Bind(&RecommendationRestorer::RestoreUserPref,
|
| + base::Unretained(this), true));
|
| pref_change_registrar_.Add(prefs::kScreenMagnifierEnabled,
|
| - base::Bind(&RecommendationRestorer::Restore,
|
| - base::Unretained(this), true));
|
| + base::Bind(&RecommendationRestorer::RestoreUserPref,
|
| + base::Unretained(this), true));
|
| pref_change_registrar_.Add(prefs::kScreenMagnifierType,
|
| - base::Bind(&RecommendationRestorer::Restore,
|
| - base::Unretained(this), true));
|
| + base::Bind(&RecommendationRestorer::RestoreUserPref,
|
| + base::Unretained(this), true));
|
|
|
| notification_registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_CHANGED,
|
| content::NotificationService::AllSources());
|
| @@ -62,6 +68,7 @@ RecommendationRestorer::~RecommendationRestorer() {
|
| void RecommendationRestorer::Shutdown() {
|
| StopTimer();
|
| pref_change_registrar_.RemoveAll();
|
| + global_pref_change_registrar_.RemoveAll();
|
| notification_registrar_.RemoveAll();
|
| }
|
|
|
| @@ -84,10 +91,24 @@ void RecommendationRestorer::OnUserActivity(const ui::Event* event) {
|
| restore_timer_.Reset();
|
| }
|
|
|
| -void RecommendationRestorer::Restore(bool allow_delay,
|
| - const std::string& pref_name) {
|
| +void RecommendationRestorer::RestoreUserPref(bool allow_delay,
|
| + const std::string& pref_name) {
|
| + RestorePrefInternal(allow_delay, pref_change_registrar_.prefs(), pref_name);
|
| +}
|
| +
|
| +void RecommendationRestorer::RestoreGlobalPref(bool allow_delay,
|
| + const std::string& pref_name) {
|
| + RestorePrefInternal(allow_delay,
|
| + global_pref_change_registrar_.prefs(),
|
| + pref_name);
|
| +}
|
| +
|
| +void RecommendationRestorer::RestorePrefInternal(
|
| + bool allow_delay,
|
| + PrefService* prefs,
|
| + const std::string& pref_name) {
|
| const PrefService::Preference* pref =
|
| - pref_change_registrar_.prefs()->FindPreference(pref_name.c_str());
|
| + prefs->FindPreference(pref_name.c_str());
|
| if (!pref) {
|
| NOTREACHED();
|
| return;
|
| @@ -108,15 +129,15 @@ void RecommendationRestorer::Restore(bool allow_delay,
|
| if (allow_delay)
|
| StartTimer();
|
| else
|
| - pref_change_registrar_.prefs()->ClearPref(pref->name().c_str());
|
| + prefs->ClearPref(pref->name().c_str());
|
| }
|
|
|
| void RecommendationRestorer::RestoreAll() {
|
| - Restore(false, prefs::kLargeCursorEnabled);
|
| - Restore(false, prefs::kSpokenFeedbackEnabled);
|
| - Restore(false, prefs::kHighContrastEnabled);
|
| - Restore(false, prefs::kScreenMagnifierEnabled);
|
| - Restore(false, prefs::kScreenMagnifierType);
|
| + RestoreGlobalPref(false, prefs::kSpokenFeedbackEnabled);
|
| + RestoreUserPref(false, prefs::kLargeCursorEnabled);
|
| + RestoreUserPref(false, prefs::kHighContrastEnabled);
|
| + RestoreUserPref(false, prefs::kScreenMagnifierEnabled);
|
| + RestoreUserPref(false, prefs::kScreenMagnifierType);
|
| }
|
|
|
| void RecommendationRestorer::StartTimer() {
|
|
|