Commit 685b3481 authored by yurys@chromium.org's avatar yurys@chromium.org

DevTools: handle Tracing.start in both browser and renderer

DevToolsTracingHandler is used for inspecting two different targets: browser and renderer. The former one is used by Telemetry and behavior in that case hasn't changed.

When the handler is used for inslecting renderer we do not return response from browser override for Tracing.start so that InspectorTracingAgent in the render process could handle it.
For blink counterpart, see: https://codereview.chromium.org/254613002

BUG=361045,374411
R=caseq@chromium.org, pfeldman@chromium.org

Review URL: https://codereview.chromium.org/295613002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@271368 0039d316-1c4b-4281-b951-d872f2087c98
parent a72f0b2c
......@@ -327,7 +327,7 @@ void DevToolsHttpHandlerImpl::OnWebSocketRequest(
browser_target_ = new DevToolsBrowserTarget(server_.get(), connection_id);
browser_target_->RegisterDomainHandler(
devtools::Tracing::kName,
new DevToolsTracingHandler(),
new DevToolsTracingHandler(DevToolsTracingHandler::Browser),
true /* handle on UI thread */);
browser_target_->RegisterDomainHandler(
TetheringHandler::kDomain,
......
......@@ -46,8 +46,9 @@ void ReadFile(
} // namespace
DevToolsTracingHandler::DevToolsTracingHandler()
: weak_factory_(this) {
DevToolsTracingHandler::DevToolsTracingHandler(
DevToolsTracingHandler::Target target)
: weak_factory_(this), target_(target) {
RegisterCommandHandler(devtools::Tracing::start::kName,
base::Bind(&DevToolsTracingHandler::OnStart,
base::Unretained(this)));
......@@ -168,6 +169,14 @@ DevToolsTracingHandler::OnStart(
}
}
// If inspected target is a render process Tracing.start will be handled by
// tracing agent in the renderer.
if (target_ == Renderer) {
TracingController::GetInstance()->EnableRecording(
categories, options, TracingController::EnableRecordingDoneCallback());
return NULL;
}
TracingController::GetInstance()->EnableRecording(
categories, options,
base::Bind(&DevToolsTracingHandler::OnTracingStarted,
......
......@@ -20,7 +20,8 @@ namespace content {
// infrastructure.
class DevToolsTracingHandler : public DevToolsProtocol::Handler {
public:
DevToolsTracingHandler();
enum Target { Browser, Renderer };
explicit DevToolsTracingHandler(Target target);
virtual ~DevToolsTracingHandler();
private:
......@@ -39,6 +40,7 @@ class DevToolsTracingHandler : public DevToolsProtocol::Handler {
base::WeakPtrFactory<DevToolsTracingHandler> weak_factory_;
scoped_ptr<base::Timer> buffer_usage_poll_timer_;
Target target_;
DISALLOW_COPY_AND_ASSIGN(DevToolsTracingHandler);
};
......
......@@ -160,13 +160,12 @@ bool RenderViewDevToolsAgentHost::DispatchIPCMessage(
return agent_host && agent_host->DispatchIPCMessage(message);
}
RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(
RenderViewHost* rvh)
RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderViewHost* rvh)
: render_view_host_(NULL),
overrides_handler_(new RendererOverridesHandler(this)),
tracing_handler_(new DevToolsTracingHandler()),
power_handler_(new DevToolsPowerHandler())
{
tracing_handler_(
new DevToolsTracingHandler(DevToolsTracingHandler::Renderer)),
power_handler_(new DevToolsPowerHandler()) {
SetRenderViewHost(rvh);
DevToolsProtocol::Notifier notifier(base::Bind(
&RenderViewDevToolsAgentHost::OnDispatchOnInspectorFrontend,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment