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

Side by Side 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: Fixes according to the review 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 unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698