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..4652b33158452b098cf16c7020e37e1bb672f10f 100644 |
--- a/device/wake_lock/wake_lock_service_context.cc |
+++ b/device/wake_lock/wake_lock_service_context.cc |
@@ -6,103 +6,30 @@ |
#include <utility> |
-#include "base/bind.h" |
-#include "base/memory/ptr_util.h" |
-#include "base/threading/thread_task_runner_handle.h" |
-#include "build/build_config.h" |
#include "device/power_save_blocker/power_save_blocker.h" |
+#include "device/wake_lock/wake_lock_service_impl.h" |
namespace device { |
WakeLockServiceContext::WakeLockServiceContext( |
- mojom::WakeLockContextRequest request, |
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)), |
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( |
- &WakeLockServiceContext::OnContextBindingError, base::Unretained(this))); |
- wake_lock_bindings_.set_connection_error_handler( |
- base::Bind(&WakeLockServiceContext::DestroyIfNoLongerNeeded, |
- base::Unretained(this))); |
-} |
+ native_view_getter_(native_view_getter) {} |
WakeLockServiceContext::~WakeLockServiceContext() {} |
void WakeLockServiceContext::GetWakeLock( |
- mojo::InterfaceRequest<mojom::WakeLockService> request) { |
- wake_lock_bindings_.AddBinding(base::MakeUnique<WakeLockServiceImpl>(this), |
- std::move(request)); |
-} |
- |
-void WakeLockServiceContext::RequestWakeLock() { |
- DCHECK(main_task_runner_->RunsTasksOnCurrentThread()); |
- num_lock_requests_++; |
- UpdateWakeLock(); |
-} |
- |
-void WakeLockServiceContext::CancelWakeLock() { |
- DCHECK(main_task_runner_->RunsTasksOnCurrentThread()); |
- num_lock_requests_--; |
- UpdateWakeLock(); |
-} |
- |
-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(); |
- } |
-} |
- |
-void WakeLockServiceContext::OnContextBindingError() { |
- context_binding_encountered_error_ = true; |
- DestroyIfNoLongerNeeded(); |
-} |
- |
-void WakeLockServiceContext::DestroyIfNoLongerNeeded() { |
- if (context_binding_encountered_error_ && wake_lock_bindings_.empty()) { |
- // Delete this instance once there are no more live connections to it. |
- // However, ensure that this instance stays alive throughout the destructor |
- // of a WakeLockServiceImpl instance that might be triggering this callback. |
- base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this); |
- } |
+ mojom::WakeLockServiceRequest request) { |
+ // WakeLockServiceImpl owns itself. |
+ new WakeLockServiceImpl(std::move(request), |
+ device::PowerSaveBlocker::PowerSaveBlockerType:: |
+ kPowerSaveBlockPreventDisplaySleep, |
+ device::PowerSaveBlocker::Reason::kReasonOther, |
+ "Wake Lock API", context_id_, native_view_getter_, |
+ file_task_runner_); |
} |
} // namespace device |