| OLD | NEW |
| 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 var MIN_VERSION_TAB_CLOSE = 25; | 5 var MIN_VERSION_TAB_CLOSE = 25; |
| 6 var MIN_VERSION_TARGET_ID = 26; | 6 var MIN_VERSION_TARGET_ID = 26; |
| 7 var MIN_VERSION_NEW_TAB = 29; | 7 var MIN_VERSION_NEW_TAB = 29; |
| 8 var MIN_VERSION_TAB_ACTIVATE = 30; | 8 var MIN_VERSION_TAB_ACTIVATE = 30; |
| 9 | 9 |
| 10 var queryParamsObject = {}; | 10 var queryParamsObject = {}; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 })(); | 22 })(); |
| 23 | 23 |
| 24 function sendCommand(command, args) { | 24 function sendCommand(command, args) { |
| 25 chrome.send(command, Array.prototype.slice.call(arguments, 1)); | 25 chrome.send(command, Array.prototype.slice.call(arguments, 1)); |
| 26 } | 26 } |
| 27 | 27 |
| 28 function sendTargetCommand(command, target) { | 28 function sendTargetCommand(command, target) { |
| 29 sendCommand(command, target.source, target.id); | 29 sendCommand(command, target.source, target.id); |
| 30 } | 30 } |
| 31 | 31 |
| 32 function sendServiceWorkerCommand(action, worker) { | |
| 33 $('serviceworker-internals').contentWindow.postMessage({ | |
| 34 'action': action, | |
| 35 'worker': worker | |
| 36 },'chrome://serviceworker-internals'); | |
| 37 } | |
| 38 | |
| 39 function removeChildren(element_id) { | 32 function removeChildren(element_id) { |
| 40 var element = $(element_id); | 33 var element = $(element_id); |
| 41 element.textContent = ''; | 34 element.textContent = ''; |
| 42 } | 35 } |
| 43 | 36 |
| 44 function onload() { | 37 function onload() { |
| 45 var tabContents = document.querySelectorAll('#content > div'); | 38 var tabContents = document.querySelectorAll('#content > div'); |
| 46 for (var i = 0; i != tabContents.length; i++) { | 39 for (var i = 0; i != tabContents.length; i++) { |
| 47 var tabContent = tabContents[i]; | 40 var tabContent = tabContents[i]; |
| 48 var tabName = tabContent.querySelector('.content-header').textContent; | 41 var tabName = tabContent.querySelector('.content-header').textContent; |
| 49 | 42 |
| 50 var tabHeader = document.createElement('div'); | 43 var tabHeader = document.createElement('div'); |
| 51 tabHeader.className = 'tab-header'; | 44 tabHeader.className = 'tab-header'; |
| 52 var button = document.createElement('button'); | 45 var button = document.createElement('button'); |
| 53 button.textContent = tabName; | 46 button.textContent = tabName; |
| 54 tabHeader.appendChild(button); | 47 tabHeader.appendChild(button); |
| 55 tabHeader.addEventListener('click', selectTab.bind(null, tabContent.id)); | 48 tabHeader.addEventListener('click', selectTab.bind(null, tabContent.id)); |
| 56 $('navigation').appendChild(tabHeader); | 49 $('navigation').appendChild(tabHeader); |
| 57 } | 50 } |
| 58 onHashChange(); | 51 onHashChange(); |
| 59 initSettings(); | 52 initSettings(); |
| 60 sendCommand('init-ui'); | 53 sendCommand('init-ui'); |
| 61 window.addEventListener('message', onMessage.bind(this), false); | |
| 62 } | |
| 63 | |
| 64 function onMessage(event) { | |
| 65 if (event.origin != 'chrome://serviceworker-internals') { | |
| 66 return; | |
| 67 } | |
| 68 populateServiceWorkers(event.data.partition_id, | |
| 69 event.data.workers); | |
| 70 } | 54 } |
| 71 | 55 |
| 72 function onHashChange() { | 56 function onHashChange() { |
| 73 var hash = window.location.hash.slice(1).toLowerCase(); | 57 var hash = window.location.hash.slice(1).toLowerCase(); |
| 74 if (!selectTab(hash)) | 58 if (!selectTab(hash)) |
| 75 selectTab('devices'); | 59 selectTab('devices'); |
| 76 } | 60 } |
| 77 | 61 |
| 78 /** | 62 /** |
| 79 * @param {string} id Tab id. | 63 * @param {string} id Tab id. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 96 tabContent.classList.remove('selected'); | 80 tabContent.classList.remove('selected'); |
| 97 tabHeader.classList.remove('selected'); | 81 tabHeader.classList.remove('selected'); |
| 98 } | 82 } |
| 99 } | 83 } |
| 100 if (!found) | 84 if (!found) |
| 101 return false; | 85 return false; |
| 102 window.location.hash = id; | 86 window.location.hash = id; |
| 103 return true; | 87 return true; |
| 104 } | 88 } |
| 105 | 89 |
| 106 function populateServiceWorkers(partition_id, workers) { | |
| 107 var list = $('service-workers-list-' + partition_id); | |
| 108 if (workers.length == 0) { | |
| 109 if (list) { | |
| 110 list.parentNode.removeChild(list); | |
| 111 } | |
| 112 return; | |
| 113 } | |
| 114 if (list) { | |
| 115 list.textContent = ''; | |
| 116 } else { | |
| 117 list = document.createElement('div'); | |
| 118 list.id = 'service-workers-list-' + partition_id; | |
| 119 list.className = 'list'; | |
| 120 $('service-workers-list').appendChild(list); | |
| 121 } | |
| 122 for (var i = 0; i < workers.length; i++) { | |
| 123 var worker = workers[i]; | |
| 124 worker.hasCustomInspectAction = true; | |
| 125 var row = addTargetToList(worker, list, ['scope', 'url']); | |
| 126 addActionLink( | |
| 127 row, | |
| 128 'inspect', | |
| 129 sendServiceWorkerCommand.bind(null, 'inspect', worker), | |
| 130 false); | |
| 131 addActionLink( | |
| 132 row, | |
| 133 'terminate', | |
| 134 sendServiceWorkerCommand.bind(null, 'stop', worker), | |
| 135 false); | |
| 136 } | |
| 137 } | |
| 138 | |
| 139 function populateTargets(source, data) { | 90 function populateTargets(source, data) { |
| 140 if (source == 'local') | 91 if (source == 'local') |
| 141 populateLocalTargets(data); | 92 populateLocalTargets(data); |
| 142 else if (source == 'remote') | 93 else if (source == 'remote') |
| 143 populateRemoteTargets(data); | 94 populateRemoteTargets(data); |
| 144 else | 95 else |
| 145 console.error('Unknown source type: ' + source); | 96 console.error('Unknown source type: ' + source); |
| 146 } | 97 } |
| 147 | 98 |
| 148 function populateLocalTargets(data) { | 99 function populateLocalTargets(data) { |
| 149 removeChildren('pages-list'); | 100 removeChildren('pages-list'); |
| 150 removeChildren('extensions-list'); | 101 removeChildren('extensions-list'); |
| 151 removeChildren('apps-list'); | 102 removeChildren('apps-list'); |
| 152 removeChildren('others-list'); | 103 removeChildren('others-list'); |
| 153 removeChildren('workers-list'); | 104 removeChildren('workers-list'); |
| 105 removeChildren('service-workers-list'); |
| 154 | 106 |
| 155 for (var i = 0; i < data.length; i++) { | 107 for (var i = 0; i < data.length; i++) { |
| 156 if (data[i].type === 'page') | 108 if (data[i].type === 'page') |
| 157 addToPagesList(data[i]); | 109 addToPagesList(data[i]); |
| 158 else if (data[i].type === 'background_page') | 110 else if (data[i].type === 'background_page') |
| 159 addToExtensionsList(data[i]); | 111 addToExtensionsList(data[i]); |
| 160 else if (data[i].type === 'app') | 112 else if (data[i].type === 'app') |
| 161 addToAppsList(data[i]); | 113 addToAppsList(data[i]); |
| 162 else if (data[i].type === 'worker') | 114 else if (data[i].type === 'worker') |
| 163 addToWorkersList(data[i]); | 115 addToWorkersList(data[i]); |
| 116 else if (data[i].type === 'service_worker') |
| 117 addToServiceWorkersList(data[i]); |
| 164 else | 118 else |
| 165 addToOthersList(data[i]); | 119 addToOthersList(data[i]); |
| 166 } | 120 } |
| 167 } | 121 } |
| 168 | 122 |
| 169 function showIncognitoWarning() { | 123 function showIncognitoWarning() { |
| 170 $('devices-incognito').hidden = false; | 124 $('devices-incognito').hidden = false; |
| 171 } | 125 } |
| 172 | 126 |
| 173 function populateRemoteTargets(devices) { | 127 function populateRemoteTargets(devices) { |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 }); | 369 }); |
| 416 } | 370 } |
| 417 | 371 |
| 418 function addToWorkersList(data) { | 372 function addToWorkersList(data) { |
| 419 var row = | 373 var row = |
| 420 addTargetToList(data, $('workers-list'), ['name', 'description', 'url']); | 374 addTargetToList(data, $('workers-list'), ['name', 'description', 'url']); |
| 421 addActionLink(row, 'terminate', | 375 addActionLink(row, 'terminate', |
| 422 sendTargetCommand.bind(null, 'close', data), false); | 376 sendTargetCommand.bind(null, 'close', data), false); |
| 423 } | 377 } |
| 424 | 378 |
| 379 function addToServiceWorkersList(data) { |
| 380 var row = addTargetToList( |
| 381 data, $('service-workers-list'), ['name', 'description', 'url']); |
| 382 addActionLink(row, 'terminate', |
| 383 sendTargetCommand.bind(null, 'close', data), false); |
| 384 } |
| 385 |
| 425 function addToOthersList(data) { | 386 function addToOthersList(data) { |
| 426 addTargetToList(data, $('others-list'), ['url']); | 387 addTargetToList(data, $('others-list'), ['url']); |
| 427 } | 388 } |
| 428 | 389 |
| 429 function formatValue(data, property) { | 390 function formatValue(data, property) { |
| 430 var value = data[property]; | 391 var value = data[property]; |
| 431 | 392 |
| 432 if (property == 'name' && value == '') { | 393 if (property == 'name' && value == '') { |
| 433 value = 'untitled'; | 394 value = 'untitled'; |
| 434 } | 395 } |
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 933 deviceSection.querySelector('.device-ports').textContent = ''; | 894 deviceSection.querySelector('.device-ports').textContent = ''; |
| 934 } | 895 } |
| 935 | 896 |
| 936 Array.prototype.forEach.call( | 897 Array.prototype.forEach.call( |
| 937 document.querySelectorAll('.device'), clearPorts); | 898 document.querySelectorAll('.device'), clearPorts); |
| 938 } | 899 } |
| 939 | 900 |
| 940 document.addEventListener('DOMContentLoaded', onload); | 901 document.addEventListener('DOMContentLoaded', onload); |
| 941 | 902 |
| 942 window.addEventListener('hashchange', onHashChange); | 903 window.addEventListener('hashchange', onHashChange); |
| OLD | NEW |