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

Unified Diff: content/browser/power_save_blocker_win.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_win.cc
diff --git a/content/browser/power_save_blocker_win.cc b/content/browser/power_save_blocker_win.cc
index ab3e40830bbb4d4aa8ced4283f38fb507db4159f..56a17c8464055068fcfd7f1c4e957909877b2bb1 100644
--- a/content/browser/power_save_blocker_win.cc
+++ b/content/browser/power_save_blocker_win.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 <windows.h>
@@ -105,10 +105,22 @@ void ApplySimpleBlock(PowerSaveBlocker::PowerSaveBlockerType type,
SetThreadExecutionState(flags);
}
-} // namespace.
+class PowerSaveBlockerWin : public PowerSaveBlocker {
+ public:
+ PowerSaveBlockerWin(PowerSaveBlockerType type, const std::string& reason);
+ virtual ~PowerSaveBlockerWin();
+
+ private:
+ class Delegate;
-class PowerSaveBlocker::Delegate
- : public base::RefCountedThreadSafe<PowerSaveBlocker::Delegate> {
+ // A second object with different lifetime than the RAII container.
jam 2013/01/11 01:24:30 why do this ref counted stuff in every implementat
hashimoto 2013/01/11 08:39:44 Introduced PowerSaveBlockerImpl to avoid code dupl
jam 2013/01/11 17:28:38 this is different than what i was wondering about.
+ scoped_refptr<Delegate> delegate_;
+
+ DISALLOW_COPY_AND_ASSIGN(PowerSaveBlockerWin);
+};
+
+class PowerSaveBlockerWin::Delegate
+ : public base::RefCountedThreadSafe<PowerSaveBlockerWin::Delegate> {
public:
Delegate(PowerSaveBlockerType type, const std::string& reason)
: type_(type), reason_(reason) {}
@@ -131,7 +143,7 @@ class PowerSaveBlocker::Delegate
DISALLOW_COPY_AND_ASSIGN(Delegate);
};
-void PowerSaveBlocker::Delegate::ApplyBlock() {
+void PowerSaveBlockerWin::Delegate::ApplyBlock() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (base::win::GetVersion() < base::win::VERSION_WIN7)
return ApplySimpleBlock(type_, 1);
@@ -139,7 +151,7 @@ void PowerSaveBlocker::Delegate::ApplyBlock() {
handle_.Set(CreatePowerRequest(RequestType(), reason_));
}
-void PowerSaveBlocker::Delegate::RemoveBlock() {
+void PowerSaveBlockerWin::Delegate::RemoveBlock() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (base::win::GetVersion() < base::win::VERSION_WIN7)
return ApplySimpleBlock(type_, -1);
@@ -147,7 +159,7 @@ void PowerSaveBlocker::Delegate::RemoveBlock() {
DeletePowerRequest(RequestType(), handle_.Take());
}
-POWER_REQUEST_TYPE PowerSaveBlocker::Delegate::RequestType() {
+POWER_REQUEST_TYPE PowerSaveBlockerWin::Delegate::RequestType() {
if (type_ == kPowerSaveBlockPreventDisplaySleep)
return PowerRequestDisplayRequired;
@@ -157,18 +169,27 @@ POWER_REQUEST_TYPE PowerSaveBlocker::Delegate::RequestType() {
return PowerRequestExecutionRequired;
}
-PowerSaveBlocker::PowerSaveBlocker(PowerSaveBlockerType type,
- const std::string& reason)
+PowerSaveBlockerWin::PowerSaveBlockerWin(PowerSaveBlockerType type,
+ const std::string& reason)
: delegate_(new Delegate(type, reason)) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE,
base::Bind(&Delegate::ApplyBlock, delegate_));
}
-PowerSaveBlocker::~PowerSaveBlocker() {
+PowerSaveBlockerWin::~PowerSaveBlockerWin() {
BrowserThread::PostTask(
BrowserThread::UI, 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 PowerSaveBlockerWin(type, reason));
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698