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 |