Index: base/system_monitor/system_monitor.h |
=================================================================== |
--- base/system_monitor/system_monitor.h (revision 137792) |
+++ base/system_monitor/system_monitor.h (working copy) |
@@ -6,10 +6,13 @@ |
#define BASE_SYSTEM_MONITOR_SYSTEM_MONITOR_H_ |
#pragma once |
+#include <map> |
#include <string> |
+#include <utility> |
#include "base/base_export.h" |
#include "base/basictypes.h" |
+#include "base/threading/thread_checker.h" |
#include "build/build_config.h" |
// Windows HiRes timers drain the battery faster so we need to know the battery |
@@ -46,6 +49,13 @@ |
RESUME_EVENT // The system is being resumed. |
}; |
+ enum PowerRequirement { |
+ DISPLAY_REQUIRED, // The display should not be shut down. |
+ SYSTEM_REQUIRED, // The system should not be suspended. |
+ CPU_REQUIRED, // The process should not be suspended. |
+ TEST_REQUIRED // This is used by unit tests. |
+ }; |
+ |
typedef unsigned int DeviceIdType; |
// Create SystemMonitor. Only one SystemMonitor instance per application |
@@ -145,6 +155,22 @@ |
const FilePath& path); |
void ProcessMediaDeviceDetached(const DeviceIdType& id); |
+ // Enters or leaves a period of time with a given |requirement|. If the |
+ // operation has multiple requirements, make sure to use a unique |reason| for |
+ // each one. Reusing the same |reason| is OK as far as the |requirement| is |
+ // the same in every call, and each BeginPowerRequirement call is paired with |
+ // a call to EndPowerRequirement. |reason| is expected to be an ASCII string. |
+ // Must be called from the thread that created the SystemMonitor. |
+ // Warning: Please remember that sleep deprivation is not a good thing; use |
+ // with caution. |
+ void BeginPowerRequirement(PowerRequirement requirement, |
+ const std::string& reason); |
+ void EndPowerRequirement(PowerRequirement requirement, |
+ const std::string& reason); |
+ |
+ // Returns the number of outsanding power requirement requests. |
+ size_t GetPowerRequirementsCountForTest() const; |
+ |
private: |
#if defined(OS_MACOSX) |
void PlatformInit(); |
@@ -176,6 +202,11 @@ |
bool battery_in_use_; |
bool suspended_; |
+#if defined(OS_WIN) |
+ std::map<std::string, std::pair<HANDLE, int> > handles_; |
+ base::ThreadChecker thread_checker_; |
+#endif |
+ |
#if defined(ENABLE_BATTERY_MONITORING) |
base::OneShotTimer<SystemMonitor> delayed_battery_check_; |
#endif |