Index: content/browser/devtools/render_frame_devtools_agent_host.cc |
diff --git a/content/browser/devtools/render_frame_devtools_agent_host.cc b/content/browser/devtools/render_frame_devtools_agent_host.cc |
index 951122cd18f3f2a4465aaf8a3bc3275517b5148a..6b52231533924e35fcee0467ac55463c972606ca 100644 |
--- a/content/browser/devtools/render_frame_devtools_agent_host.cc |
+++ b/content/browser/devtools/render_frame_devtools_agent_host.cc |
@@ -50,7 +50,7 @@ |
#if defined(OS_ANDROID) |
#include "content/public/browser/render_widget_host_view.h" |
-#include "device/power_save_blocker/power_save_blocker.h" |
+#include "device/wake_lock/public/interfaces/wake_lock_context.mojom.h" |
#endif |
namespace content { |
@@ -603,12 +603,14 @@ void RenderFrameDevToolsAgentHost::OnClientAttached() { |
return; |
frame_trace_recorder_.reset(new DevToolsFrameTraceRecorder()); |
- CreatePowerSaveBlocker(); |
+#if defined(OS_ANDROID) |
+ GetWakeLockService()->RequestWakeLock(); |
+#endif |
} |
void RenderFrameDevToolsAgentHost::OnClientDetached() { |
#if defined(OS_ANDROID) |
- power_save_blocker_.reset(); |
+ GetWakeLockService()->CancelWakeLock(); |
#endif |
frame_trace_recorder_.reset(); |
in_navigation_protocol_message_buffer_.clear(); |
@@ -823,19 +825,25 @@ bool RenderFrameDevToolsAgentHost::CheckConsistency() { |
handlers_frame_host_ == manager->pending_frame_host(); |
} |
-void RenderFrameDevToolsAgentHost::CreatePowerSaveBlocker() { |
#if defined(OS_ANDROID) |
- power_save_blocker_.reset(new device::PowerSaveBlocker( |
- device::PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, |
- device::PowerSaveBlocker::kReasonOther, "DevTools", |
- BrowserThread::GetTaskRunnerForThread(BrowserThread::UI), |
- BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE))); |
- if (web_contents()->GetNativeView()) { |
- power_save_blocker_->InitDisplaySleepBlocker( |
- web_contents()->GetNativeView()); |
+device::mojom::WakeLockService* |
+RenderFrameDevToolsAgentHost::GetWakeLockService() { |
dgozman
2017/05/18 21:58:45
I'm not very good at mojo yet, so let me ask a nai
ke.he
2017/05/18 23:58:47
The design of WakeLock servicification is necessar
|
+ // Here is a lazy binding, and will not reconnect after connection error. |
+ if (!wake_lock_) { |
+ device::mojom::WakeLockServiceRequest request = |
+ mojo::MakeRequest(&wake_lock_); |
dgozman
2017/05/18 21:58:45
Inline this into line 841?
ke.he
2017/05/18 23:58:47
We don't inline this on purpose, so the |wake_lock
dgozman
2017/05/19 19:15:45
Do you mean that wake_lock_ will be functional (al
ke.he
2017/05/20 01:00:34
Yes, mojo::MakeRequest() make it be functional, bu
|
+ device::mojom::WakeLockContext* wake_lock_context = |
+ web_contents()->GetWakeLockContext(); |
+ if (wake_lock_context) { |
+ wake_lock_context->GetWakeLock( |
+ device::mojom::WakeLockType::PreventAppSuspension, |
ke.he
2017/05/26 03:11:12
Oh! The original PowerSaveBlocker type is "kPowerS
|
+ device::mojom::WakeLockReason::ReasonOther, "DevTools", |
+ std::move(request)); |
+ } |
} |
-#endif |
+ return wake_lock_.get(); |
} |
+#endif |
void RenderFrameDevToolsAgentHost::RenderProcessGone( |
base::TerminationStatus status) { |
@@ -905,12 +913,14 @@ void RenderFrameDevToolsAgentHost::DidDetachInterstitialPage() { |
} |
void RenderFrameDevToolsAgentHost::WasShown() { |
- CreatePowerSaveBlocker(); |
+#if defined(OS_ANDROID) |
+ GetWakeLockService()->RequestWakeLock(); |
+#endif |
} |
void RenderFrameDevToolsAgentHost::WasHidden() { |
#if defined(OS_ANDROID) |
- power_save_blocker_.reset(); |
+ GetWakeLockService()->CancelWakeLock(); |
dgozman
2017/05/18 21:58:45
I think we should destroy the service at this poin
ke.he
2017/05/18 23:58:47
we don't need to destroy the service here or in de
dgozman
2017/05/19 19:15:44
Shouldn't we do it from the performance standpoint
ke.he
2017/05/20 01:00:34
In GetWakeLockService(), the |wake_lock_| is initi
|
#endif |
} |