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

Unified Diff: ui/file_manager/video_player/js/cast/cast_extension_discoverer.js

Issue 381073003: Video Player: Add a cast menu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed the comment Created 6 years, 5 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: 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..52fd53e178d952dc2774d6cb443aaa32e56ddbed
--- /dev/null
+++ b/ui/file_manager/video_player/js/cast/cast_extension_discoverer.js
@@ -0,0 +1,81 @@
+// Copyright 2014 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.
+
+'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) {
+ // 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);
+};
« no previous file with comments | « ui/file_manager/video_player/images/200/cast_on2.png ('k') | ui/file_manager/video_player/js/cast/caster.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698