Chromium Code Reviews| 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 |