diff options
author | haraken@chromium.org <haraken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-16 16:12:56 +0000 |
---|---|---|
committer | haraken@chromium.org <haraken@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-16 16:12:56 +0000 |
commit | 5186ccb8c67e321f34bb82cedfed1920832acfd2 (patch) | |
tree | e250f5acc1916c3d6aeb1793f29e5e45fde6ebb5 /content/browser/tracing/tracing_ui.cc | |
parent | c49558d4ce96b63c3afe2ac4ae759dd338f0377e (diff) | |
download | chromium_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.cc | 48 |
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; } |