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

Unified Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 2893773003: Use wakelock mojo interface instead of PowerSaveBlocker in renderer_host. (Closed)
Patch Set: Use wakelock mojo interface instead of PowerSaveBlocker in renderer_host. 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
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/render_widget_host_impl.cc
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index cf67ed51b1907f4beb539e2d97585c5ea6c93e77..e496db92652c71b713fb9daed83fdc22b1022b5a 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -105,7 +105,10 @@
#endif
#if defined(OS_MACOSX)
-#include "device/power_save_blocker/power_save_blocker.h"
+#include "content/public/common/service_manager_connection.h"
+#include "device/wake_lock/public/interfaces/wake_lock_provider.mojom.h"
+#include "services/device/public/interfaces/constants.mojom.h"
+#include "services/service_manager/public/cpp/connector.h"
#include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
#endif
@@ -1515,14 +1518,8 @@ void RenderWidgetHostImpl::GetSnapshotFromBrowser(
// MacOS version of underlying GrabViewSnapshot() blocks while
// display/GPU are in a power-saving mode, so make sure display
// does not go to sleep for the duration of reading a snapshot.
- if (pending_browser_snapshots_.empty()) {
- DCHECK(!power_save_blocker_);
- power_save_blocker_.reset(new device::PowerSaveBlocker(
- device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep,
- device::PowerSaveBlocker::kReasonOther, "GetSnapshot",
- BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
- BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE)));
- }
+ if (pending_browser_snapshots_.empty())
+ GetWakeLockService()->RequestWakeLock();
#endif
pending_browser_snapshots_.insert(std::make_pair(id, callback));
ui::LatencyInfo latency_info;
@@ -2479,7 +2476,7 @@ void RenderWidgetHostImpl::OnSnapshotReceived(int snapshot_id,
}
#if defined(OS_MACOSX)
if (pending_browser_snapshots_.empty())
- power_save_blocker_.reset();
+ GetWakeLockService()->CancelWakeLock();
#endif
}
@@ -2649,4 +2646,29 @@ void RenderWidgetHostImpl::ProcessSwapMessages(
}
}
+#if defined(OS_MACOSX)
+device::mojom::WakeLockService* RenderWidgetHostImpl::GetWakeLockService() {
+ // Here is a lazy binding, and will not reconnect after connection error.
+ if (!wake_lock_) {
+ device::mojom::WakeLockServiceRequest request =
+ mojo::MakeRequest(&wake_lock_);
+ // In some testing contexts, the service manager connection isn't
+ // initialized.
+ if (ServiceManagerConnection::GetForProcess()) {
+ service_manager::Connector* connector =
+ ServiceManagerConnection::GetForProcess()->GetConnector();
+ DCHECK(connector);
+ device::mojom::WakeLockProviderPtr wake_lock_provider;
+ connector->BindInterface(device::mojom::kServiceName,
+ mojo::MakeRequest(&wake_lock_provider));
+ wake_lock_provider->GetWakeLockWithoutContext(
+ device::mojom::WakeLockType::PreventDisplaySleep,
+ device::mojom::WakeLockReason::ReasonOther, "GetSnapshot",
+ std::move(request));
+ }
+ }
+ return wake_lock_.get();
+}
+#endif
+
} // namespace content
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698