mirror of
https://github.com/GoogleChrome/chrome-extensions-samples.git
synced 2026-03-27 13:29:34 +07:00
* Remove docs folder. This was a redirect from a GitHub pages site that does not appear to be in use. * Rename api folder to api-samples. * Move examples to functional-samples folder. * Move cookbook sample to functional-samples. * Move tutorials to functional-samples folder. * Move mv2 and apps folders to _archive. * Rename tools folder to .repo. * Move reference folder to functional-samples. * Update README. Update README with new relative links for reorg. * Update README.md Co-authored-by: amysteamdev <37001393+AmySteam@users.noreply.github.com> --------- Co-authored-by: amysteamdev <37001393+AmySteam@users.noreply.github.com>
79 lines
2.5 KiB
JavaScript
79 lines
2.5 KiB
JavaScript
// 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) };
|
|
}
|
|
|