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

Unified Diff: content/browser/power_save_blocker_mac.cc

Issue 11784016: chromeos: Block system suspend while uploading files to Drive (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: PowerSaveBlocker is a pure interface Created 7 years, 11 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/browser/power_save_blocker_mac.cc
diff --git a/content/browser/power_save_blocker_mac.cc b/content/browser/power_save_blocker_mac.cc
index 0f63de01d347acdd847e102893a5a72da06bcd2d..aaed6a8c05654e451c3a93c5c9202210320216c4 100644
--- a/content/browser/power_save_blocker_mac.cc
+++ b/content/browser/power_save_blocker_mac.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/power_save_blocker.h"
+#include "content/public/browser/power_save_blocker.h"
#include <IOKit/pwr_mgt/IOPMLib.h>
@@ -34,10 +34,22 @@ struct PowerSaveBlockerLazyInstanceTraits {
base::LazyInstance<base::Thread, PowerSaveBlockerLazyInstanceTraits>
g_power_thread = LAZY_INSTANCE_INITIALIZER;
-} // namespace
+class PowerSaveBlockerMac : public PowerSaveBlocker {
+ public:
+ PowerSaveBlockerMac(PowerSaveBlockerType type, const std::string& reason);
+ virtual ~PowerSaveBlockerMac();
+
+ private:
+ class Delegate;
+
+ // A second object with different lifetime than the RAII container.
+ scoped_refptr<Delegate> delegate_;
-class PowerSaveBlocker::Delegate
- : public base::RefCountedThreadSafe<PowerSaveBlocker::Delegate> {
+ DISALLOW_COPY_AND_ASSIGN(PowerSaveBlockerMac);
+};
+
+class PowerSaveBlockerMac::Delegate
+ : public base::RefCountedThreadSafe<PowerSaveBlockerMac::Delegate> {
public:
Delegate(PowerSaveBlockerType type, const std::string& reason)
: type_(type), reason_(reason), assertion_(kIOPMNullAssertionID) {}
@@ -54,7 +66,7 @@ class PowerSaveBlocker::Delegate
IOPMAssertionID assertion_;
};
-void PowerSaveBlocker::Delegate::ApplyBlock() {
+void PowerSaveBlockerMac::Delegate::ApplyBlock() {
DCHECK_EQ(base::PlatformThread::CurrentId(),
g_power_thread.Pointer()->thread_id());
@@ -84,7 +96,7 @@ void PowerSaveBlocker::Delegate::ApplyBlock() {
}
}
-void PowerSaveBlocker::Delegate::RemoveBlock() {
+void PowerSaveBlockerMac::Delegate::RemoveBlock() {
DCHECK_EQ(base::PlatformThread::CurrentId(),
g_power_thread.Pointer()->thread_id());
@@ -95,18 +107,27 @@ void PowerSaveBlocker::Delegate::RemoveBlock() {
}
}
-PowerSaveBlocker::PowerSaveBlocker(PowerSaveBlockerType type,
- const std::string& reason)
+PowerSaveBlockerMac::PowerSaveBlockerMac(PowerSaveBlockerType type,
+ const std::string& reason)
: delegate_(new Delegate(type, reason)) {
g_power_thread.Pointer()->message_loop()->PostTask(
FROM_HERE,
base::Bind(&Delegate::ApplyBlock, delegate_));
}
-PowerSaveBlocker::~PowerSaveBlocker() {
+PowerSaveBlockerMac::~PowerSaveBlockerMac() {
g_power_thread.Pointer()->message_loop()->PostTask(
FROM_HERE,
base::Bind(&Delegate::RemoveBlock, delegate_));
}
+} // namespace
+
+// static
+scoped_ptr<PowerSaveBlocker> PowerSaveBlocker::Create(
+ PowerSaveBlockerType type,
+ const std::string& reason) {
+ return scoped_ptr<PowerSaveBlocker>(new PowerSaveBlockerMac(type, reason));
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698