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

Side by Side Diff: chrome/browser/resources/gpu/infoview.js

Issue 5228004: Switch the about:gpu implementation from an about handler to dom_ui.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * This view displays options for importing/exporting the captured data. Its
7 * primarily usefulness is to allow users to copy-paste their data in an easy
8 * to read format for bug reports.
9 *
10 * - Has a button to generate a text report.
11 *
12 * - Shows how many events have been captured.
13 * @constructor
14 */
15 function InfoView(mainBoxId) {
16 DivView.call(this, mainBoxId);
17
18 this.textDiv_ = document.getElementById('infoText');
19 this.gpuInfo_ = undefined;
20 this.clientInfo_ = undefined;
21
22 var self = this;
23
24 // This function begins a request for the ClientInfo. If it comes back
25 // as undefined, then we will issue the request again in 250ms.
26 function beginRequestClientInfo() {
27 g_browser.callAsync('requestClientInfo', undefined, function(data) {
28 self.clientInfo_ = data;
29 self.refresh_();
30 if(data === undefined) { // try again in 250 ms
31 window.setTimeout(beginRequestClientInfo, 250)
32 }
33 });
34 }
35 beginRequestClientInfo();
36
37 // This function begins a request for the GpuInfo. If it comes back
38 // as undefined, then we will issue the request again in 250ms.
39 function beginRequestGpuInfo() {
40 g_browser.callAsync('requestGpuInfo', undefined, function(data) {
41 self.gpuInfo_ = data;
42 self.refresh_();
43 if(data === undefined) { // try again in 250 ms
44 window.setTimeout(beginRequestGpuInfo, 250)
45 }
46 });
47 }
48 beginRequestGpuInfo();
49 this.refresh_();
50 }
51
52 inherits(InfoView, DivView);
53
54 /**
55 * Updates the view based on its currently known data
56 */
57 InfoView.prototype.refresh_ = function(data) {
58 var html = [];
59 function separateValues(obj) {
60 var subdicts = {}
mmenke 2010/11/23 19:27:13 nit: Missing semi-colons here and on the next line
nduca 2010/11/23 19:39:01 Done.
61 var values = {}
62 for(var k in obj) {
63 var v = obj[k];
64 if(typeof(v) === 'number' || typeof(v) === "string") {
mmenke 2010/11/23 19:27:13 nit: Single quotes are preferred by Google style g
nduca 2010/11/23 19:39:01 Done.
65 values[k] = v;
66 } else {
67 subdicts[k] = v;
68 }
69 }
70 return [subdicts,values];
71 }
72 function outputObject(obj) {
73 var items = separateValues(obj);
74 var subdicts = items[0];
75 var values = items[1];
76 html.push("<table>");
77 for(var k in values) { // output values
78 html.push("<tr><td><strong>");
79 html.push(k);
80 html.push("</strong></td><td>");
81 html.push(values[k]);
82 html.push("</td></tr>");
83 }
84 html.push("</table>");
85
86 html.push("<ul>");
87 for(var k in subdicts) { // output subdicts
88 html.push("<li><strong>" + k + ":</strong> ");
89 outputObject(subdicts[k]);
90 html.push("</li>");
91 }
92 html.push("</ul>");
93 }
94
95 function outputObjectV2(obj) {
96 var all_values = true;
97 for (var k in obj) { // output values
98 var v = obj[k];
99 if(!(typeof(v) === 'number' || typeof(v) === "string")) {
100 all_values = false;
101 }
102 }
103 if (all_values)
104 html.push("<table class='border'>");
105 else
106 html.push("<table>");
107 for (var k in obj) { // output values
108 var v = obj[k];
109 if (typeof(v) === 'number' || typeof(v) === "string") {
110 html.push("<tr><td><strong>");
111 html.push(k);
112 html.push("</strong></td><td>");
113 html.push(v);
114 html.push("</td></tr>");
115 } else {
116 html.push("<tr><td colspan=2><strong>" + k + ":</strong>");
117 html.push("<div style=\"padding-left: 8px;\">");
118 outputObjectV2(v);
119 html.push("</div>");
120 html.push("</td></tr>");
121 }
122 }
123 html.push("</table>");
124 }
125
126 html.push('<h2>Chrome information</h2>');
127 if (this.clientInfo_) {
128 var chromeVersion = this.clientInfo_.version +
129 ' (' + this.clientInfo_.official +
130 ' ' + this.clientInfo_.cl +
131 ') ' + this.clientInfo_.version_mod + "</p>";
132 var data = {'Data exported on' : (new Date()).toLocaleString(),
133 'Chrome version: ' : chromeVersion};
134 outputObjectV2(data);
135 } else {
136 html.push('... refreshing data ...');
137 }
138
139 html.push('<h2>GPU information</h2>');
140 if (this.gpuInfo_) {
141 outputObjectV2(this.gpuInfo_);
142 } else {
143 html.push('... refreshing data ...');
144 }
145
146 // Open a new window to display this text.
147 this.textDiv_.innerHTML = html.join("\n");
148 }
mmenke 2010/11/23 19:27:13 nit: Missing semi-colon. This is actually closing
nduca 2010/11/23 19:39:01 Done.
149
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698