| Index: content/browser/devtools/devtools_frontend_host.cc
|
| diff --git a/content/browser/devtools/devtools_frontend_host.cc b/content/browser/devtools/devtools_frontend_host.cc
|
| index bfa623a140ea327a4f9ae13ff57bf31dd0d0b8f6..ca272efbcbf042513e73f9f04c177a2a8f80659f 100644
|
| --- a/content/browser/devtools/devtools_frontend_host.cc
|
| +++ b/content/browser/devtools/devtools_frontend_host.cc
|
| @@ -4,10 +4,14 @@
|
|
|
| #include "content/browser/devtools/devtools_frontend_host.h"
|
|
|
| +#include "base/json/json_writer.h"
|
| +#include "base/memory/weak_ptr.h"
|
| #include "content/browser/devtools/devtools_manager_impl.h"
|
| +#include "content/browser/power_profiler/power_profiler_service.h"
|
| #include "content/browser/renderer_host/render_view_host_impl.h"
|
| #include "content/browser/web_contents/web_contents_impl.h"
|
| #include "content/common/devtools_messages.h"
|
| +#include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/devtools_client_host.h"
|
| #include "content/public/browser/devtools_frontend_host_delegate.h"
|
|
|
| @@ -32,10 +36,15 @@ DevToolsFrontendHost::DevToolsFrontendHost(
|
| WebContentsImpl* web_contents,
|
| DevToolsFrontendHostDelegate* delegate)
|
| : WebContentsObserver(web_contents),
|
| - delegate_(delegate) {
|
| + delegate_(delegate),
|
| + weak_factory_(this),
|
| + power_profiler_host_(new DevToolsPowerProfilerHost(
|
| + weak_factory_.GetWeakPtr())) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| }
|
|
|
| DevToolsFrontendHost::~DevToolsFrontendHost() {
|
| + power_profiler_host_->UnRegister();
|
| DevToolsManager::GetInstance()->ClientHostClosing(this);
|
| }
|
|
|
| @@ -65,6 +74,12 @@ bool DevToolsFrontendHost::OnMessageReceived(
|
| OnDispatchOnInspectorBackend)
|
| IPC_MESSAGE_HANDLER(DevToolsHostMsg_DispatchOnEmbedder,
|
| OnDispatchOnEmbedder)
|
| + IPC_MESSAGE_HANDLER(DevToolsHostMsg_PowerProfileSupported,
|
| + OnPowerProfileStatus)
|
| + IPC_MESSAGE_HANDLER(DevToolsHostMsg_StartPowerProfile, OnStartProfile)
|
| + IPC_MESSAGE_HANDLER(DevToolsHostMsg_StopPowerProfile, OnStopProfile)
|
| + IPC_MESSAGE_HANDLER(DevToolsHostMsg_SetPowerProfileResolution,
|
| + OnSetResolution)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| return handled;
|
| @@ -93,4 +108,34 @@ void DevToolsFrontendHost::OnDispatchOnEmbedder(
|
| delegate_->DispatchOnEmbedder(message);
|
| }
|
|
|
| +void DevToolsFrontendHost::OnPowerProfileStatus() {
|
| + bool is_supported = true;
|
| + if (!PowerProfilerService::Get() || PowerProfilerService::UNINITIALIZED ==
|
| + PowerProfilerService::Get()->status())
|
| + is_supported = false;
|
| + std::string json_string;
|
| + base::DictionaryValue message_object;
|
| + base::DictionaryValue* params = new base::DictionaryValue();
|
| + params->Set("isSupported", base::Value::CreateBooleanValue(is_supported));
|
| + message_object.Set("params", params);
|
| + message_object.SetString("method", "Power.powerProfileSupported");
|
| + base::JSONWriter::Write(&message_object, &json_string);
|
| + DispatchOnInspectorFrontend(json_string);
|
| +}
|
| +
|
| +void DevToolsFrontendHost::OnStartProfile() {
|
| + power_profiler_host_->Register();
|
| +}
|
| +
|
| +void DevToolsFrontendHost::OnStopProfile() {
|
| + power_profiler_host_->UnRegister();
|
| +}
|
| +
|
| +void DevToolsFrontendHost::OnSetResolution(unsigned resolution) {
|
| + assert (resolution >= 0 &&
|
| + resolution < static_cast<unsigned>(PowerProfilerHost::TYPE_COUNT));
|
| + power_profiler_host_->SetResolution(
|
| + static_cast<PowerProfilerHost::Resolution>(resolution));
|
| +}
|
| +
|
| } // namespace content
|
|
|