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 (let sink of sinks) { |
| 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 |