19ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
29ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
39ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// found in the LICENSE file.
49ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
59ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#ifndef CHROME_BROWSER_CHROMEOS_POWER_POWER_PREFS_H_
69ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#define CHROME_BROWSER_CHROMEOS_POWER_POWER_PREFS_H_
79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
89ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/basictypes.h"
99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/compiler_specific.h"
109ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/memory/scoped_ptr.h"
119ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/notification_observer.h"
129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "content/public/browser/notification_registrar.h"
139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass PrefChangeRegistrar;
159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass Profile;
169ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
179ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochnamespace user_prefs {
189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass PrefRegistrySyncable;
199ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
209ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
219ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochnamespace chromeos {
229ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
239ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass PowerPolicyController;
249ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
259ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// Sends an updated power policy to the |power_policy_controller| whenever one
269ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// of the power-related prefs changes.
279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochclass PowerPrefs : public content::NotificationObserver {
289ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch public:
299ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  explicit PowerPrefs(PowerPolicyController* power_policy_controller);
309ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  virtual ~PowerPrefs();
319ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
329ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // Register power prefs with default values applicable to a user profile.
339ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  static void RegisterUserProfilePrefs(
349ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch      user_prefs::PrefRegistrySyncable* registry);
359ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
369ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // Register power prefs with default values applicable to the login profile.
379ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  static void RegisterLoginProfilePrefs(
389ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch      user_prefs::PrefRegistrySyncable* registry);
399ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
409ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // content::NotificationObserver:
419ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  virtual void Observe(int type,
429ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                       const content::NotificationSource& source,
439ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch                       const content::NotificationDetails& details) OVERRIDE;
449ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
459ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  void UpdatePowerPolicyFromPrefs();
469ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
479ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch private:
489ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  friend class PowerPrefsTest;
499ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
509ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // Register power prefs whose default values are the same in user profiles and
519ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  // the login profile.
529ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
539ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
549ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  void SetProfile(Profile* profile);
559ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
569ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  PowerPolicyController* power_policy_controller_;  // Not owned.
579ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
589ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  content::NotificationRegistrar notification_registrar_;
599ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
609ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  Profile* profile_;  // Not owned.
619ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  scoped_ptr<PrefChangeRegistrar> pref_change_registrar_;
629ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
639ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(PowerPrefs);
649ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch};
659ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
669ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}  // namespace chromeos
679ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
689ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#endif  // CHROME_BROWSER_CHROMEOS_POWER_POWER_PREFS_H_
69