Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Unified Diff: device/wake_lock/wake_lock_service_context.cc

Issue 2843353003: Move ownership of PowerSaveBlocker from WakeLockServiceContext to WakeLockServiceImpl (Closed)
Patch Set: code rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698