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

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

Issue 7555005: Moving the contents of chrome://gpu Profiling to chrome://tracing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 years, 4 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/ui/webui/tracing_ui.h ('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/tracing_ui.cc
diff --git a/chrome/browser/ui/webui/gpu_internals_ui.cc b/chrome/browser/ui/webui/tracing_ui.cc
similarity index 63%
copy from chrome/browser/ui/webui/gpu_internals_ui.cc
copy to chrome/browser/ui/webui/tracing_ui.cc
index 8088c55ffbe313b4d3e6fd75333302d6c0cd93b5..7b277c0def44d4521d7a23642ef438507ffce326 100644
--- a/chrome/browser/ui/webui/gpu_internals_ui.cc
+++ b/chrome/browser/ui/webui/tracing_ui.cc
@@ -2,132 +2,120 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/webui/gpu_internals_ui.h"
+#include "chrome/browser/ui/webui/tracing_ui.h"
-#include <algorithm>
#include <string>
-#include <utility>
-#include <vector>
#include "base/command_line.h"
#include "base/file_util.h"
-#include "base/memory/singleton.h"
-#include "base/message_loop.h"
-#include "base/path_service.h"
#include "base/scoped_ptr.h"
-#include "base/stringprintf.h"
#include "base/string_number_conversions.h"
-#include "base/string_piece.h"
#include "base/utf_string_conversions.h"
-#include "base/values.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/io_thread.h"
-#include "chrome/browser/net/chrome_net_log.h"
-#include "chrome/browser/net/connection_tester.h"
-#include "chrome/browser/net/passive_log_collector.h"
-#include "chrome/browser/net/url_fixer_upper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/shell_dialogs.h"
-#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
#include "chrome/browser/ui/webui/chrome_web_ui_data_source.h"
-#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_version_info.h"
-#include "chrome/common/jstemplate_builder.h"
#include "chrome/common/url_constants.h"
-#include "content/browser/browser_thread.h"
#include "content/browser/gpu/gpu_data_manager.h"
-#include "content/browser/gpu/gpu_process_host.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/tab_contents/tab_contents.h"
#include "content/browser/tab_contents/tab_contents_view.h"
#include "content/browser/trace_controller.h"
#include "grit/browser_resources.h"
#include "grit/generated_resources.h"
-#include "net/base/escape.h"
-#include "net/url_request/url_request_context_getter.h"
#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
namespace {
-ChromeWebUIDataSource* CreateGpuHTMLSource() {
+ChromeWebUIDataSource* CreateTracingHTMLSource() {
ChromeWebUIDataSource* source =
- new ChromeWebUIDataSource(chrome::kChromeUIGpuInternalsHost);
+ new ChromeWebUIDataSource(chrome::kChromeUITracingHost);
source->set_json_path("strings.js");
- source->add_resource_path("gpu_internals.js", IDR_GPU_INTERNALS_JS);
- source->set_default_resource(IDR_GPU_INTERNALS_HTML);
+ source->add_resource_path("tracing.js", IDR_TRACING_JS);
+ source->set_default_resource(IDR_TRACING_HTML);
+ source->AddLocalizedString("tracingTitle", IDS_TRACING_TITLE);
return source;
}
// This class receives javascript messages from the renderer.
// Note that the WebUI infrastructure runs on the UI thread, therefore all of
// this class's methods are expected to run on the UI thread.
-class GpuMessageHandler
+class TracingMessageHandler
: public WebUIMessageHandler,
public SelectFileDialog::Listener,
- public base::SupportsWeakPtr<GpuMessageHandler>,
+ public base::SupportsWeakPtr<TracingMessageHandler>,
public TraceSubscriber {
public:
- GpuMessageHandler();
- virtual ~GpuMessageHandler();
+ TracingMessageHandler();
+ virtual ~TracingMessageHandler();
// WebUIMessageHandler implementation.
- virtual WebUIMessageHandler* Attach(WebUI* web_ui) OVERRIDE;
- virtual void RegisterMessages() OVERRIDE;
+ virtual WebUIMessageHandler* Attach(WebUI* web_ui);
+ virtual void RegisterMessages();
- // Messages
- void OnBeginTracing(const ListValue* list);
- void OnEndTracingAsync(const ListValue* list);
+ // SelectFileDialog::Listener implementation
+ virtual void FileSelected(const FilePath& path, int index, void* params);
+ virtual void FileSelectionCanceled(void* params);
+
+ // TraceSubscriber implementation.
+ virtual void OnEndTracingComplete();
+ virtual void OnTraceDataCollected(const std::string& json_events);
+ virtual void OnTraceBufferPercentFullReply(float percent_full);
+
+ // Messages.
void OnBrowserBridgeInitialized(const ListValue* list);
void OnCallAsync(const ListValue* list);
+ void OnBeginTracing(const ListValue* list);
+ void OnEndTracingAsync(const ListValue* list);
void OnBeginRequestBufferPercentFull(const ListValue* list);
void OnLoadTraceFile(const ListValue* list);
void OnSaveTraceFile(const ListValue* list);
- // Submessages dispatched from OnCallAsync
+ // Submessages dispatched from OnCallAsync.
Value* OnRequestClientInfo(const ListValue* list);
Value* OnRequestLogMessages(const ListValue* list);
- // SelectFileDialog::Listener implementation
- virtual void FileSelected(const FilePath& path,
- int index,
- void* params) OVERRIDE;
- virtual void FileSelectionCanceled(void* params) OVERRIDE;
-
// Callbacks.
void OnGpuInfoUpdate();
+
+ // Callbacks.
void LoadTraceFileComplete(std::string* file_contents);
void SaveTraceFileComplete();
- // TraceSubscriber implementation.
- virtual void OnEndTracingComplete() OVERRIDE;
- virtual void OnTraceDataCollected(const std::string& json_events) OVERRIDE;
- virtual void OnTraceBufferPercentFullReply(float percent_full) OVERRIDE;
-
// Executes the javascript function |function_name| in the renderer, passing
// it the argument |value|.
void CallJavascriptFunction(const std::wstring& function_name,
const Value* value);
private:
- DISALLOW_COPY_AND_ASSIGN(GpuMessageHandler);
+ // The file dialog to select a file for loading or saving traces.
+ scoped_refptr<SelectFileDialog> select_trace_file_dialog_;
+
+ // The type of the file dialog as the same one is used for loading or saving
+ // traces.
+ SelectFileDialog::Type select_trace_file_dialog_type_;
+
+ // The trace data that is to be written to the file on saving.
+ scoped_ptr<std::string> trace_data_to_save_;
+
+ // True while tracing is active.
+ bool trace_enabled_;
// Cache the Singleton for efficiency.
GpuDataManager* gpu_data_manager_;
+ // Callback called when the GPU info is updated.
Callback0::Type* gpu_info_update_callback_;
- scoped_refptr<SelectFileDialog> select_trace_file_dialog_;
- SelectFileDialog::Type select_trace_file_dialog_type_;
- scoped_ptr<std::string> trace_data_to_save_;
-
- bool trace_enabled_;
+ DISALLOW_COPY_AND_ASSIGN(TracingMessageHandler);
};
+// A proxy passed to the Read and Write tasks used when loading or saving trace
+// data.
class TaskProxy : public base::RefCountedThreadSafe<TaskProxy> {
public:
- explicit TaskProxy(const base::WeakPtr<GpuMessageHandler>& handler)
+ explicit TaskProxy(const base::WeakPtr<TracingMessageHandler>& handler)
: handler_(handler) {}
void LoadTraceFileCompleteProxy(std::string* file_contents) {
if (handler_)
@@ -141,26 +129,29 @@ class TaskProxy : public base::RefCountedThreadSafe<TaskProxy> {
}
private:
- base::WeakPtr<GpuMessageHandler> handler_;
friend class base::RefCountedThreadSafe<TaskProxy>;
+
+ // The message handler to call callbacks on.
+ base::WeakPtr<TracingMessageHandler> handler_;
+
DISALLOW_COPY_AND_ASSIGN(TaskProxy);
};
////////////////////////////////////////////////////////////////////////////////
//
-// GpuMessageHandler
+// TracingMessageHandler
//
////////////////////////////////////////////////////////////////////////////////
-GpuMessageHandler::GpuMessageHandler()
- : gpu_info_update_callback_(NULL),
- select_trace_file_dialog_type_(SelectFileDialog::SELECT_NONE),
- trace_enabled_(false) {
+TracingMessageHandler::TracingMessageHandler()
+ : select_trace_file_dialog_type_(SelectFileDialog::SELECT_NONE),
+ trace_enabled_(false),
+ gpu_info_update_callback_(NULL) {
gpu_data_manager_ = GpuDataManager::GetInstance();
DCHECK(gpu_data_manager_);
}
-GpuMessageHandler::~GpuMessageHandler() {
+TracingMessageHandler::~TracingMessageHandler() {
if (gpu_info_update_callback_) {
gpu_data_manager_->RemoveGpuInfoUpdateCallback(gpu_info_update_callback_);
delete gpu_info_update_callback_;
@@ -173,40 +164,40 @@ GpuMessageHandler::~GpuMessageHandler() {
TraceController::GetInstance()->CancelSubscriber(this);
}
-WebUIMessageHandler* GpuMessageHandler::Attach(WebUI* web_ui) {
+WebUIMessageHandler* TracingMessageHandler::Attach(WebUI* web_ui) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
WebUIMessageHandler* result = WebUIMessageHandler::Attach(web_ui);
return result;
}
-/* BrowserBridge.callAsync prepends a requestID to these messages. */
-void GpuMessageHandler::RegisterMessages() {
+void TracingMessageHandler::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));
+ NewCallback(this, &TracingMessageHandler::OnBrowserBridgeInitialized));
web_ui_->RegisterMessageCallback(
"callAsync",
- NewCallback(this, &GpuMessageHandler::OnCallAsync));
+ NewCallback(this, &TracingMessageHandler::OnCallAsync));
+ web_ui_->RegisterMessageCallback(
+ "beginTracing",
+ NewCallback(this, &TracingMessageHandler::OnBeginTracing));
+ web_ui_->RegisterMessageCallback(
+ "endTracingAsync",
+ NewCallback(this, &TracingMessageHandler::OnEndTracingAsync));
web_ui_->RegisterMessageCallback(
"beginRequestBufferPercentFull",
- NewCallback(this, &GpuMessageHandler::OnBeginRequestBufferPercentFull));
+ NewCallback(this,
+ &TracingMessageHandler::OnBeginRequestBufferPercentFull));
web_ui_->RegisterMessageCallback(
"loadTraceFile",
- NewCallback(this, &GpuMessageHandler::OnLoadTraceFile));
+ NewCallback(this, &TracingMessageHandler::OnLoadTraceFile));
web_ui_->RegisterMessageCallback(
"saveTraceFile",
- NewCallback(this, &GpuMessageHandler::OnSaveTraceFile));
+ NewCallback(this, &TracingMessageHandler::OnSaveTraceFile));
}
-void GpuMessageHandler::OnCallAsync(const ListValue* args) {
+void TracingMessageHandler::OnCallAsync(const ListValue* args) {
DCHECK_GE(args->GetSize(), static_cast<size_t>(2));
// unpack args into requestId, submessage and submessageArgs
bool ok;
@@ -253,15 +244,89 @@ void GpuMessageHandler::OnCallAsync(const ListValue* args) {
}
}
-void GpuMessageHandler::OnBeginRequestBufferPercentFull(const ListValue* list) {
+void TracingMessageHandler::OnBrowserBridgeInitialized(const ListValue* args) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ DCHECK(!gpu_info_update_callback_);
+
+ // Watch for changes in GPUInfo
+ gpu_info_update_callback_ =
+ NewCallback(this, &TracingMessageHandler::OnGpuInfoUpdate);
+ gpu_data_manager_->AddGpuInfoUpdateCallback(gpu_info_update_callback_);
+
+ // Tell GpuDataManager it should have full GpuInfo. If the
+ // Gpu process has not run yet, this will trigger its launch.
+ gpu_data_manager_->RequestCompleteGpuInfoIfNeeded();
+
+ // Run callback immediately in case the info is ready and no update in the
+ // future.
+ OnGpuInfoUpdate();
+}
+
+Value* TracingMessageHandler::OnRequestClientInfo(const ListValue* list) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ DictionaryValue* dict = new DictionaryValue();
+
+ chrome::VersionInfo version_info;
+
+ if (!version_info.is_valid()) {
+ DLOG(ERROR) << "Unable to create chrome::VersionInfo";
+ } else {
+ // We have everything we need to send the right values.
+ dict->SetString("version", version_info.Version());
+ dict->SetString("cl", version_info.LastChange());
+ dict->SetString("version_mod",
+ chrome::VersionInfo::GetVersionStringModifier());
+ dict->SetString("official",
+ l10n_util::GetStringUTF16(
+ version_info.IsOfficialBuild() ?
+ IDS_ABOUT_VERSION_OFFICIAL :
+ IDS_ABOUT_VERSION_UNOFFICIAL));
+
+ dict->SetString("command_line",
+ CommandLine::ForCurrentProcess()->GetCommandLineString());
+ }
+
+ dict->SetString("blacklist_version",
+ GpuDataManager::GetInstance()->GetBlacklistVersion());
+
+ return dict;
+}
+
+Value* TracingMessageHandler::OnRequestLogMessages(const ListValue*) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ return gpu_data_manager_->log_messages().DeepCopy();
+}
+
+void TracingMessageHandler::OnBeginRequestBufferPercentFull(
+ const ListValue* list) {
TraceController::GetInstance()->GetTraceBufferPercentFullAsync(this);
}
+void TracingMessageHandler::OnGpuInfoUpdate() {
+ // Get GPU Info.
+ scoped_ptr<base::DictionaryValue> gpu_info_val(
+ gpu_data_manager_->GpuInfoAsDictionaryValue());
+
+ // Add in blacklisting features
+ Value* feature_status = gpu_data_manager_->GetFeatureStatus();
+ if (feature_status)
+ gpu_info_val->Set("featureStatus", feature_status);
+
+ // Send GPU Info to javascript.
+ web_ui_->CallJavascriptFunction("browserBridge.onGpuInfoUpdate",
+ *(gpu_info_val.get()));
+}
+
+// A task used for asynchronously reading a file to a string. Calls the
+// TaskProxy callback when reading is complete.
class ReadTraceFileTask : public Task {
public:
ReadTraceFileTask(TaskProxy* proxy, const FilePath& path)
- : proxy_(proxy)
- , path_(path) {}
+ : proxy_(proxy),
+ path_(path) {}
virtual void Run() {
std::string* file_contents = new std::string();
@@ -277,12 +342,15 @@ class ReadTraceFileTask : public Task {
}
private:
+ // The proxy that defines the completion callback.
scoped_refptr<TaskProxy> proxy_;
// Path of the file to open.
const FilePath path_;
};
+// A task used for asynchronously writing a file from a string. Calls the
+// TaskProxy callback when writing is complete.
class WriteTraceFileTask : public Task {
public:
WriteTraceFileTask(TaskProxy* proxy,
@@ -302,6 +370,7 @@ class WriteTraceFileTask : public Task {
}
private:
+ // The proxy that defines the completion callback.
scoped_refptr<TaskProxy> proxy_;
// Path of the file to save.
@@ -311,7 +380,7 @@ class WriteTraceFileTask : public Task {
scoped_ptr<std::string> contents_;
};
-void GpuMessageHandler::FileSelected(
+void TracingMessageHandler::FileSelected(
const FilePath& path, int index, void* params) {
if (select_trace_file_dialog_type_ == SelectFileDialog::SELECT_OPEN_FILE)
BrowserThread::PostTask(
@@ -325,15 +394,18 @@ void GpuMessageHandler::FileSelected(
select_trace_file_dialog_.release();
}
-void GpuMessageHandler::FileSelectionCanceled(void* params) {
+void TracingMessageHandler::FileSelectionCanceled(void* params) {
select_trace_file_dialog_.release();
- if (select_trace_file_dialog_type_ == SelectFileDialog::SELECT_OPEN_FILE)
- web_ui_->CallJavascriptFunction("tracingController.onLoadTraceFileCanceled");
- else
- web_ui_->CallJavascriptFunction("tracingController.onSaveTraceFileCanceled");
+ if (select_trace_file_dialog_type_ == SelectFileDialog::SELECT_OPEN_FILE) {
+ web_ui_->CallJavascriptFunction(
+ "tracingController.onLoadTraceFileCanceled");
+ } else {
+ web_ui_->CallJavascriptFunction(
+ "tracingController.onSaveTraceFileCanceled");
+ }
}
-void GpuMessageHandler::OnLoadTraceFile(const ListValue* list) {
+void TracingMessageHandler::OnLoadTraceFile(const ListValue* list) {
// Only allow a single dialog at a time.
if (select_trace_file_dialog_.get())
return;
@@ -347,7 +419,7 @@ void GpuMessageHandler::OnLoadTraceFile(const ListValue* list) {
web_ui_->tab_contents()->view()->GetTopLevelNativeWindow(), NULL);
}
-void GpuMessageHandler::LoadTraceFileComplete(std::string* file_contents) {
+void TracingMessageHandler::LoadTraceFileComplete(std::string* file_contents) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
std::wstring javascript;
javascript += L"tracingController.onLoadTraceFileComplete(";
@@ -358,7 +430,7 @@ void GpuMessageHandler::LoadTraceFileComplete(std::string* file_contents) {
WideToUTF16Hack(javascript));
}
-void GpuMessageHandler::OnSaveTraceFile(const ListValue* list) {
+void TracingMessageHandler::OnSaveTraceFile(const ListValue* list) {
// Only allow a single dialog at a time.
if (select_trace_file_dialog_.get())
return;
@@ -380,170 +452,13 @@ void GpuMessageHandler::OnSaveTraceFile(const ListValue* list) {
web_ui_->tab_contents()->view()->GetTopLevelNativeWindow(), NULL);
}
-void GpuMessageHandler::SaveTraceFileComplete() {
+void TracingMessageHandler::SaveTraceFileComplete() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
std::wstring javascript;
web_ui_->CallJavascriptFunction("tracingController.onSaveTraceFileComplete");
}
-void GpuMessageHandler::OnBrowserBridgeInitialized(const ListValue* args) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- DCHECK(!gpu_info_update_callback_);
-
- // Watch for changes in GPUInfo
- gpu_info_update_callback_ =
- NewCallback(this, &GpuMessageHandler::OnGpuInfoUpdate);
- gpu_data_manager_->AddGpuInfoUpdateCallback(gpu_info_update_callback_);
-
- // Tell GpuDataManager it should have full GpuInfo. If the
- // Gpu process has not run yet, this will trigger its launch.
- gpu_data_manager_->RequestCompleteGpuInfoIfNeeded();
-
- // Run callback immediately in case the info is ready and no update in the
- // future.
- OnGpuInfoUpdate();
-}
-
-Value* GpuMessageHandler::OnRequestClientInfo(const ListValue* list) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- DictionaryValue* dict = new DictionaryValue();
-
- chrome::VersionInfo version_info;
-
- if (!version_info.is_valid()) {
- DLOG(ERROR) << "Unable to create chrome::VersionInfo";
- } else {
- // We have everything we need to send the right values.
- dict->SetString("version", version_info.Version());
- dict->SetString("cl", version_info.LastChange());
- dict->SetString("version_mod",
- chrome::VersionInfo::GetVersionStringModifier());
- dict->SetString("official",
- l10n_util::GetStringUTF16(
- version_info.IsOfficialBuild() ?
- IDS_ABOUT_VERSION_OFFICIAL :
- IDS_ABOUT_VERSION_UNOFFICIAL));
-
- dict->SetString("command_line",
- CommandLine::ForCurrentProcess()->GetCommandLineString());
- }
-
- dict->SetString("blacklist_version",
- GpuDataManager::GetInstance()->GetBlacklistVersion());
-
- return dict;
-}
-
-DictionaryValue* NewDescriptionValuePair(const std::string& desc,
- const std::string& value) {
- DictionaryValue* dict = new DictionaryValue();
- dict->SetString("description", desc);
- dict->SetString("value", value);
- return dict;
-}
-
-DictionaryValue* NewDescriptionValuePair(const std::string& desc,
- Value* value) {
- DictionaryValue* dict = new DictionaryValue();
- dict->SetString("description", desc);
- dict->Set("value", value);
- return dict;
-}
-
-#if defined(OS_WIN)
-// Output DxDiagNode tree as nested array of {description,value} pairs
-ListValue* DxDiagNodeToList(const DxDiagNode& node) {
- ListValue* list = new ListValue();
- for (std::map<std::string, std::string>::const_iterator it =
- node.values.begin();
- it != node.values.end();
- ++it) {
- list->Append(NewDescriptionValuePair(it->first, it->second));
- }
-
- for (std::map<std::string, DxDiagNode>::const_iterator it =
- node.children.begin();
- it != node.children.end();
- ++it) {
- ListValue* sublist = DxDiagNodeToList(it->second);
- list->Append(NewDescriptionValuePair(it->first, sublist));
- }
- return list;
-}
-
-#endif // OS_WIN
-
-DictionaryValue* GpuInfoToDict(const GPUInfo& gpu_info) {
- ListValue* basic_info = new ListValue();
- basic_info->Append(NewDescriptionValuePair("Initialization time",
- base::Int64ToString(gpu_info.initialization_time.InMilliseconds())));
- basic_info->Append(NewDescriptionValuePair("Vendor Id",
- base::StringPrintf("0x%04x", gpu_info.vendor_id)));
- basic_info->Append(NewDescriptionValuePair("Device Id",
- base::StringPrintf("0x%04x", gpu_info.device_id)));
- basic_info->Append(NewDescriptionValuePair("Driver vendor",
- gpu_info.driver_vendor));
- basic_info->Append(NewDescriptionValuePair("Driver version",
- gpu_info.driver_version));
- basic_info->Append(NewDescriptionValuePair("Driver date",
- gpu_info.driver_date));
- basic_info->Append(NewDescriptionValuePair("Pixel shader version",
- gpu_info.pixel_shader_version));
- basic_info->Append(NewDescriptionValuePair("Vertex shader version",
- gpu_info.vertex_shader_version));
- basic_info->Append(NewDescriptionValuePair("GL version",
- gpu_info.gl_version));
- basic_info->Append(NewDescriptionValuePair("GL_VENDOR",
- gpu_info.gl_vendor));
- basic_info->Append(NewDescriptionValuePair("GL_RENDERER",
- gpu_info.gl_renderer));
- basic_info->Append(NewDescriptionValuePair("GL_VERSION",
- gpu_info.gl_version_string));
- basic_info->Append(NewDescriptionValuePair("GL_EXTENSIONS",
- gpu_info.gl_extensions));
-
- DictionaryValue* info = new DictionaryValue();
- info->Set("basic_info", basic_info);
-
-#if defined(OS_WIN)
- Value* dx_info;
- if (gpu_info.dx_diagnostics.children.size())
- dx_info = DxDiagNodeToList(gpu_info.dx_diagnostics);
- else
- dx_info = Value::CreateNullValue();
- info->Set("diagnostics", dx_info);
-#endif
-
- return info;
-}
-
-Value* GpuMessageHandler::OnRequestLogMessages(const ListValue*) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- return gpu_data_manager_->log_messages().DeepCopy();
-}
-
-void GpuMessageHandler::OnGpuInfoUpdate() {
- const GPUInfo& gpu_info = gpu_data_manager_->gpu_info();
-
- // Get GPU Info.
- DictionaryValue* gpu_info_val = GpuInfoToDict(gpu_info);
-
- // Add in blacklisting features
- Value* feature_status = gpu_data_manager_->GetFeatureStatus();
- if (feature_status)
- gpu_info_val->Set("featureStatus", feature_status);
-
- // Send GPU Info to javascript.
- web_ui_->CallJavascriptFunction("browserBridge.onGpuInfoUpdate",
- *gpu_info_val);
-
- delete gpu_info_val;
-}
-
-void GpuMessageHandler::OnBeginTracing(const ListValue* args) {
+void TracingMessageHandler::OnBeginTracing(const ListValue* args) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
trace_enabled_ = true;
// TODO(jbates) This may fail, but that's OK for current use cases.
@@ -553,7 +468,7 @@ void GpuMessageHandler::OnBeginTracing(const ListValue* args) {
TraceController::GetInstance()->BeginTracing(this);
}
-void GpuMessageHandler::OnEndTracingAsync(const ListValue* list) {
+void TracingMessageHandler::OnEndTracingAsync(const ListValue* list) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// TODO(nduca): fix javascript code to make sure trace_enabled_ is always true
@@ -567,13 +482,14 @@ void GpuMessageHandler::OnEndTracingAsync(const ListValue* list) {
}
}
-void GpuMessageHandler::OnEndTracingComplete() {
+void TracingMessageHandler::OnEndTracingComplete() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
trace_enabled_ = false;
web_ui_->CallJavascriptFunction("tracingController.onEndTracingComplete");
}
-void GpuMessageHandler::OnTraceDataCollected(const std::string& json_events) {
+void TracingMessageHandler::OnTraceDataCollected(
+ const std::string& json_events) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
std::wstring javascript;
javascript += L"tracingController.onTraceDataCollected(";
@@ -584,7 +500,7 @@ void GpuMessageHandler::OnTraceDataCollected(const std::string& json_events) {
WideToUTF16Hack(javascript));
}
-void GpuMessageHandler::OnTraceBufferPercentFullReply(float percent_full) {
+void TracingMessageHandler::OnTraceBufferPercentFullReply(float percent_full) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
web_ui_->CallJavascriptFunction(
"tracingController.onRequestBufferPercentFullComplete",
@@ -596,14 +512,14 @@ void GpuMessageHandler::OnTraceBufferPercentFullReply(float percent_full) {
////////////////////////////////////////////////////////////////////////////////
//
-// GpuInternalsUI
+// TracingUI
//
////////////////////////////////////////////////////////////////////////////////
-GpuInternalsUI::GpuInternalsUI(TabContents* contents) : ChromeWebUI(contents) {
- AddMessageHandler((new GpuMessageHandler())->Attach(this));
+TracingUI::TracingUI(TabContents* contents) : ChromeWebUI(contents) {
+ AddMessageHandler((new TracingMessageHandler())->Attach(this));
- // Set up the chrome://gpu-internals/ source.
- Profile* profile = Profile::FromBrowserContext(contents->browser_context());
- profile->GetChromeURLDataManager()->AddDataSource(CreateGpuHTMLSource());
+ // Set up the chrome://tracing/ source.
+ Profile::FromBrowserContext(contents->browser_context())->
+ GetChromeURLDataManager()->AddDataSource(CreateTracingHTMLSource());
}
« no previous file with comments | « chrome/browser/ui/webui/tracing_ui.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698