Chromium Code Reviews| 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); |