OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 cr.define('serviceworker', function() { | 5 cr.define('serviceworker', function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 function initialize() { | |
9 if (window.location.hash == "#iframe") { | |
10 // This page is loaded from chrome://inspect. | |
11 window.addEventListener('message', onMessage.bind(this), false); | |
12 } | |
13 update(); | |
14 } | |
15 | |
16 function onMessage(event) { | |
17 if (event.origin != 'chrome://inspect') { | |
18 return; | |
19 } | |
20 chrome.send(event.data.action, | |
21 [event.data.partition_path, event.data.scope]); | |
22 } | |
23 | |
8 function update() { | 24 function update() { |
9 chrome.send('getAllRegistrations'); | 25 chrome.send('getAllRegistrations'); |
10 } | 26 } |
11 | 27 |
12 function progressNodeFor(link) { | 28 function progressNodeFor(link) { |
13 return link.parentNode.querySelector('.operation-status'); | 29 return link.parentNode.querySelector('.operation-status'); |
14 } | 30 } |
15 | 31 |
16 // All commands are sent with the partition_path and scope, and | 32 // All commands are sent with the partition_path and scope, and |
17 // are all completed with 'onOperationComplete'. | 33 // are all completed with 'onOperationComplete'. |
(...skipping 23 matching lines...) Expand all Loading... | |
41 function onOperationComplete(status, path, scope) { | 57 function onOperationComplete(status, path, scope) { |
42 // refreshes the ui, displaying any relevant buttons | 58 // refreshes the ui, displaying any relevant buttons |
43 withNode('button', path, scope, function(link) { | 59 withNode('button', path, scope, function(link) { |
44 progressNodeFor(link).style.display = 'none'; | 60 progressNodeFor(link).style.display = 'none'; |
45 }); | 61 }); |
46 update(); | 62 update(); |
47 } | 63 } |
48 | 64 |
49 var allLogMessages = {}; | 65 var allLogMessages = {}; |
50 | 66 |
67 // Send the active ServiceWorker information to chrome://inspect. | |
68 function sendToInspectPage(registrations, partition_id, partition_path) { | |
69 var workers = []; | |
70 for (var i = 0; i < registrations.length; i++) { | |
71 var registration = registrations[i]; | |
72 if (!registration.active || | |
73 registration.active.running_status != 'RUNNING') { | |
kinuko
2014/05/23 14:19:33
How are we going to do for inspecting pending (in-
horo
2014/05/23 14:37:09
I'm planing to make another cl to support inspecti
| |
74 continue; | |
75 } | |
76 workers.push({ | |
77 'partition_path': partition_path, | |
78 'scope': registration['scope'], | |
79 'url': registration['script_url'] | |
kinuko
2014/05/23 14:19:33
nit: mixing up registration.foo and registration['
horo
2014/05/23 14:37:09
Done.
| |
80 }) | |
81 } | |
82 window.parent.postMessage({ | |
83 'partition_id': partition_id, | |
84 'workers': workers, | |
85 }, 'chrome://inspect') | |
86 } | |
87 | |
51 // Fired once per partition from the backend. | 88 // Fired once per partition from the backend. |
52 function onPartitionData(registrations, partition_id, partition_path) { | 89 function onPartitionData(registrations, partition_id, partition_path) { |
90 if (window.location.hash == "#iframe") { | |
91 // This page is loaded from chrome://inspect. | |
92 sendToInspectPage(registrations, partition_id, partition_path); | |
93 return; | |
94 } | |
53 var template; | 95 var template; |
54 var container = $('serviceworker-list'); | 96 var container = $('serviceworker-list'); |
55 | 97 |
56 // Existing templates are keyed by partition_path. This allows | 98 // Existing templates are keyed by partition_path. This allows |
57 // the UI to be updated in-place rather than refreshing the | 99 // the UI to be updated in-place rather than refreshing the |
58 // whole page. | 100 // whole page. |
59 for (var i = 0; i < container.childNodes.length; ++i) { | 101 for (var i = 0; i < container.childNodes.length; ++i) { |
60 if (container.childNodes[i].partition_path == partition_path) { | 102 if (container.childNodes[i].partition_path == partition_path) { |
61 template = container.childNodes[i]; | 103 template = container.childNodes[i]; |
62 } | 104 } |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
157 for (var i = 0; i < logAreas.length; ++i) { | 199 for (var i = 0; i < logAreas.length; ++i) { |
158 var logArea = logAreas[i]; | 200 var logArea = logAreas[i]; |
159 if (logArea.partition_id == partition_id && | 201 if (logArea.partition_id == partition_id && |
160 logArea.version_id == version_id) { | 202 logArea.version_id == version_id) { |
161 logArea.value += message; | 203 logArea.value += message; |
162 } | 204 } |
163 } | 205 } |
164 } | 206 } |
165 | 207 |
166 return { | 208 return { |
209 initialize: initialize, | |
167 update: update, | 210 update: update, |
168 onOperationComplete: onOperationComplete, | 211 onOperationComplete: onOperationComplete, |
169 onPartitionData: onPartitionData, | 212 onPartitionData: onPartitionData, |
170 onWorkerStarted: onWorkerStarted, | 213 onWorkerStarted: onWorkerStarted, |
171 onWorkerStopped: onWorkerStopped, | 214 onWorkerStopped: onWorkerStopped, |
172 onErrorReported: onErrorReported, | 215 onErrorReported: onErrorReported, |
173 onConsoleMessageReported: onConsoleMessageReported, | 216 onConsoleMessageReported: onConsoleMessageReported, |
174 onVersionStateChanged: onVersionStateChanged, | 217 onVersionStateChanged: onVersionStateChanged, |
175 onRegistrationStored: onRegistrationStored, | 218 onRegistrationStored: onRegistrationStored, |
176 onRegistrationDeleted: onRegistrationDeleted, | 219 onRegistrationDeleted: onRegistrationDeleted, |
177 }; | 220 }; |
178 }); | 221 }); |
179 | 222 |
180 document.addEventListener('DOMContentLoaded', serviceworker.update); | 223 document.addEventListener('DOMContentLoaded', serviceworker.initialize); |
OLD | NEW |