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

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

Issue 443083002: Video Player: Check Cast extension before launching cast feature (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed the comment Created 6 years, 4 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
« no previous file with comments | « no previous file | ui/file_manager/video_player/js/cast/caster.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..e980e4ae2df0d22485f33ab53335b908e756e128
--- /dev/null
+++ b/ui/file_manager/video_player/js/cast/cast_extension_discoverer.js
@@ -0,0 +1,83 @@
+// 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.
+ * @private
+ */
+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.
+ * @private
+ */
+CastExtensionDiscoverer.isExtensionInstalled_ =
+ function(extensionId, callback) {
+
+ var xhr = new XMLHttpRequest();
+ var url = 'chrome-extension://' + extensionId + '/cast_sender.js';
+ xhr.open('GET', url, true);
+ xhr.onerror = function() { callback(false); };
+ xhr.onreadystatechange =
+ /** @param {*} response */
+ function(event) {
+ if (xhr.readyState == 4 && xhr.status === 200) {
+ // Cast extension found.
+ callback(true);
+ }
+ }.wrap(this);
+ xhr.send();
+};
« no previous file with comments | « no previous file | ui/file_manager/video_player/js/cast/caster.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698