Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(513)

Side by Side Diff: content/browser/devtools/devtools_tracing_handler.cc

Issue 12096115: Update tracing framework to optionally use a ringbuffer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/devtools/devtools_tracing_handler.h" 5 #include "content/browser/devtools/devtools_tracing_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/location.h" 10 #include "base/location.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "content/browser/devtools/devtools_http_handler_impl.h" 12 #include "content/browser/devtools/devtools_http_handler_impl.h"
13 #include "content/public/browser/trace_controller.h" 13 #include "content/public/browser/trace_controller.h"
14 #include "content/public/browser/trace_subscriber.h" 14 #include "content/public/browser/trace_subscriber.h"
15 15
16 namespace content { 16 namespace content {
17 17
18 namespace { 18 namespace {
19 19
20 const char kTracingDomain[] = "Tracing"; 20 const char kTracingDomain[] = "Tracing";
21 21
22 const char kTracingStartCommand[] = "Tracing.start"; 22 const char kTracingStartCommand[] = "Tracing.start";
23 const char kTracingEndCommand[] = "Tracing.end"; 23 const char kTracingEndCommand[] = "Tracing.end";
24 24
25 const char kTracingCompleteNotification[] = "Tracing.tracingComplete"; 25 const char kTracingCompleteNotification[] = "Tracing.tracingComplete";
26 const char kTracingDataCollected[] = "Tracing.dataCollected"; 26 const char kTracingDataCollected[] = "Tracing.dataCollected";
27 27
28 const char kCategoriesParam[] = "categories"; 28 const char kCategoriesParam[] = "categories";
29 const char kContinuousTracing[] = "continuous_tracing";
29 30
30 } // namespace 31 } // namespace
31 32
32 DevToolsTracingHandler::DevToolsTracingHandler() 33 DevToolsTracingHandler::DevToolsTracingHandler()
33 : DevToolsBrowserTarget::DomainHandler(kTracingDomain), 34 : DevToolsBrowserTarget::DomainHandler(kTracingDomain),
34 is_running_(false) { 35 is_running_(false) {
35 RegisterCommandHandler(kTracingStartCommand, 36 RegisterCommandHandler(kTracingStartCommand,
36 base::Bind(&DevToolsTracingHandler::OnStart, 37 base::Bind(&DevToolsTracingHandler::OnStart,
37 base::Unretained(this))); 38 base::Unretained(this)));
38 RegisterCommandHandler(kTracingEndCommand, 39 RegisterCommandHandler(kTracingEndCommand,
(...skipping 14 matching lines...) Expand all
53 if (is_running_) { 54 if (is_running_) {
54 base::DictionaryValue* params = new base::DictionaryValue(); 55 base::DictionaryValue* params = new base::DictionaryValue();
55 params->SetString("value", trace_fragment->data()); 56 params->SetString("value", trace_fragment->data());
56 SendNotification(kTracingDataCollected, params); 57 SendNotification(kTracingDataCollected, params);
57 } 58 }
58 } 59 }
59 60
60 scoped_ptr<DevToolsProtocol::Response> 61 scoped_ptr<DevToolsProtocol::Response>
61 DevToolsTracingHandler::OnStart(DevToolsProtocol::Command* command) { 62 DevToolsTracingHandler::OnStart(DevToolsProtocol::Command* command) {
62 std::string categories; 63 std::string categories;
64 bool continuous_tracing = false;
63 base::DictionaryValue* params = command->params(); 65 base::DictionaryValue* params = command->params();
64 if (params && params->HasKey(kCategoriesParam)) 66 if (params && params->HasKey(kCategoriesParam))
65 params->GetString(kCategoriesParam, &categories); 67 params->GetString(kCategoriesParam, &categories);
66 TraceController::GetInstance()->BeginTracing(this, categories); 68 if (params && params->HasKey(kContinuousTracing))
69 params->GetBoolean(kContinuousTracing, &continuous_tracing);
70 TraceController::GetInstance()->BeginTracing(this, categories,
71 continuous_tracing);
67 is_running_ = true; 72 is_running_ = true;
68 return command->SuccessResponse(NULL); 73 return command->SuccessResponse(NULL);
69 } 74 }
70 75
71 76
72 scoped_ptr<DevToolsProtocol::Response> 77 scoped_ptr<DevToolsProtocol::Response>
73 DevToolsTracingHandler::OnEnd(DevToolsProtocol::Command* command) { 78 DevToolsTracingHandler::OnEnd(DevToolsProtocol::Command* command) {
74 TraceController::GetInstance()->EndTracingAsync(this); 79 TraceController::GetInstance()->EndTracingAsync(this);
75 return command->SuccessResponse(NULL); 80 return command->SuccessResponse(NULL);
76 } 81 }
77 82
78 } // namespace content 83 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698