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

Side by Side Diff: chrome/browser/resources/gpu_internals/info_view.js

Issue 6712048: Implement easy GPU feature status summary. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: First rev Created 9 years, 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 5
6 /** 6 /**
7 * @fileoverview This view displays information on the current GPU 7 * @fileoverview This view displays information on the current GPU
8 * hardware. Its primary usefulness is to allow users to copy-paste 8 * hardware. Its primary usefulness is to allow users to copy-paste
9 * their data in an easy to read format for bug reports. 9 * their data in an easy to read format for bug reports.
10 */ 10 */
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 { 83 {
84 description: 'Software rendering list version', 84 description: 'Software rendering list version',
85 value: this.clientInfo_.blacklist_version 85 value: this.clientInfo_.blacklist_version
86 }]); 86 }]);
87 } else { 87 } else {
88 this.setText_('client-info', '... loading...'); 88 this.setText_('client-info', '... loading...');
89 } 89 }
90 90
91 // GPU info, basic 91 // GPU info, basic
92 var diagnostics = this.querySelector('.diagnostics'); 92 var diagnostics = this.querySelector('.diagnostics');
93 var blacklistedIndicator = this.querySelector('.blacklisted-indicator'); 93 var featureStatusList = this.querySelector('.feature-status-list');
94 var problemsDiv = this.querySelector('.problems-div');
95 var problemsList = this.querySelector('.problems-list');
94 var gpuInfo = browserBridge.gpuInfo; 96 var gpuInfo = browserBridge.gpuInfo;
97 var i;
95 if (gpuInfo) { 98 if (gpuInfo) {
96 if (gpuInfo.blacklistingReasons) { 99 // Not using jstemplate here for blacklist status because we construct
97 blacklistedIndicator.hidden = false; 100 // href from data, which jstemplate can't seem to do.
98 // Not using jstemplate here because we need to manipulate 101 if (gpuInfo.blacklistStatus) {
99 // href on the fly 102 console.log(JSON.stringify(gpuInfo.blacklistStatus));
100 var reasonsEl = blacklistedIndicator.querySelector( 103 // feature status list
101 '.blacklisted-reasons'); 104 featureStatusList.textContent = '';
102 reasonsEl.textContent = ''; 105 for (i = 0; i < gpuInfo.blacklistStatus.featureStatus.length;
103 for (var i = 0; i < gpuInfo.blacklistingReasons.length; i++) { 106 i++) {
104 var reason = gpuInfo.blacklistingReasons[i]; 107 var feature = gpuInfo.blacklistStatus.featureStatus[i];
108 var featureEl = document.createElement('li');
105 109
106 var reasonEl = document.createElement('li'); 110 var nameEl = document.createElement('span');
111 nameEl.textContent = feature.name + ': ';
112 featureEl.appendChild(nameEl);
107 113
108 // Description of issue 114 var statusEl = document.createElement('span');
109 var desc = document.createElement('a'); 115 statusEl.textContent = feature.enabled ? 'enabled' : 'disabled';
110 desc.textContent = reason.description; 116 if (feature.enabled)
111 reasonEl.appendChild(desc); 117 statusEl.className = 'feature-enabled';
118 else
119 statusEl.className = 'feature-disabled';
120 featureEl.appendChild(statusEl);
112 121
113 // Spacing ':' element 122 featureStatusList.appendChild(featureEl);
114 if (reason.cr_bugs.length + reason.webkit_bugs.length > 0) { 123 }
115 var tmp = document.createElement('span'); 124
116 tmp.textContent = ' '; 125 // problems list
117 reasonEl.appendChild(tmp); 126 if (gpuInfo.blacklistStatus.problems.length) {
127 problemsDiv.hidden = false;
128 problemsList.textContent = '';
129 for (i = 0; i < gpuInfo.blacklistStatus.problems.length; i++) {
130 var problem = gpuInfo.blacklistStatus.problems[i];
131 var problemEl = this.createProblemEl_(problem);
132 problemsList.appendChild(problemEl);
118 } 133 }
134 } else {
135 problemsDiv.hidden = true;
136 }
119 137
120 var nreasons = 0;
121 var j;
122 // cr_bugs
123 for (j = 0; j < reason.cr_bugs.length; ++j) {
124 if (nreasons > 0) {
125 var tmp = document.createElement('span');
126 tmp.textContent = ', ';
127 reasonEl.appendChild(tmp);
128 }
129
130 var link = document.createElement('a');
131 var bugid = parseInt(reason.cr_bugs[j]);
132 link.textContent = bugid;
133 link.href = 'http://crbug.com/' + bugid;
134 reasonEl.appendChild(link);
135 nreasons++;
136 }
137
138 for (j = 0; j < reason.webkit_bugs.length; ++j) {
139 if (nreasons > 0) {
140 var tmp = document.createElement('span');
141 tmp.textContent = ', ';
142 reasonEl.appendChild(tmp);
143 }
144
145 var link = document.createElement('a');
146 var bugid = parseInt(reason.webkit_bugs[j]);
147 link.textContent = bugid;
148
149 link.href = 'https://bugs.webkit.org/show_bug.cgi?id=' + bugid;
150 reasonEl.appendChild(link);
151 nreasons++;
152 }
153
154 reasonsEl.appendChild(reasonEl);
155 }
156 } else { 138 } else {
157 blacklistedIndicator.hidden = true; 139 featureStatusList.textContent = '';
140 problemsList.hidden = true;
158 } 141 }
159 this.setTable_('basic-info', gpuInfo.basic_info); 142 this.setTable_('basic-info', gpuInfo.basic_info);
160 143
161 if (gpuInfo.diagnostics) { 144 if (gpuInfo.diagnostics) {
162 diagnostics.hidden = false; 145 diagnostics.hidden = false;
163 this.setTable_('diagnostics-table', gpuInfo.diagnostics); 146 this.setTable_('diagnostics-table', gpuInfo.diagnostics);
164 } else { 147 } else {
165 diagnostics.hidden = true; 148 diagnostics.hidden = true;
166 } 149 }
167 } else { 150 } else {
168 blacklistedIndicator.hidden = true;
169 this.setText_('basic-info', '... loading ...'); 151 this.setText_('basic-info', '... loading ...');
170 diagnostics.hidden = true; 152 diagnostics.hidden = true;
153 featureStatusList.textContent = '';
154 problemsDiv.hidden = true;
171 } 155 }
172 156
173 // Log messages 157 // Log messages
174 if (!browserBridge.debugMode) { 158 if (!browserBridge.debugMode) {
175 jstProcess(new JsEvalContext({values: this.logMessages_}), 159 jstProcess(new JsEvalContext({values: this.logMessages_}),
176 document.getElementById('log-messages')); 160 document.getElementById('log-messages'));
177 } 161 }
178 }, 162 },
179 163
164 createProblemEl_: function(problem) {
165 var problemEl;
166 problemEl = document.createElement('li');
167
168 // Description of issue
169 var desc = document.createElement('a');
170 desc.textContent = problem.description;
171 problemEl.appendChild(desc);
172
173 // Spacing ':' element
174 if (problem.crBugs.length + problem.webkitBugs.length > 0) {
175 var tmp = document.createElement('span');
176 tmp.textContent = ' ';
177 problemEl.appendChild(tmp);
178 }
179
180 var nbugs = 0;
181 var j;
182
183 // crBugs
184 for (j = 0; j < problem.crBugs.length; ++j) {
185 if (nbugs > 0) {
186 var tmp = document.createElement('span');
187 tmp.textContent = ', ';
188 problemEl.appendChild(tmp);
189 }
190
191 var link = document.createElement('a');
192 var bugid = parseInt(problem.crBugs[j]);
193 link.textContent = bugid;
194 link.href = 'http://crbug.com/' + bugid;
195 problemEl.appendChild(link);
196 nbugs++;
197 }
198
199 for (j = 0; j < problem.webkitBugs.length; ++j) {
200 if (nbugs > 0) {
201 var tmp = document.createElement('span');
202 tmp.textContent = ', ';
203 problemEl.appendChild(tmp);
204 }
205
206 var link = document.createElement('a');
207 var bugid = parseInt(problem.webkitBugs[j]);
208 link.textContent = bugid;
209
210 link.href = 'https://bugs.webkit.org/show_bug.cgi?id=' + bugid;
211 problemEl.appendChild(link);
212 nbugs++;
213 }
214
215 return problemEl;
216 },
217
180 setText_: function(outputElementId, text) { 218 setText_: function(outputElementId, text) {
181 var peg = document.getElementById(outputElementId); 219 var peg = document.getElementById(outputElementId);
182 peg.innerText = text; 220 peg.innerText = text;
183 }, 221 },
184 222
185 setTable_: function(outputElementId, inputData) { 223 setTable_: function(outputElementId, inputData) {
186 var template = jstGetTemplate('info-view-table-template'); 224 var template = jstGetTemplate('info-view-table-template');
187 jstProcess(new JsEvalContext({value: inputData}), 225 jstProcess(new JsEvalContext({value: inputData}),
188 template); 226 template);
189 227
190 var peg = document.getElementById(outputElementId); 228 var peg = document.getElementById(outputElementId);
191 if (!peg) 229 if (!peg)
192 throw new Error('Node ' + outputElementId + ' not found'); 230 throw new Error('Node ' + outputElementId + ' not found');
193 231
194 peg.innerHTML = ''; 232 peg.innerHTML = '';
195 peg.appendChild(template); 233 peg.appendChild(template);
196 } 234 }
197 }; 235 };
198 236
199 return { 237 return {
200 InfoView: InfoView 238 InfoView: InfoView
201 }; 239 };
202 }); 240 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698