summaryrefslogtreecommitdiffstats
path: root/content/browser/tracing/tracing_ui.cc
diff options
context:
space:
mode:
authorharaken@chromium.org <haraken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-16 16:12:56 +0000
committerharaken@chromium.org <haraken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-16 16:12:56 +0000
commit5186ccb8c67e321f34bb82cedfed1920832acfd2 (patch)
treee250f5acc1916c3d6aeb1793f29e5e45fde6ebb5 /content/browser/tracing/tracing_ui.cc
parentc49558d4ce96b63c3afe2ac4ae759dd338f0377e (diff)
downloadchromium_src-5186ccb8c67e321f34bb82cedfed1920832acfd2.zip
chromium_src-5186ccb8c67e321f34bb82cedfed1920832acfd2.tar.gz
chromium_src-5186ccb8c67e321f34bb82cedfed1920832acfd2.tar.bz2
Implement TracingController::GetMonitoringStatus
trace-viewer side CL is here: https://codereview.appspot.com/52710047 Currently the monitoring mode doesn't work correctly when we reload about:tracing. This is because reloaded about:tracing fails in extracting the current monitoring status (See my comment in patch set 2). This CL implements TracingController::GetMonitoringStatus so that trace-viewer/src/about_tracing/profiling_view.js can get the current monitoring status when loading the profiling view. TEST=content_browsertests::EnableCaptureAndDisableMonitoring R=nduca@chromium.org Review URL: https://codereview.chromium.org/139313005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245211 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/tracing/tracing_ui.cc')
-rw-r--r--content/browser/tracing/tracing_ui.cc48
1 files changed, 40 insertions, 8 deletions
diff --git a/content/browser/tracing/tracing_ui.cc b/content/browser/tracing/tracing_ui.cc
index 2f71e71..6ef08e3 100644
--- a/content/browser/tracing/tracing_ui.cc
+++ b/content/browser/tracing/tracing_ui.cc
@@ -44,8 +44,7 @@ void OnGotCategories(const WebUIDataSource::GotDataCallback& callback,
bool GetTracingOptions(const std::string& data64,
std::string* category_filter_string,
- int* tracing_options)
-{
+ int* tracing_options) {
std::string data;
if (!base::Base64Decode(data64, &data)) {
LOG(ERROR) << "Options were not base64 encoded.";
@@ -90,8 +89,8 @@ bool GetTracingOptions(const std::string& data64,
void OnRecordingEnabledAck(const WebUIDataSource::GotDataCallback& callback);
-bool OnBeginRecording(const std::string& data64,
- const WebUIDataSource::GotDataCallback& callback) {
+bool BeginRecording(const std::string& data64,
+ const WebUIDataSource::GotDataCallback& callback) {
std::string category_filter_string;
int tracing_options = 0;
if (!GetTracingOptions(data64, &category_filter_string, &tracing_options))
@@ -133,8 +132,8 @@ void BeginReadingRecordingResult(
void OnMonitoringEnabledAck(const WebUIDataSource::GotDataCallback& callback);
-bool OnEnableMonitoring(const std::string& data64,
- const WebUIDataSource::GotDataCallback& callback) {
+bool EnableMonitoring(const std::string& data64,
+ const WebUIDataSource::GotDataCallback& callback) {
std::string category_filter_string;
int tracing_options = 0;
if (!GetTracingOptions(data64, &category_filter_string, &tracing_options))
@@ -156,6 +155,34 @@ void OnMonitoringDisabled(const WebUIDataSource::GotDataCallback& callback) {
callback.Run(res);
}
+void GetMonitoringStatus(const WebUIDataSource::GotDataCallback& callback) {
+ bool is_monitoring;
+ std::string category_filter;
+ TracingController::Options options;
+ TracingController::GetInstance()->GetMonitoringStatus(
+ &is_monitoring, &category_filter, &options);
+
+ scoped_ptr<base::DictionaryValue>
+ monitoring_options(new base::DictionaryValue());
+ monitoring_options->SetBoolean("isMonitoring", is_monitoring);
+ monitoring_options->SetString("categoryFilter", category_filter);
+ monitoring_options->SetBoolean("useSystemTracing",
+ (options & TracingController::ENABLE_SYSTRACE) != 0);
+ monitoring_options->SetBoolean("useContinuousTracing",
+ (options & TracingController::RECORD_CONTINUOUSLY) != 0);
+ monitoring_options->SetBoolean("useSampling",
+ (options & TracingController::ENABLE_SAMPLING) != 0);
+
+ std::string monitoring_options_json;
+ base::JSONWriter::Write(monitoring_options.get(), &monitoring_options_json);
+
+ base::RefCountedString* monitoring_options_base64 =
+ new base::RefCountedString();
+ base::Base64Encode(monitoring_options_json,
+ &monitoring_options_base64->data());
+ callback.Run(monitoring_options_base64);
+}
+
void ReadMonitoringSnapshot(const WebUIDataSource::GotDataCallback& callback,
const base::FilePath& path) {
std::string tmp;
@@ -183,7 +210,7 @@ bool OnBeginJSONRequest(const std::string& path,
const char* beginRecordingPath = "json/begin_recording?";
if (StartsWithASCII(path, beginRecordingPath, true)) {
std::string data = path.substr(strlen(beginRecordingPath));
- return OnBeginRecording(data, callback);
+ return BeginRecording(data, callback);
}
if (path == "json/get_buffer_percent_full") {
return TracingController::GetInstance()->GetTraceBufferPercentFull(
@@ -197,7 +224,7 @@ bool OnBeginJSONRequest(const std::string& path,
const char* enableMonitoringPath = "json/begin_monitoring?";
if (path.find(enableMonitoringPath) == 0) {
std::string data = path.substr(strlen(enableMonitoringPath));
- return OnEnableMonitoring(data, callback);
+ return EnableMonitoring(data, callback);
}
if (path == "json/end_monitoring") {
return TracingController::GetInstance()->DisableMonitoring(
@@ -208,6 +235,11 @@ bool OnBeginJSONRequest(const std::string& path,
base::FilePath(), base::Bind(OnMonitoringSnapshotCaptured, callback));
return true;
}
+ if (path == "json/get_monitoring_status") {
+ GetMonitoringStatus(callback);
+ return true;
+ }
+
LOG(ERROR) << "Unhandled request to " << path;
return false;
}