Index: content/browser/devtools/devtools_power_handler.cc |
diff --git a/content/browser/devtools/devtools_power_handler.cc b/content/browser/devtools/devtools_power_handler.cc |
index 43772b47607e2dddd54bd4cab003f3f8f5716e3d..1eb4edd0a8bec19d6ef2fb90cf5746158861ffaa 100644 |
--- a/content/browser/devtools/devtools_power_handler.cc |
+++ b/content/browser/devtools/devtools_power_handler.cc |
@@ -8,10 +8,16 @@ |
#include "base/values.h" |
#include "content/browser/devtools/devtools_protocol_constants.h" |
#include "content/browser/power_profiler/power_profiler_service.h" |
+#include "content/public/browser/devtools_manager.h" |
namespace content { |
-DevToolsPowerHandler::DevToolsPowerHandler() { |
+DevToolsPowerHandler::DevToolsPowerHandler( |
+ DevToolsAgentHost* devtools_agent_host) |
+ : devtools_agent_host_(devtools_agent_host), |
+ devtools_callback_( |
+ base::Bind(&DevToolsPowerHandler::OnDevToolsStateChanged, |
+ base::Unretained(this))) { |
RegisterCommandHandler(devtools::Power::start::kName, |
base::Bind(&DevToolsPowerHandler::OnStart, |
base::Unretained(this))); |
@@ -21,10 +27,14 @@ DevToolsPowerHandler::DevToolsPowerHandler() { |
RegisterCommandHandler(devtools::Power::canProfilePower::kName, |
base::Bind(&DevToolsPowerHandler::OnCanProfilePower, |
base::Unretained(this))); |
+ content::DevToolsManager::GetInstance()->AddAgentStateCallback( |
+ devtools_callback_); |
} |
DevToolsPowerHandler::~DevToolsPowerHandler() { |
PowerProfilerService::GetInstance()->RemoveObserver(this); |
+ content::DevToolsManager::GetInstance()->RemoveAgentStateCallback( |
+ devtools_callback_); |
} |
void DevToolsPowerHandler::OnPowerEvent(const PowerEventVector& events) { |
@@ -80,4 +90,12 @@ DevToolsPowerHandler::OnCanProfilePower( |
return command->SuccessResponse(result); |
} |
+void DevToolsPowerHandler::OnDevToolsStateChanged( |
+ content::DevToolsAgentHost* agent_host, |
+ bool attached) { |
+ if (!attached && agent_host == devtools_agent_host_) { |
+ PowerProfilerService::GetInstance()->RemoveObserver(this); |
+ } |
+} |
+ |
} // namespace content |