| Index: chrome/common/extensions/docs/examples/api/displaySource/tabCast/main.js
|
| diff --git a/chrome/common/extensions/docs/examples/api/displaySource/tabCast/main.js b/chrome/common/extensions/docs/examples/api/displaySource/tabCast/main.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4b08b26ac57ccd89e7783d52da8e5b6c2a15db65
|
| --- /dev/null
|
| +++ b/chrome/common/extensions/docs/examples/api/displaySource/tabCast/main.js
|
| @@ -0,0 +1,78 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +chrome.runtime.sendMessage({ browserActionClicked : true }, function(response) {
|
| + var deviceList = response.returnDeviceList;
|
| + var backgroundPage = chrome.extension.getBackgroundPage();
|
| + createButtonList(deviceList, backgroundPage);
|
| +});
|
| +
|
| +chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
|
| + var deviceButton = document.getElementById(message.currentSinkId);
|
| + var backgroundPage = chrome.extension.getBackgroundPage();
|
| +
|
| + if (message.sinksUpdated) {
|
| + var sinks = message.sinksList;
|
| + var changedSink = null;
|
| +
|
| + for (let sink of sinks) {
|
| + if (sink.id == message.currentSinkId) {
|
| + changedSink = sink;
|
| + }
|
| + }
|
| +
|
| + if (!changedSink) {
|
| + console.error('Failed to find sink: ' + message.currentSinkId);
|
| + return;
|
| + }
|
| +
|
| + if (changedSink.state == 'Connecting') {
|
| + changeButtonState(deviceButton, 'connecting', backgroundPage.stop);
|
| + } else if (changedSink.state == 'Connected') {
|
| + changeButtonState(deviceButton, 'connected', backgroundPage.stop);
|
| + }
|
| + } else if (message.sessionTerminated) {
|
| + changeButtonState(deviceButton, 'disconnected', backgroundPage.start);
|
| + }
|
| +});
|
| +
|
| +function createButtonList(deviceList, backgroundPage) {
|
| + var divElement = document.getElementById('deviceList');
|
| + if (!deviceList || !deviceList.length) {
|
| + var errorMessage = document.createTextNode('No available '
|
| + + 'sink devices found');
|
| + divElement.appendChild(errorMessage);
|
| + return;
|
| + }
|
| +
|
| + deviceList.forEach(function(device) {
|
| + if (!document.getElementById(device.id)) {
|
| + var deviceButton = document.createElement('input');
|
| +
|
| + deviceButton.type = 'button';
|
| + deviceButton.value = device.name;
|
| + deviceButton.id = device.id;
|
| +
|
| + if (device.state == 'Disconnected') {
|
| + changeButtonState(deviceButton, 'disconnected', backgroundPage.start);
|
| + } else if (device.state == 'Connecting') {
|
| + changeButtonState(deviceButton, 'connecting', backgroundPage.stop);
|
| + } else if (device.state == 'Connected') {
|
| + changeButtonState(deviceButton, 'connected', backgroundPage.stop);
|
| + } else {
|
| + console.error('Unexpected sink state.');
|
| + return;
|
| + }
|
| +
|
| + divElement.appendChild(deviceButton);
|
| + }
|
| + });
|
| +}
|
| +
|
| +function changeButtonState(button, styleName, method) {
|
| + button.className = styleName;
|
| + var sinkId = parseInt(button.id);
|
| + button.onclick = function() { method(sinkId) };
|
| +}
|
| +
|
|
|