Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2602)

Unified Diff: content/common/power_monitor_client.h

Issue 17074009: Created multi-process-friendly PowerMonitor interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/power_monitor_client.h
diff --git a/content/common/power_monitor_client.h b/content/common/power_monitor_client.h
new file mode 100644
index 0000000000000000000000000000000000000000..febb5a0684c5c37f3044facbe467ac300d2088cf
--- /dev/null
+++ b/content/common/power_monitor_client.h
@@ -0,0 +1,53 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_COMMON_POWER_MONITOR_CLIENT_H_
+#define CONTENT_COMMON_POWER_MONITOR_CLIENT_H_
+
+#include "base/basictypes.h"
+#include "base/observer_list_threadsafe.h"
+#include "base/power_monitor/power_observer.h"
+
+#include "content/common/content_export.h"
+
+namespace content {
+
+// A class used to monitor the power state change and notify the observers about
+// the change event.
+class CONTENT_EXPORT PowerMonitorClient {
wrong vandebo 2013/06/24 16:34:49 So this class looks basically the same as base::Sy
bajones 2013/06/25 18:33:34 I assume you mean base::PowerMonitor, not base::Sy
vandebo (ex-Chrome) 2013/06/25 18:37:14 Oops, yes, base::PowerMonitor (PowerMonitor was e
+public:
+ PowerMonitorClient();
Ken Russell (switch to Gerrit) 2013/06/24 22:54:38 Since this class is a singleton the constructor an
bajones 2013/06/25 18:33:34 That would be my thinking as well, but that's not
+ ~PowerMonitorClient();
+
+ // Get the process-wide PowerMonitorClient (if not present, returns NULL).
+ static PowerMonitorClient* Get();
+
+ // Add and remove an observer.
+ // Can be called from any thread.
+ // Must not be called from within a notification callback.
+ void AddObserver(base::PowerObserver* observer);
+ void RemoveObserver(base::PowerObserver* observer);
+
+ // Is the computer currently on battery power. Can be called on any thread.
+ bool BatteryPower() const {
+ // Using a lock here is not necessary for just a bool.
scottmg 2013/06/22 00:11:24 tsan will not agree
+ return battery_in_use_;
+ }
+
+private:
+ friend class PowerMonitorMessageFilter;
+
+ void NotifyPowerStateChange(bool battery_in_use);
+ void NotifySuspend();
+ void NotifyResume();
+
+ scoped_refptr<ObserverListThreadSafe<base::PowerObserver> > observers_;
+ bool battery_in_use_;
+
+ DISALLOW_COPY_AND_ASSIGN(PowerMonitorClient);
+};
+
+} // namespace base
+
+#endif // CONTENT_COMMON_POWER_MONITOR_CLIENT_H_

Powered by Google App Engine
This is Rietveld 408576698