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

Side by Side Diff: chrome/browser/resources/inspect/inspect.js

Issue 22536006: chrome://inspect: Better support for multiple browsers and older versions of mobile Chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/devtools/devtools_adb_bridge.cc ('k') | chrome/browser/ui/webui/inspect_ui.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 function inspect(data) { 5 function inspect(data) {
6 chrome.send('inspect', [data]); 6 chrome.send('inspect', [data]);
7 } 7 }
8 8
9 function terminate(data) { 9 function terminate(data) {
10 chrome.send('terminate', [data]); 10 chrome.send('terminate', [data]);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 return; 89 return;
90 90
91 function alreadyDisplayed(element, data) { 91 function alreadyDisplayed(element, data) {
92 var json = JSON.stringify(data); 92 var json = JSON.stringify(data);
93 if (element.cachedJSON == json) 93 if (element.cachedJSON == json)
94 return true; 94 return true;
95 element.cachedJSON = json; 95 element.cachedJSON = json;
96 return false; 96 return false;
97 } 97 }
98 98
99 function insertChildSortedById(parent, child) {
100 for (var sibling = parent.firstElementChild;
101 sibling;
102 sibling = sibling.nextElementSibling) {
103 if (sibling.id > child.id) {
104 parent.insertBefore(child, sibling);
105 return;
106 }
107 }
108 parent.appendChild(child);
109 }
110
99 var deviceList = $('devices'); 111 var deviceList = $('devices');
100 if (alreadyDisplayed(deviceList, devices)) 112 if (alreadyDisplayed(deviceList, devices))
101 return; 113 return;
102 114
103 function removeObsolete(validIds, section) { 115 function removeObsolete(validIds, section) {
104 if (validIds.indexOf(section.id) < 0) 116 if (validIds.indexOf(section.id) < 0)
105 section.remove(); 117 section.remove();
106 } 118 }
107 119
108 var newDeviceIds = devices.map(function(d) { return d.adbGlobalId }); 120 var newDeviceIds = devices.map(function(d) { return d.adbGlobalId });
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 190
179 var newBrowserIds = 191 var newBrowserIds =
180 device.browsers.map(function(b) { return b.adbGlobalId }); 192 device.browsers.map(function(b) { return b.adbGlobalId });
181 Array.prototype.forEach.call( 193 Array.prototype.forEach.call(
182 browserList.querySelectorAll('.browser'), 194 browserList.querySelectorAll('.browser'),
183 removeObsolete.bind(null, newBrowserIds)); 195 removeObsolete.bind(null, newBrowserIds));
184 196
185 for (var b = 0; b < device.browsers.length; b++) { 197 for (var b = 0; b < device.browsers.length; b++) {
186 var browser = device.browsers[b]; 198 var browser = device.browsers[b];
187 199
200 var isChrome = browser.adbBrowserProduct &&
201 browser.adbBrowserProduct.match(/^Chrome/);
202
188 var pageList; 203 var pageList;
189 var browserSection = $(browser.adbGlobalId); 204 var browserSection = $(browser.adbGlobalId);
190 if (browserSection) { 205 if (browserSection) {
191 pageList = browserSection.querySelector('.pages'); 206 pageList = browserSection.querySelector('.pages');
192 } else { 207 } else {
193 browserSection = document.createElement('div'); 208 browserSection = document.createElement('div');
194 browserSection.id = browser.adbGlobalId; 209 browserSection.id = browser.adbGlobalId;
195 browserSection.className = 'browser'; 210 browserSection.className = 'browser';
196 browserList.appendChild(browserSection); 211 insertChildSortedById(browserList, browserSection);
197 212
198 var browserHeader = document.createElement('div'); 213 var browserHeader = document.createElement('div');
199 browserHeader.className = 'browser-header'; 214 browserHeader.className = 'browser-header';
200 browserHeader.textContent = browser.adbBrowserName; 215 browserHeader.textContent = browser.adbBrowserProduct;
216 var majorChromeVersion = 0;
217 if (browser.adbBrowserVersion) {
218 browserHeader.textContent += ' (' + browser.adbBrowserVersion + ')';
219 if (isChrome) {
220 var match = browser.adbBrowserVersion.match(/^(\d+)/);
221 if (match)
222 majorChromeVersion = parseInt(match[1]);
223 }
224 }
201 browserSection.appendChild(browserHeader); 225 browserSection.appendChild(browserHeader);
202 226
203 var newPage = document.createElement('div'); 227 if (majorChromeVersion >= 29) {
204 newPage.className = 'open'; 228 var newPage = document.createElement('div');
229 newPage.className = 'open';
205 230
206 var newPageUrl = document.createElement('input'); 231 var newPageUrl = document.createElement('input');
207 newPageUrl.type = 'text'; 232 newPageUrl.type = 'text';
208 newPageUrl.placeholder = 'Open tab with url'; 233 newPageUrl.placeholder = 'Open tab with url';
209 newPage.appendChild(newPageUrl); 234 newPage.appendChild(newPageUrl);
210 235
211 var openHandler = function(browserId, input) { 236 var openHandler = function(browserId, input) {
212 open(browserId, input.value || 'about:blank'); 237 open(browserId, input.value || 'about:blank');
213 input.value = ''; 238 input.value = '';
214 }.bind(null, browser.adbGlobalId, newPageUrl); 239 }.bind(null, browser.adbGlobalId, newPageUrl);
215 newPageUrl.addEventListener('keyup', function(handler, event) { 240 newPageUrl.addEventListener('keyup', function(handler, event) {
216 if (event.keyIdentifier == 'Enter' && event.target.value) 241 if (event.keyIdentifier == 'Enter' && event.target.value)
217 handler(); 242 handler();
218 }.bind(null, openHandler), true); 243 }.bind(null, openHandler), true);
219 244
220 var newPageButton = document.createElement('button'); 245 var newPageButton = document.createElement('button');
221 newPageButton.textContent = 'Open'; 246 newPageButton.textContent = 'Open';
222 newPage.appendChild(newPageButton); 247 newPage.appendChild(newPageButton);
223 newPageButton.addEventListener('click', openHandler, true); 248 newPageButton.addEventListener('click', openHandler, true);
224 249
225 browserSection.appendChild(newPage); 250 browserSection.appendChild(newPage);
251 }
226 252
227 pageList = document.createElement('div'); 253 pageList = document.createElement('div');
228 pageList.className = 'list pages'; 254 pageList.className = 'list pages';
229 browserSection.appendChild(pageList); 255 browserSection.appendChild(pageList);
230 } 256 }
231 257
232 if (alreadyDisplayed(browserSection, browser)) 258 if (alreadyDisplayed(browserSection, browser))
233 continue; 259 continue;
234 260
235 pageList.textContent = ''; 261 pageList.textContent = '';
236 for (var p = 0; p < browser.pages.length; p++) { 262 for (var p = 0; p < browser.pages.length; p++) {
237 var page = browser.pages[p]; 263 var page = browser.pages[p];
238 var row = addTargetToList( 264 var row = addTargetToList(
239 page, pageList, ['faviconUrl', 'name', 'url']); 265 page, pageList, ['faviconUrl', 'name', 'url']);
240 row.appendChild(createActionLink( 266 if (isChrome) {
241 'reload', reload.bind(null, page), page.attached)); 267 row.appendChild(createActionLink(
242 row.appendChild(createActionLink( 268 'reload', reload.bind(null, page), page.attached));
243 'close', terminate.bind(null, page), page.attached)); 269 row.appendChild(createActionLink(
270 'close', terminate.bind(null, page), page.attached));
271 }
244 } 272 }
245 } 273 }
246 } 274 }
247 } 275 }
248 276
249 function addToPagesList(data) { 277 function addToPagesList(data) {
250 addTargetToList(data, $('pages'), ['faviconUrl', 'name', 'url']); 278 addTargetToList(data, $('pages'), ['faviconUrl', 'name', 'url']);
251 } 279 }
252 280
253 function addToExtensionsList(data) { 281 function addToExtensionsList(data) {
(...skipping 10 matching lines...) Expand all
264 'terminate', terminate.bind(null, data), data.attached)); 292 'terminate', terminate.bind(null, data), data.attached));
265 } 293 }
266 294
267 function addToOthersList(data) { 295 function addToOthersList(data) {
268 addTargetToList(data, $('others'), ['url']); 296 addTargetToList(data, $('others'), ['url']);
269 } 297 }
270 298
271 function formatValue(data, property) { 299 function formatValue(data, property) {
272 var value = data[property]; 300 var value = data[property];
273 301
302 if (property == 'name' && value == '') {
303 value = 'untitled';
304 }
305
274 if (property == 'faviconUrl') { 306 if (property == 'faviconUrl') {
275 var faviconElement = document.createElement('img'); 307 var faviconElement = document.createElement('img');
276 if (value) 308 if (value)
277 faviconElement.src = value; 309 faviconElement.src = value;
278 return faviconElement; 310 return faviconElement;
279 } 311 }
280 312
281 var text = value ? String(value) : ''; 313 var text = value ? String(value) : '';
282 if (text.length > 100) 314 if (text.length > 100)
283 text = text.substring(0, 100) + '\u2026'; 315 text = text.substring(0, 100) + '\u2026';
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 if (line.querySelector('.invalid')) 576 if (line.querySelector('.invalid'))
545 return; 577 return;
546 line.classList.remove('fresh'); 578 line.classList.remove('fresh');
547 var freshLine = createEmptyConfigLine(); 579 var freshLine = createEmptyConfigLine();
548 line.parentNode.appendChild(freshLine); 580 line.parentNode.appendChild(freshLine);
549 if (opt_selectNew) 581 if (opt_selectNew)
550 freshLine.querySelector('.port').focus(); 582 freshLine.querySelector('.port').focus();
551 } 583 }
552 584
553 document.addEventListener('DOMContentLoaded', onload); 585 document.addEventListener('DOMContentLoaded', onload);
OLDNEW
« no previous file with comments | « chrome/browser/devtools/devtools_adb_bridge.cc ('k') | chrome/browser/ui/webui/inspect_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698