Index: content/browser/power_save_blocker_chromeos.cc |
diff --git a/content/browser/power_save_blocker_chromeos.cc b/content/browser/power_save_blocker_chromeos.cc |
index 4129e50ddefb9980ffe353c00f469a1cf26f2b35..e19dfbcf6dff51cae1231eed3a7b9d488b2478df 100644 |
--- a/content/browser/power_save_blocker_chromeos.cc |
+++ b/content/browser/power_save_blocker_chromeos.cc |
@@ -4,12 +4,15 @@ |
#include "content/browser/power_save_blocker_impl.h" |
+#include <string> |
+ |
#include "base/basictypes.h" |
#include "base/bind.h" |
-#include "base/chromeos/chromeos_version.h" |
+#include "base/location.h" |
+#include "base/logging.h" |
#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "chromeos/power/power_state_override.h" |
+#include "chromeos/dbus/dbus_thread_manager.h" |
+#include "chromeos/dbus/power_policy_controller.h" |
#include "content/public/browser/browser_thread.h" |
namespace content { |
@@ -17,36 +20,40 @@ namespace content { |
class PowerSaveBlockerImpl::Delegate |
: public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate> { |
public: |
- Delegate(PowerSaveBlockerType type) : type_(type) {} |
+ Delegate(PowerSaveBlockerType type, const std::string& reason) |
+ : type_(type), |
+ reason_(reason), |
+ block_id_(0) {} |
- // Creates a PowerStateOverride object to override the default power |
- // management behavior. |
void ApplyBlock() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- |
- // Do nothing when not running on real CrOS devices. |
- if (!base::chromeos::IsRunningOnChromeOS()) |
+ if (!chromeos::DBusThreadManager::IsInitialized()) { |
+ LOG(WARNING) << "DBusThreadManager not initialized"; |
return; |
+ } |
- chromeos::PowerStateOverride::Mode mode = |
- chromeos::PowerStateOverride::BLOCK_SYSTEM_SUSPEND; |
+ chromeos::PowerPolicyController* controller = |
+ chromeos::DBusThreadManager::Get()->GetPowerPolicyController(); |
switch (type_) { |
case kPowerSaveBlockPreventAppSuspension: |
- mode = chromeos::PowerStateOverride::BLOCK_SYSTEM_SUSPEND; |
+ block_id_ = controller->AddSuspendBlock(reason_); |
break; |
case kPowerSaveBlockPreventDisplaySleep: |
- mode = chromeos::PowerStateOverride::BLOCK_DISPLAY_SLEEP; |
+ block_id_ = controller->AddScreenBlock(reason_); |
break; |
default: |
NOTREACHED() << "Unhandled block type " << type_; |
} |
- override_ = new chromeos::PowerStateOverride(mode); |
} |
- // Resets the previously-created PowerStateOverride object. |
void RemoveBlock() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- override_ = NULL; |
+ if (!chromeos::DBusThreadManager::IsInitialized()) { |
+ LOG(WARNING) << "DBusThreadManager not initialized"; |
+ return; |
+ } |
+ chromeos::DBusThreadManager::Get()->GetPowerPolicyController()-> |
+ RemoveBlock(block_id_); |
} |
private: |
@@ -54,15 +61,17 @@ class PowerSaveBlockerImpl::Delegate |
virtual ~Delegate() {} |
PowerSaveBlockerType type_; |
+ std::string reason_; |
- scoped_refptr<chromeos::PowerStateOverride> override_; |
+ // ID corresponding to the block request in PowerPolicyController. |
+ int block_id_; |
DISALLOW_COPY_AND_ASSIGN(Delegate); |
}; |
PowerSaveBlockerImpl::PowerSaveBlockerImpl(PowerSaveBlockerType type, |
const std::string& reason) |
- : delegate_(new Delegate(type)) { |
+ : delegate_(new Delegate(type, reason)) { |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
base::Bind(&Delegate::ApplyBlock, delegate_)); |
} |