Index: content/browser/devtools/devtools_tracing_handler.cc |
diff --git a/content/browser/devtools/devtools_tracing_handler.cc b/content/browser/devtools/devtools_tracing_handler.cc |
index 19ec9769d48f65c9b2ad34e463298866743dd4e5..7d308642212bf5c74d572babc1c029f180834af7 100644 |
--- a/content/browser/devtools/devtools_tracing_handler.cc |
+++ b/content/browser/devtools/devtools_tracing_handler.cc |
@@ -55,6 +55,9 @@ DevToolsTracingHandler::DevToolsTracingHandler( |
RegisterCommandHandler(devtools::Tracing::end::kName, |
base::Bind(&DevToolsTracingHandler::OnEnd, |
base::Unretained(this))); |
+ RegisterCommandHandler(devtools::Tracing::getCategories::kName, |
+ base::Bind(&DevToolsTracingHandler::OnGetCategories, |
+ base::Unretained(this))); |
} |
DevToolsTracingHandler::~DevToolsTracingHandler() { |
@@ -217,4 +220,29 @@ void DevToolsTracingHandler::OnClientDetached() { |
DisableRecording(); |
} |
+scoped_refptr<DevToolsProtocol::Response> |
+DevToolsTracingHandler::OnGetCategories( |
+ scoped_refptr<DevToolsProtocol::Command> command) { |
+ TracingController::GetInstance()->GetCategories( |
+ base::Bind(&DevToolsTracingHandler::OnCategoriesReceived, |
+ weak_factory_.GetWeakPtr(), |
+ command)); |
+ return command->AsyncResponsePromise(); |
+} |
+ |
+void DevToolsTracingHandler::OnCategoriesReceived( |
+ scoped_refptr<DevToolsProtocol::Command> command, |
+ const std::set<std::string>& category_set) { |
+ base::DictionaryValue* response = new base::DictionaryValue; |
+ base::ListValue* category_list = new base::ListValue; |
+ for (std::set<std::string>::const_iterator it = category_set.begin(); |
+ it != category_set.end(); ++it) { |
+ category_list->AppendString(*it); |
+ } |
+ |
+ response->Set(devtools::Tracing::getCategories::kResponseCategories, |
+ category_list); |
+ SendAsyncResponse(command->SuccessResponse(response)); |
+} |
+ |
} // namespace content |