| Index: device/power_save_blocker/power_save_blocker.h
|
| diff --git a/device/power_save_blocker/power_save_blocker.h b/device/power_save_blocker/power_save_blocker.h
|
| index 096d816035d4bbc7f1346a3e08cd8a19bcbb0d7f..ff77808c2536246bbb043dcd9caa9cc5cb4f8906 100644
|
| --- a/device/power_save_blocker/power_save_blocker.h
|
| +++ b/device/power_save_blocker/power_save_blocker.h
|
| @@ -9,10 +9,15 @@
|
| #include <string>
|
|
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/memory/weak_ptr.h"
|
| #include "base/sequenced_task_runner.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "device/power_save_blocker/power_save_blocker_export.h"
|
|
|
| +#if defined(OS_ANDROID)
|
| +#include "ui/android/view_android.h"
|
| +#endif // OS_ANDROID
|
| +
|
| namespace device {
|
|
|
| // A RAII-style class to block the system from entering low-power (sleep) mode.
|
| @@ -44,19 +49,53 @@ class DEVICE_POWER_SAVE_BLOCKER_EXPORT PowerSaveBlocker {
|
| kReasonOther,
|
| };
|
|
|
| - virtual ~PowerSaveBlocker() = 0;
|
| -
|
| // Pass in the type of power save blocking desired. If multiple types of
|
| // blocking are desired, instantiate one PowerSaveBlocker for each type.
|
| // |reason| and |description| (a more-verbose, human-readable justification of
|
| // the blocking) may be provided to the underlying system APIs on some
|
| // platforms.
|
| - static std::unique_ptr<PowerSaveBlocker> CreateWithTaskRunners(
|
| + PowerSaveBlocker(
|
| PowerSaveBlockerType type,
|
| Reason reason,
|
| const std::string& description,
|
| scoped_refptr<base::SequencedTaskRunner> ui_task_runner,
|
| - scoped_refptr<base::SingleThreadTaskRunner> file_task_runner);
|
| + scoped_refptr<base::SingleThreadTaskRunner> blocking_task_runner);
|
| + virtual ~PowerSaveBlocker();
|
| +
|
| +#if defined(OS_ANDROID)
|
| + // On Android, the kPowerSaveBlockPreventDisplaySleep type of
|
| + // PowerSaveBlocker should associated with a View, so the blocker can be
|
| + // removed by the platform.
|
| + DEVICE_POWER_SAVE_BLOCKER_EXPORT void InitDisplaySleepBlocker(
|
| + const base::WeakPtr<ui::ViewAndroid>& view_android);
|
| +#endif
|
| +
|
| + private:
|
| + class Delegate;
|
| +
|
| + // Implementations of this class may need a second object with different
|
| + // lifetime than the RAII container, or additional storage. This member is
|
| + // here for that purpose. If not used, just define the class as an empty
|
| + // RefCounted (or RefCountedThreadSafe) like so to make it compile:
|
| + // class PowerSaveBlocker::Delegate
|
| + // : public base::RefCounted<PowerSaveBlocker::Delegate> {
|
| + // private:
|
| + // friend class base::RefCounted<Delegate>;
|
| + // ~Delegate() {}
|
| + // };
|
| + scoped_refptr<Delegate> delegate_;
|
| +
|
| +#if defined(USE_X11)
|
| + // Since display sleep prevention also implies system suspend prevention, for
|
| + // the Linux FreeDesktop API case, there needs to be a second delegate to
|
| + // block system suspend when screen saver / display sleep is blocked.
|
| + scoped_refptr<Delegate> freedesktop_suspend_delegate_;
|
| +#endif
|
| +
|
| + scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
|
| + scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PowerSaveBlocker);
|
| };
|
|
|
| } // namespace device
|
|
|