| 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 ff78f1184f7cfef75b653b1b6704ba222b3e0d3d..e9650a5cc1f634eb827387d6828e81444e0c5fcb 100644
|
| --- a/content/browser/power_save_blocker_win.cc
|
| +++ b/content/browser/power_save_blocker_win.cc
|
| @@ -2,16 +2,15 @@
|
| // 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_impl.h"
|
| -
|
| #include <windows.h>
|
|
|
| +#include "base/bind.h"
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/win/scoped_handle.h"
|
| #include "base/win/windows_version.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| +#include "content/browser/power_save_blocker_impl.h"
|
|
|
| namespace content {
|
| namespace {
|
| @@ -88,8 +87,12 @@ void ApplySimpleBlock(PowerSaveBlocker::PowerSaveBlockerType type,
|
| class PowerSaveBlockerImpl::Delegate
|
| : public base::RefCountedThreadSafe<PowerSaveBlockerImpl::Delegate> {
|
| public:
|
| - Delegate(PowerSaveBlockerType type, const std::string& description)
|
| - : type_(type), description_(description) {}
|
| + Delegate(PowerSaveBlockerType type,
|
| + const std::string& description,
|
| + scoped_refptr<base::SequencedTaskRunner> ui_task_runner)
|
| + : type_(type),
|
| + description_(description),
|
| + ui_task_runner_(ui_task_runner) {}
|
|
|
| // Does the actual work to apply or remove the desired power save block.
|
| void ApplyBlock();
|
| @@ -105,12 +108,13 @@ class PowerSaveBlockerImpl::Delegate
|
| PowerSaveBlockerType type_;
|
| const std::string description_;
|
| base::win::ScopedHandle handle_;
|
| + scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(Delegate);
|
| };
|
|
|
| void PowerSaveBlockerImpl::Delegate::ApplyBlock() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| if (base::win::GetVersion() < base::win::VERSION_WIN7)
|
| return ApplySimpleBlock(type_, 1);
|
|
|
| @@ -118,7 +122,7 @@ void PowerSaveBlockerImpl::Delegate::ApplyBlock() {
|
| }
|
|
|
| void PowerSaveBlockerImpl::Delegate::RemoveBlock() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(ui_task_runner_->RunsTasksOnCurrentThread());
|
| if (base::win::GetVersion() < base::win::VERSION_WIN7)
|
| return ApplySimpleBlock(type_, -1);
|
|
|
| @@ -135,19 +139,22 @@ POWER_REQUEST_TYPE PowerSaveBlockerImpl::Delegate::RequestType() {
|
| return PowerRequestExecutionRequired;
|
| }
|
|
|
| -PowerSaveBlockerImpl::PowerSaveBlockerImpl(PowerSaveBlockerType type,
|
| - Reason reason,
|
| - const std::string& description)
|
| - : delegate_(new Delegate(type, description)) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&Delegate::ApplyBlock, delegate_));
|
| +PowerSaveBlockerImpl::PowerSaveBlockerImpl(
|
| + PowerSaveBlockerType type,
|
| + Reason reason,
|
| + const std::string& description,
|
| + scoped_refptr<base::SequencedTaskRunner> ui_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> blocking_task_runner)
|
| + : delegate_(new Delegate(type, description, ui_task_runner)),
|
| + ui_task_runner_(ui_task_runner),
|
| + blocking_task_runner_(blocking_task_runner) {
|
| + ui_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&Delegate::ApplyBlock, delegate_));
|
| }
|
|
|
| PowerSaveBlockerImpl::~PowerSaveBlockerImpl() {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&Delegate::RemoveBlock, delegate_));
|
| + ui_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&Delegate::RemoveBlock, delegate_));
|
| }
|
|
|
| } // namespace content
|
|
|