• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_CHROMEOS_CROS_POWER_LIBRARY_H_
6 #define CHROME_BROWSER_CHROMEOS_CROS_POWER_LIBRARY_H_
7 #pragma once
8 
9 #include "base/memory/singleton.h"
10 #include "base/observer_list.h"
11 #include "base/time.h"
12 #include "third_party/cros/chromeos_power.h"
13 
14 namespace chromeos {
15 
16 // This interface defines interaction with the ChromeOS power library APIs.
17 // Classes can add themselves as observers. Users can get an instance of this
18 // library class like this: chromeos::CrosLibrary::Get()->GetPowerLibrary()
19 class PowerLibrary {
20  public:
21   class Observer {
22    public:
23     virtual void PowerChanged(PowerLibrary* obj) = 0;
24     virtual void SystemResumed() = 0;
25   };
~PowerLibrary()26   virtual ~PowerLibrary() {}
27   virtual void AddObserver(Observer* observer) = 0;
28   virtual void RemoveObserver(Observer* observer) = 0;
29   // Whether or not the line power is connected.
30   virtual bool line_power_on() const = 0;
31 
32   // Whether or not the battery is fully charged..
33   virtual bool battery_fully_charged() const = 0;
34 
35   // The percentage (0-100) of remaining battery.
36   virtual double battery_percentage() const = 0;
37 
38   // Whether there is a battery present.
39   virtual bool battery_is_present() const = 0;
40 
41   // The amount of time until battery is empty.
42   virtual base::TimeDelta battery_time_to_empty() const = 0;
43 
44   // The amount of time until battery is full.
45   virtual base::TimeDelta battery_time_to_full() const = 0;
46 
47   // Enable/disable screen lock for current session.
48   virtual void EnableScreenLock(bool enable) = 0;
49 
50   // Requests restart of the system.
51   virtual void RequestRestart() = 0;
52 
53   // Requests shutdown of the system.
54   virtual void RequestShutdown() = 0;
55 
56   // Factory function, creates a new instance and returns ownership.
57   // For normal usage, access the singleton via CrosLibrary::Get().
58   static PowerLibrary* GetImpl(bool stub);
59 };
60 
61 }  // namespace chromeos
62 
63 #endif  // CHROME_BROWSER_CHROMEOS_CROS_POWER_LIBRARY_H_
64