OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 chrome.runtime.sendMessage({ browserActionClicked : true }, function(response) { | |
6 var deviceList = response.returnDeviceList; | |
7 var backgroundPage = chrome.extension.getBackgroundPage(); | |
8 createButtonList(deviceList, backgroundPage); | |
9 }); | |
10 | |
11 chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { | |
12 var deviceButton = document.getElementById(message.currentSinkId); | |
13 var backgroundPage = chrome.extension.getBackgroundPage(); | |
14 | |
15 if (message.sinksUpdated) { | |
16 var sinks = message.sinksList; | |
17 var changedSink = null; | |
18 | |
19 for (sink of sinks) { | |
asargent_no_longer_on_chrome
2016/03/17 19:24:29
nit: please use 'let sink of sinks' to avoid leavi
| |
20 if (sink.id == message.currentSinkId) { | |
21 changedSink = sink; | |
22 } | |
23 } | |
24 | |
25 if (!changedSink) { | |
26 console.error('Failed to find sink: ' + message.currentSinkId); | |
27 return; | |
28 } | |
29 | |
30 if (changedSink.state == 'Connecting') { | |
31 changeButtonState(deviceButton, 'connecting', backgroundPage.Stop); | |
32 } else if (changedSink.state == 'Connected') { | |
33 changeButtonState(deviceButton, 'connected', backgroundPage.Stop); | |
34 } | |
35 } else if (message.sessionTerminated) { | |
36 changeButtonState(deviceButton, 'disconnected', backgroundPage.Start); | |
37 } | |
38 }); | |
39 | |
40 function createButtonList(deviceList, backgroundPage) { | |
41 var divElement = document.getElementById('deviceList'); | |
42 if (!deviceList || !deviceList.length) { | |
43 var errorMessage = document.createTextNode('No available ' | |
44 + 'sink devices found'); | |
45 divElement.appendChild(errorMessage); | |
46 return; | |
47 } | |
48 | |
49 deviceList.forEach(function(device) { | |
50 if (!document.getElementById(device.id)) { | |
51 var deviceButton = document.createElement('input'); | |
52 | |
53 deviceButton.type = 'button'; | |
54 deviceButton.value = device.name; | |
55 deviceButton.id = device.id; | |
56 | |
57 if (device.state == 'Disconnected') { | |
58 changeButtonState(deviceButton, 'disconnected', backgroundPage.Start); | |
59 } else if (device.state == 'Connecting') { | |
60 changeButtonState(deviceButton, 'connecting', backgroundPage.Stop); | |
61 } else if (device.state == 'Connected') { | |
62 changeButtonState(deviceButton, 'connected', backgroundPage.Stop); | |
63 } else { | |
64 console.error('Unexpected sink state.'); | |
65 return; | |
66 } | |
67 | |
68 divElement.appendChild(deviceButton); | |
69 } | |
70 }); | |
71 } | |
72 | |
73 function changeButtonState(button, styleName, method) { | |
74 button.className = styleName; | |
75 var sinkId = parseInt(button.id); | |
76 button.onclick = function() { method(sinkId) }; | |
77 } | |
78 | |
OLD | NEW |