 Chromium Code Reviews
 Chromium Code Reviews Issue 9724038:
  DevTools: convert about:workers into about:inspect  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 9724038:
  DevTools: convert about:workers into about:inspect  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| Index: chrome/browser/resources/inspect/inspect.js | 
| diff --git a/chrome/browser/resources/inspect/inspect.js b/chrome/browser/resources/inspect/inspect.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..be0428f7611eac443a470872427c7b8bcfc501f4 | 
| --- /dev/null | 
| +++ b/chrome/browser/resources/inspect/inspect.js | 
| @@ -0,0 +1,133 @@ | 
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| 
yurys
2012/03/20 12:42:06
2012
 
pfeldman
2012/03/20 13:22:10
Done.
 | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +function requestData() { | 
| + var xhr = new XMLHttpRequest(); | 
| + xhr.open('GET', 'targets-data.json', false); | 
| + xhr.send(null); | 
| + if (xhr.status === 200) | 
| + return JSON.parse(xhr.responseText); | 
| 
csilv
2012/03/20 18:22:02
nit: 2 space indent
 
pfeldman
2012/03/20 19:18:47
Done.
 | 
| + return []; | 
| +} | 
| + | 
| +function inspect(data) { | 
| + chrome.send('inspect', | 
| + [String(data.processId), String(data.routeId)]); | 
| +} | 
| + | 
| +function terminate(data) { | 
| + chrome.send('terminate', | 
| + [String(data.processId), String(data.routeId)]); | 
| +} | 
| + | 
| +function removeChildren(element_id) { | 
| + var element = document.getElementById(element_id); | 
| + element.textContent = ''; | 
| +} | 
| + | 
| +function populateLists() { | 
| + var data = requestData(); | 
| + | 
| + removeChildren('pages'); | 
| + removeChildren('extensions'); | 
| + removeChildren('workers'); | 
| + removeChildren('others'); | 
| + | 
| + for (var i = 0; i < data.length; i++) { | 
| + if (data[i].type === 'page') | 
| + addToPagesList(data[i]); | 
| + else if (data[i].type === 'worker') | 
| + addToWorkersList(data[i]); | 
| + else if (data[i].type === 'extension') | 
| + addToExtensionsList(data[i]); | 
| + else | 
| + addToOthersList(data[i]); | 
| + } | 
| +} | 
| + | 
| +function addToPagesList(data) { | 
| + addTargetToList(data, 'pages', ['favicon_url', 'name', 'url']); | 
| +} | 
| + | 
| +function addToExtensionsList(data) { | 
| + addTargetToList(data, 'extensions', ['name', 'url']); | 
| +} | 
| + | 
| +function addToWorkersList(data) { | 
| + addTargetToList(data, | 
| + 'workers', | 
| + ['name', 'url', 'pid'], | 
| + true); | 
| +} | 
| + | 
| +function addToOthersList(data) { | 
| + addTargetToList(data, 'others', ['url']); | 
| +} | 
| + | 
| +function formatValue(data, property) { | 
| + var value = data[property]; | 
| + | 
| + if (property == 'favicon_url') { | 
| + var faviconElement = document.createElement('img'); | 
| + if (value) | 
| + faviconElement.src = value; | 
| + return faviconElement; | 
| + } | 
| + | 
| + var text = value ? String(value) : ''; | 
| + if (text.length > 100) | 
| + text = text.substring(0, 100) + '\u2026'; | 
| + | 
| + if (property == 'pid') | 
| + text = 'Pid:' + text; | 
| + | 
| + var span = document.createElement('span'); | 
| + span.textContent = ' ' + text + ' '; | 
| + span.className = property; | 
| + return span; | 
| +} | 
| + | 
| +function addTargetToList(data, listId, properties, canTerminate) { | 
| + var list = document.getElementById(listId); | 
| + var row = document.createElement('div'); | 
| + row.className = 'row'; | 
| + for (var j = 0; j < properties.length; j++) | 
| + row.appendChild(formatValue(data, properties[j])); | 
| + | 
| + row.appendChild(createInspectElement(data)); | 
| + if (canTerminate) | 
| + row.appendChild(createTerminateElement(data)); | 
| + | 
| + row.processId = data.processId; | 
| + row.routeId = data.routeId; | 
| + | 
| + list.appendChild(row); | 
| +} | 
| + | 
| +function createInspectElement(data) { | 
| + var link = document.createElement('a'); | 
| + link.setAttribute('href', '#'); | 
| + link.textContent = ' inspect '; | 
| + link.addEventListener( | 
| + 'click', | 
| + inspect.bind(this, data), | 
| + true); | 
| + return link; | 
| +} | 
| + | 
| +function createTerminateElement(data) { | 
| + var link = document.createElement('a'); | 
| + if (data.attached) | 
| + link.disabled = true; | 
| + | 
| + link.setAttribute('href', '#'); | 
| + link.textContent = ' terminate '; | 
| + link.addEventListener( | 
| + 'click', | 
| + terminate.bind(this, data), | 
| + true); | 
| + return link; | 
| +} | 
| + | 
| +document.addEventListener('DOMContentLoaded', populateLists); |