Home | History | Annotate | Download | only in cros
      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   };
     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