Index: device/wake_lock/wake_lock_service_context.cc |
diff --git a/device/wake_lock/wake_lock_service_context.cc b/device/wake_lock/wake_lock_service_context.cc |
index b56680f3806510ef241cc5a6ef5cbf12f0ddc495..a395edf9269ba0e06bca3891c2337ea7fcb6cf2a 100644 |
--- a/device/wake_lock/wake_lock_service_context.cc |
+++ b/device/wake_lock/wake_lock_service_context.cc |
@@ -19,13 +19,10 @@ WakeLockServiceContext::WakeLockServiceContext( |
int context_id, |
scoped_refptr<base::SingleThreadTaskRunner> file_task_runner, |
const WakeLockContextCallback& native_view_getter) |
- : main_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
- file_task_runner_(std::move(file_task_runner)), |
- num_lock_requests_(0), |
-#if defined(OS_ANDROID) |
+ : file_task_runner_(std::move(file_task_runner)), |
+ wake_lock_count_(0), |
context_id_(context_id), |
native_view_getter_(native_view_getter), |
-#endif |
context_binding_(this, std::move(request)), |
context_binding_encountered_error_(false) { |
context_binding_.set_connection_error_handler(base::Bind( |
@@ -38,57 +35,30 @@ WakeLockServiceContext::WakeLockServiceContext( |
WakeLockServiceContext::~WakeLockServiceContext() {} |
void WakeLockServiceContext::GetWakeLock( |
- mojo::InterfaceRequest<mojom::WakeLockService> request) { |
- wake_lock_bindings_.AddBinding(base::MakeUnique<WakeLockServiceImpl>(this), |
- std::move(request)); |
+ device::PowerSaveBlocker::PowerSaveBlockerType type, |
+ device::PowerSaveBlocker::Reason reason, |
+ const std::string& description, |
+ mojom::WakeLockServiceRequest request) { |
+ wake_lock_bindings_.AddBinding( |
+ base::MakeUnique<WakeLockServiceImpl>(this, type, reason, description, |
+ context_id_, native_view_getter_, |
+ file_task_runner_), |
+ std::move(request)); |
} |
-void WakeLockServiceContext::RequestWakeLock() { |
- DCHECK(main_task_runner_->RunsTasksOnCurrentThread()); |
- num_lock_requests_++; |
- UpdateWakeLock(); |
+void WakeLockServiceContext::IncreaseWakeLockCount() { |
+ DCHECK(wake_lock_count_ >= 0); |
+ ++wake_lock_count_; |
} |
-void WakeLockServiceContext::CancelWakeLock() { |
- DCHECK(main_task_runner_->RunsTasksOnCurrentThread()); |
- num_lock_requests_--; |
- UpdateWakeLock(); |
+void WakeLockServiceContext::DecreaseWakeLockCount() { |
+ DCHECK(wake_lock_count_ > 0); |
+ --wake_lock_count_; |
} |
void WakeLockServiceContext::HasWakeLockForTests( |
const HasWakeLockForTestsCallback& callback) { |
- callback.Run(!!wake_lock_); |
-} |
- |
-void WakeLockServiceContext::CreateWakeLock() { |
- DCHECK(!wake_lock_); |
- wake_lock_.reset(new device::PowerSaveBlocker( |
- device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, |
- device::PowerSaveBlocker::kReasonOther, "Wake Lock API", |
- main_task_runner_, file_task_runner_)); |
- |
-#if defined(OS_ANDROID) |
- gfx::NativeView native_view = native_view_getter_.Run(context_id_); |
- if (native_view) { |
- wake_lock_.get()->InitDisplaySleepBlocker(native_view); |
- } |
-#endif |
-} |
- |
-void WakeLockServiceContext::RemoveWakeLock() { |
- DCHECK(wake_lock_); |
- wake_lock_.reset(); |
-} |
- |
-void WakeLockServiceContext::UpdateWakeLock() { |
- DCHECK(num_lock_requests_ >= 0); |
- if (num_lock_requests_) { |
- if (!wake_lock_) |
- CreateWakeLock(); |
- } else { |
- if (wake_lock_) |
- RemoveWakeLock(); |
- } |
+ callback.Run(!!wake_lock_count_); |
} |
void WakeLockServiceContext::OnContextBindingError() { |