Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(733)

Unified Diff: chrome/common/extensions/docs/examples/api/displaySource/tabCast/main.js

Issue 1812813002: [chrome.displaySource] Add example extension (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..b6eae381399315c4c5b3f96ba7748a4f3e3f03d4
--- /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 (sink of sinks) {
asargent_no_longer_on_chrome 2016/03/17 19:24:29 nit: please use 'let sink of sinks' to avoid leavi
+ 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) };
+}
+

Powered by Google App Engine
This is Rietveld 408576698