Commit 783fdc02 authored by vivek.vg@samsung.com's avatar vivek.vg@samsung.com

[DevTools] Tracing handler keeps running even after devtools frontend has been closed.

This is happening as the tracing handler is not listening to the frontend close events.
When the front-end is closed, the tracing handler is unaware of it and it keeps collecting the data.
With the active frontend close, the tracing handler should invoke DisableRecording to stop processing further.

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@278681 0039d316-1c4b-4281-b951-d872f2087c98
parent 53add353
...@@ -200,12 +200,21 @@ void DevToolsTracingHandler::OnBufferUsage(float usage) { ...@@ -200,12 +200,21 @@ void DevToolsTracingHandler::OnBufferUsage(float usage) {
scoped_refptr<DevToolsProtocol::Response> scoped_refptr<DevToolsProtocol::Response>
DevToolsTracingHandler::OnEnd( DevToolsTracingHandler::OnEnd(
scoped_refptr<DevToolsProtocol::Command> command) { scoped_refptr<DevToolsProtocol::Command> command) {
buffer_usage_poll_timer_.reset(); DisableRecording(
TracingController::GetInstance()->DisableRecording(
base::FilePath(),
base::Bind(&DevToolsTracingHandler::BeginReadingRecordingResult, base::Bind(&DevToolsTracingHandler::BeginReadingRecordingResult,
weak_factory_.GetWeakPtr())); weak_factory_.GetWeakPtr()));
return command->SuccessResponse(NULL); return command->SuccessResponse(NULL);
} }
void DevToolsTracingHandler::DisableRecording(
const TracingController::TracingFileResultCallback& callback) {
buffer_usage_poll_timer_.reset();
TracingController::GetInstance()->DisableRecording(base::FilePath(),
callback);
}
void DevToolsTracingHandler::OnClientDetached() {
DisableRecording();
}
} // namespace content } // namespace content
...@@ -24,6 +24,8 @@ class DevToolsTracingHandler : public DevToolsProtocol::Handler { ...@@ -24,6 +24,8 @@ class DevToolsTracingHandler : public DevToolsProtocol::Handler {
explicit DevToolsTracingHandler(Target target); explicit DevToolsTracingHandler(Target target);
virtual ~DevToolsTracingHandler(); virtual ~DevToolsTracingHandler();
void OnClientDetached();
private: private:
void BeginReadingRecordingResult(const base::FilePath& path); void BeginReadingRecordingResult(const base::FilePath& path);
void ReadRecordingResult(const scoped_refptr<base::RefCountedString>& result); void ReadRecordingResult(const scoped_refptr<base::RefCountedString>& result);
...@@ -38,6 +40,10 @@ class DevToolsTracingHandler : public DevToolsProtocol::Handler { ...@@ -38,6 +40,10 @@ class DevToolsTracingHandler : public DevToolsProtocol::Handler {
TracingController::Options TraceOptionsFromString(const std::string& options); TracingController::Options TraceOptionsFromString(const std::string& options);
void DisableRecording(
const TracingController::TracingFileResultCallback& callback =
TracingController::TracingFileResultCallback());
base::WeakPtrFactory<DevToolsTracingHandler> weak_factory_; base::WeakPtrFactory<DevToolsTracingHandler> weak_factory_;
scoped_ptr<base::Timer> buffer_usage_poll_timer_; scoped_ptr<base::Timer> buffer_usage_poll_timer_;
Target target_; Target target_;
......
...@@ -261,6 +261,7 @@ void RenderViewDevToolsAgentHost::OnClientDetached() { ...@@ -261,6 +261,7 @@ void RenderViewDevToolsAgentHost::OnClientDetached() {
power_save_blocker_.reset(); power_save_blocker_.reset();
#endif #endif
overrides_handler_->OnClientDetached(); overrides_handler_->OnClientDetached();
tracing_handler_->OnClientDetached();
ClientDetachedFromRenderer(); ClientDetachedFromRenderer();
} }
......
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