| 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_));
|
| }
|
|
|