Chromium Code Reviews| Index: chrome/browser/ui/webui/gpu_internals_ui.cc |
| diff --git a/chrome/browser/ui/webui/gpu_internals_ui.cc b/chrome/browser/ui/webui/gpu_internals_ui.cc |
| index e8d6d3b735c3f008cfc08aed349ad246d916139c..f25c49ee38f29b43746aa8e10880ce71faa1bd20 100644 |
| --- a/chrome/browser/ui/webui/gpu_internals_ui.cc |
| +++ b/chrome/browser/ui/webui/gpu_internals_ui.cc |
| @@ -35,6 +35,7 @@ |
| #include "chrome/common/url_constants.h" |
| #include "content/browser/browser_thread.h" |
| #include "content/browser/gpu_process_host.h" |
| +#include "content/browser/renderer_host/render_view_host.h" |
| #include "content/browser/tab_contents/tab_contents.h" |
| #include "grit/browser_resources.h" |
| #include "grit/generated_resources.h" |
| @@ -75,6 +76,8 @@ class GpuMessageHandler |
| virtual void RegisterMessages(); |
| // Mesages |
| + void OnBeginTracing(const ListValue* list); |
| + void OnBeginToEndTracing(const ListValue* list); |
|
Ken Russell (switch to Gerrit)
2011/03/14 23:57:35
The name "OnBeginToEndTracing" is a little hard to
nduca
2011/03/15 01:21:40
Done.
|
| void OnBrowserBridgeInitialized(const ListValue* list); |
| void OnCallAsync(const ListValue* list); |
| @@ -82,6 +85,8 @@ class GpuMessageHandler |
| Value* OnRequestClientInfo(const ListValue* list); |
| Value* OnRequestLogMessages(const ListValue* list); |
| + // Callbacks. |
| + void OnTraceDataCollected(const std::string& json_events); |
| void OnGpuInfoUpdate(); |
| // Executes the javascript function |function_name| in the renderer, passing |
| @@ -95,7 +100,11 @@ class GpuMessageHandler |
| // Cache the Singleton for efficiency. |
| GpuDataManager* gpu_data_manager_; |
| + void OnEndTracingComplete(); |
| + |
| Callback0::Type* gpu_info_update_callback_; |
| + |
| + bool traceEnabled_; |
|
greggman
2011/03/15 00:19:50
trace_enabled_? (style guide)
|
| }; |
| //////////////////////////////////////////////////////////////////////////////// |
| @@ -141,7 +150,9 @@ std::string GpuHTMLSource::GetMimeType(const std::string&) const { |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| -GpuMessageHandler::GpuMessageHandler() : gpu_info_update_callback_(NULL) { |
| +GpuMessageHandler::GpuMessageHandler() |
| + : gpu_info_update_callback_(NULL) |
| + , traceEnabled_(false) { |
| gpu_data_manager_ = GpuDataManager::GetInstance(); |
| DCHECK(gpu_data_manager_); |
| } |
| @@ -151,6 +162,9 @@ GpuMessageHandler::~GpuMessageHandler() { |
| gpu_data_manager_->RemoveGpuInfoUpdateCallback(gpu_info_update_callback_); |
| delete gpu_info_update_callback_; |
| } |
| + |
| + if (traceEnabled_) |
| + OnBeginToEndTracing(NULL); |
| } |
| WebUIMessageHandler* GpuMessageHandler::Attach(WebUI* web_ui) { |
| @@ -164,6 +178,12 @@ void GpuMessageHandler::RegisterMessages() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| web_ui_->RegisterMessageCallback( |
| + "beginTracing", |
| + NewCallback(this, &GpuMessageHandler::OnBeginTracing)); |
| + web_ui_->RegisterMessageCallback( |
| + "beginToEndTracing", |
| + NewCallback(this, &GpuMessageHandler::OnBeginToEndTracing)); |
| + web_ui_->RegisterMessageCallback( |
| "browserBridgeInitialized", |
| NewCallback(this, &GpuMessageHandler::OnBrowserBridgeInitialized)); |
| web_ui_->RegisterMessageCallback( |
| @@ -379,6 +399,38 @@ void GpuMessageHandler::OnGpuInfoUpdate() { |
| delete gpu_info_val; |
| } |
| +void GpuMessageHandler::OnBeginTracing(const ListValue* args) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + |
| + traceEnabled_ = true; |
| + // TODO(jbates): TracingController::BeginTracing() |
| +} |
| + |
| +void GpuMessageHandler::OnBeginToEndTracing(const ListValue* list) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + DCHECK(traceEnabled_); |
| + |
| + // TODO(jbates): TracingController::BeginToEndTracing(new |
| + // Callback(this, GpuMessageHandler::OnEndTracingComplete)) |
| +} |
| + |
| +void GpuMessageHandler::OnEndTracingComplete() { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + traceEnabled_ = false; |
| + web_ui_->CallJavascriptFunction("tracingController.onEndTracingComplete"); |
| +} |
| + |
| +void GpuMessageHandler::OnTraceDataCollected(const std::string& json_events) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + std::wstring javascript; |
| + javascript += L"tracingController.onTraceDataCollected("; |
| + javascript += UTF8ToWide(json_events); |
| + javascript += L");"; |
| + |
| + web_ui_->GetRenderViewHost()->ExecuteJavascriptInWebFrame(string16(), |
| + WideToUTF16Hack(javascript)); |
| +} |
| + |
| } // namespace |
| @@ -396,4 +448,3 @@ GpuInternalsUI::GpuInternalsUI(TabContents* contents) : WebUI(contents) { |
| // Set up the chrome://gpu/ source. |
| contents->profile()->GetChromeURLDataManager()->AddDataSource(html_source); |
| } |
| - |