Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Unified Diff: trunk/src/chrome/browser/chromeos/policy/recommendation_restorer.cc

Issue 17068004: Revert 207755 "Add device policies to control accessibility sett..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: trunk/src/chrome/browser/chromeos/policy/recommendation_restorer.cc
===================================================================
--- trunk/src/chrome/browser/chromeos/policy/recommendation_restorer.cc (revision 207797)
+++ trunk/src/chrome/browser/chromeos/policy/recommendation_restorer.cc (working copy)
@@ -1,144 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/policy/recommendation_restorer.h"
-
-#include "ash/shell.h"
-#include "ash/wm/user_activity_detector.h"
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/location.h"
-#include "base/logging.h"
-#include "base/prefs/pref_service.h"
-#include "base/time.h"
-#include "base/values.h"
-#include "chrome/browser/chromeos/profiles/profile_helper.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/pref_names.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-
-namespace policy {
-
-namespace {
-// The amount of idle time after which recommended values are restored.
-const int kRestoreDelayInMs = 60 * 1000; // 1 minute.
-} // namespace
-
-RecommendationRestorer::RecommendationRestorer(Profile* profile)
- : logged_in_(false) {
- if (!chromeos::ProfileHelper::IsSigninProfile(profile))
- return;
-
- 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::kScreenMagnifierEnabled,
- base::Bind(&RecommendationRestorer::Restore,
- base::Unretained(this), true));
- pref_change_registrar_.Add(prefs::kScreenMagnifierType,
- base::Bind(&RecommendationRestorer::Restore,
- base::Unretained(this), true));
-
- notification_registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_CHANGED,
- content::NotificationService::AllSources());
-
- RestoreAll();
-}
-
-RecommendationRestorer::~RecommendationRestorer() {
-}
-
-void RecommendationRestorer::Shutdown() {
- StopTimer();
- pref_change_registrar_.RemoveAll();
- notification_registrar_.RemoveAll();
-}
-
-void RecommendationRestorer::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- if (type == chrome::NOTIFICATION_LOGIN_USER_CHANGED) {
- logged_in_ = true;
- notification_registrar_.RemoveAll();
- StopTimer();
- RestoreAll();
- } else {
- NOTREACHED();
- }
-}
-
-void RecommendationRestorer::OnUserActivity() {
- if (restore_timer_.IsRunning())
- restore_timer_.Reset();
-}
-
-void RecommendationRestorer::Restore(bool allow_delay,
- const std::string& pref_name) {
- const PrefService::Preference* pref =
- pref_change_registrar_.prefs()->FindPreference(pref_name.c_str());
- if (!pref) {
- NOTREACHED();
- return;
- }
-
- if (!pref->GetRecommendedValue() || !pref->HasUserSetting())
- return;
-
- if (!logged_in_ && allow_delay)
- StartTimer();
- else
- pref_change_registrar_.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);
-}
-
-void RecommendationRestorer::StartTimer() {
- // Listen for user activity so that the timer can be reset while the user is
- // active, causing it to fire only when the user remains idle for
- // |kRestoreDelayInMs|.
- if (ash::Shell::HasInstance()) {
- ash::UserActivityDetector* user_activity_detector =
- ash::Shell::GetInstance()->user_activity_detector();
- if (!user_activity_detector->HasObserver(this))
- user_activity_detector->AddObserver(this);
- }
-
- // There should be a separate timer for each pref. However, in the common
- // case of the user changing settings, a single timer is sufficient. This is
- // because a change initiated by the user implies user activity, so that even
- // if there was a separate timer per pref, they would all be reset at that
- // point, causing them to fire at exactly the same time. In the much rarer
- // case of a recommended value changing, a single timer is a close
- // approximation of the behavior that would be obtained by resetting the timer
- // for the affected pref only.
- restore_timer_.Start(FROM_HERE,
- base::TimeDelta::FromMilliseconds(kRestoreDelayInMs),
- base::Bind(&RecommendationRestorer::RestoreAll,
- base::Unretained(this)));
-}
-
-void RecommendationRestorer::StopTimer() {
- restore_timer_.Stop();
- if (ash::Shell::HasInstance())
- ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this);
-}
-
-} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698