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

Unified Diff: chrome/browser/ui/webui/gpu_internals_ui.cc

Issue 6691013: Introduce gpu_trace_event for gpu performance analysis. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Feedback updates Created 9 years, 9 months 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
« no previous file with comments | « chrome/browser/resources/gpu_internals/tracing_controller.js ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 8e8bf2c366a08223c3f72ca9e848403167429372..fa9d592ac25ae165ae3435a0e60ef222d908d626 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 OnEndTracingAsync(const ListValue* list);
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 trace_enabled_;
};
////////////////////////////////////////////////////////////////////////////////
@@ -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)
+ , trace_enabled_(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 (trace_enabled_)
+ OnEndTracingAsync(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(
+ "endTracingAsync",
+ NewCallback(this, &GpuMessageHandler::OnEndTracingAsync));
+ web_ui_->RegisterMessageCallback(
"browserBridgeInitialized",
NewCallback(this, &GpuMessageHandler::OnBrowserBridgeInitialized));
web_ui_->RegisterMessageCallback(
@@ -368,6 +388,38 @@ void GpuMessageHandler::OnGpuInfoUpdate() {
delete gpu_info_val;
}
+void GpuMessageHandler::OnBeginTracing(const ListValue* args) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ trace_enabled_ = true;
+ // TODO(jbates): TracingController::BeginTracing()
+}
+
+void GpuMessageHandler::OnEndTracingAsync(const ListValue* list) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK(traceEnabled_);
+
+ // TODO(jbates): TracingController::OnEndTracingAsync(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
@@ -385,4 +437,3 @@ GpuInternalsUI::GpuInternalsUI(TabContents* contents) : WebUI(contents) {
// Set up the chrome://gpu/ source.
contents->profile()->GetChromeURLDataManager()->AddDataSource(html_source);
}
-
« no previous file with comments | « chrome/browser/resources/gpu_internals/tracing_controller.js ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698