Chromium Code Reviews| Index: ui/file_manager/video_player/js/cast/cast_extension_discoverer.js |
| diff --git a/ui/file_manager/video_player/js/cast/cast_extension_discoverer.js b/ui/file_manager/video_player/js/cast/cast_extension_discoverer.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..60fe773f2c31405218030a5f6014b8cbc5ca35b8 |
| --- /dev/null |
| +++ b/ui/file_manager/video_player/js/cast/cast_extension_discoverer.js |
| @@ -0,0 +1,81 @@ |
| +cofgocippekhfcmgfj - / Copyright 2014 The Chromium Authors. All rights reserved. |
|
fukino
2014/07/11 04:35:50
seems leading dust?
|
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +'use strict'; |
| + |
| +/** |
| + * Discover the ID of installed cast extesnion. |
| + * @constructor |
| + */ |
| +function CastExtensionDiscoverer() { |
| +} |
| + |
| +/** |
| + * Tentatice IDs to try. |
| + * @type {Array.<string>} |
| + * @const |
| + */ |
| +CastExtensionDiscoverer.CAST_EXTENSION_IDS = [ |
| + 'boadgeojelhgndaghljhdicfkmllpafd', // release |
| + 'dliochdbjfkdbacpmhlcpmleaejidimm', // beta |
| + 'hfaagokkkhdbgiakmmlclaapfelnkoah', |
| + 'fmfcbgogabcbclcofgocippekhfcmgfj', |
| + 'enhhojjnijigcajfphajepfemndkmdlo' |
| +]; |
| + |
| +/** |
| + * @param {function(string)} callback Callback called with the extension ID. The |
| + * ID may be null if extension is not found. |
| + */ |
| +CastExtensionDiscoverer.findInstalledExtension = function(callback) { |
| + CastExtensionDiscoverer.findInstalledExtensionHelper_(0, callback); |
| +}; |
| + |
| +/** |
| + * @param {number} index Current index which is tried to check. |
| + * @param {function(string)} callback Callback function which will be called |
| + * the extension is found. |
| + */ |
| +CastExtensionDiscoverer.findInstalledExtensionHelper_ = function(index, |
| + callback) { |
| + if (index == CastExtensionDiscoverer.CAST_EXTENSION_IDS.length) { |
|
fukino
2014/07/11 04:35:50
nit: seems '===' can be used
|
| + // no extension found. |
| + callback(null); |
| + return; |
| + } |
| + |
| + CastExtensionDiscoverer.isExtensionInstalled_( |
| + CastExtensionDiscoverer.CAST_EXTENSION_IDS[index], |
| + function(installed) { |
| + if (installed) { |
| + callback(CastExtensionDiscoverer.CAST_EXTENSION_IDS[index]); |
| + } else { |
| + CastExtensionDiscoverer.findInstalledExtensionHelper_(index + 1, |
| + callback); |
| + } |
| + }); |
| +}; |
| + |
| +/** |
| + * The result will be notified on |callback|. True if installed, false not. |
| + * @param {string} extensionId Id to be checked. |
| + * @param {function(boolean)} callback Callback to notify the result. |
| + */ |
| +CastExtensionDiscoverer.isExtensionInstalled_ = |
| + function(extensionId, callback) { |
| + |
| + var responseCallback = |
| + /** @param {*} response */ |
| + function(response) { |
| + if (chrome.runtime.lastError || response === false) { |
| + // An error occurred while sending the message. |
| + callback(false); |
| + } else { |
| + // Cast extension found. |
| + callback(true); |
| + } |
| + }.wrap(this); |
| + |
| + chrome.runtime.sendMessage(extensionId, {}, responseCallback); |
| +}; |