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

Unified Diff: content/browser/devtools/devtools_tracing_handler.cc

Issue 99543002: Make it possible to configure synthetic delays through Devtools (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 side-by-side diff with in-line comments
Download patch
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 0657b8e48d2a9c83cc2d171630eddcefc77913b4..6d44bfeeb9c450d67d4502f7ecb862ab95925a66 100644
--- a/content/browser/devtools/devtools_tracing_handler.cc
+++ b/content/browser/devtools/devtools_tracing_handler.cc
@@ -14,6 +14,8 @@
#include "content/browser/devtools/devtools_protocol_constants.h"
#include "content/public/browser/trace_controller.h"
#include "content/public/browser/trace_subscriber.h"
+#include "content/public/browser/tracing_controller.h"
+#include "content/public/browser/tracing_synthetic_delay_configuration.h"
namespace content {
@@ -33,6 +35,10 @@ DevToolsTracingHandler::DevToolsTracingHandler()
RegisterCommandHandler(devtools::Tracing::end::kName,
base::Bind(&DevToolsTracingHandler::OnEnd,
base::Unretained(this)));
+ RegisterCommandHandler(devtools::Tracing::configureSyntheticDelays::kName,
+ base::Bind(&DevToolsTracingHandler::
+ OnConfigureSyntheticDelays,
+ base::Unretained(this)));
}
DevToolsTracingHandler::~DevToolsTracingHandler() {
@@ -110,4 +116,62 @@ DevToolsTracingHandler::OnEnd(
return command->SuccessResponse(NULL);
}
+scoped_refptr<DevToolsProtocol::Response>
+DevToolsTracingHandler::OnConfigureSyntheticDelays(
+ scoped_refptr<DevToolsProtocol::Command> command) {
+ std::string categories;
+ base::DictionaryValue* params = command->params();
+ const base::DictionaryValue* delay_settings;
+ if (params) {
+ params->GetDictionary(devtools::Tracing::configureSyntheticDelays::kDelays,
+ &delay_settings);
+ }
+
+ if (!delay_settings) {
+ return command->InvalidParamResponse(
+ devtools::Tracing::configureSyntheticDelays::kDelays);
+ }
+
+ std::vector<TracingSyntheticDelayConfiguration> delays;
+ base::DictionaryValue::Iterator it(*delay_settings);
+ while (!it.IsAtEnd()) {
+ TracingSyntheticDelayConfiguration delay;
+ const base::DictionaryValue* properties;
+ if (it.value().GetAsDictionary(&properties)) {
+ double target_duration;
+ if (properties->GetDouble("target_duration", &target_duration)) {
+ delay.target_duration = base::TimeDelta::FromMicroseconds(
+ target_duration * 1e6);
+ }
+ std::string mode;
+ if (properties->GetString("mode", &mode)) {
+ if (mode == "static") {
+ delay.mode = base::debug::TraceEventSyntheticDelay::STATIC;
+ } else if (mode == "oneshot") {
+ delay.mode = base::debug::TraceEventSyntheticDelay::ONE_SHOT;
+ } else if (mode == "alternating") {
+ delay.mode = base::debug::TraceEventSyntheticDelay::ALTERNATING;
+ } else {
+ return command->InvalidParamResponse(
+ devtools::Tracing::configureSyntheticDelays::kDelays);
+ }
+ }
+ }
+ delay.name = it.key();
+ delays.push_back(delay);
+ it.Advance();
+ }
+
+ TracingController::GetInstance()->ConfigureSyntheticDelays(
+ delays,
+ base::Bind(&DevToolsTracingHandler::OnConfigureSyntheticDelaysComplete,
+ base::Unretained(this)));
+ return command->SuccessResponse(NULL);
+}
+
+void DevToolsTracingHandler::OnConfigureSyntheticDelaysComplete() {
+ SendNotification(devtools::Tracing::configureSyntheticDelaysComplete::kName,
+ NULL);
+}
+
} // namespace content
« no previous file with comments | « content/browser/devtools/devtools_tracing_handler.h ('k') | tools/telemetry/telemetry/core/backends/browser_backend.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698