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

Side by Side Diff: ui/file_manager/video_player/js/cast/caster.js

Issue 505043002: Files.app Test: check the cast icon in drive volume (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a test Created 6 years, 3 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
« no previous file with comments | « ui/file_manager/video_player/js/background.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 'use strict'; 5 'use strict';
6 6
7 // This hack prevents a bug on the cast extension. 7 // This hack prevents a bug on the cast extension.
8 // TODO(yoshiki): Remove this once the cast extension supports Chrome apps. 8 // TODO(yoshiki): Remove this once the cast extension supports Chrome apps.
9 // Although localStorage in Chrome app is not supported, but it's used in the 9 // Although localStorage in Chrome app is not supported, but it's used in the
10 // cast extension. This line prevents an exception on using localStorage. 10 // cast extension. This line prevents an exception on using localStorage.
11 window.__defineGetter__('localStorage', function() { return {}; }); 11 window.__defineGetter__('localStorage', function() { return {}; });
12 12
13 // THIS IS A TEST APP. 13 // THIS IS A TEST APP.
14 // TODO(yoshiki): Fix this before launch. 14 // TODO(yoshiki): Fix this before launch.
15 var APPLICATION_ID = '214CC863'; 15 var APPLICATION_ID = '214CC863';
16 16
17 util.addPageLoadHandler(function() { 17 util.addPageLoadHandler(function() {
18 initialize(); 18 initialize();
19 }.wrap()); 19 }.wrap());
20 20
21 /** 21 /**
22 * Starts initialization of cast-related feature. 22 * Starts initialization of cast-related feature.
23 */ 23 */
24 function initialize() { 24 function initialize() {
25 if (window.loadMockCastExtensionForTest) {
26 // If the test flag is set, the mock extension for test will be laoded by
27 // the test script. Sets the handler to wait for loading.
28 onLoadCastExtension(initializeApi);
29 return;
30 }
31
25 CastExtensionDiscoverer.findInstalledExtension(function(foundId) { 32 CastExtensionDiscoverer.findInstalledExtension(function(foundId) {
26 if (foundId) 33 if (foundId)
27 loadCastAPI(initializeApi); 34 loadCastAPI(initializeApi);
28 else 35 else
29 console.info('No Google Cast extension is installed.'); 36 console.info('No Google Cast extension is installed.');
30 }.wrap()); 37 }.wrap());
31 } 38 }
32 39
33 /** 40 /**
34 * Executes the given callback after the cast extension is initialized. 41 * Loads the cast API extention. If not install, the extension is installed
42 * in background before load. The cast API will load the cast SDK automatically.
43 * The given callback is executes after the cast SDK extension is initialized.
44 *
35 * @param {function} callback Callback (executed asynchronously). 45 * @param {function} callback Callback (executed asynchronously).
36 * @param {boolean=} opt_secondTry Spericy try if it's second call after 46 * @param {boolean=} opt_secondTry Spericy try if it's second call after
37 * installation of Cast API extension. 47 * installation of Cast API extension.
38 */ 48 */
39 function loadCastAPI(callback, opt_secondTry) { 49 function loadCastAPI(callback, opt_secondTry) {
40 var script = document.createElement('script'); 50 var script = document.createElement('script');
41 51
42 var onError = function() { 52 var onError = function() {
43 script.removeEventListener('error', onError); 53 script.removeEventListener('error', onError);
44 document.body.removeChild(script); 54 document.body.removeChild(script);
(...skipping 14 matching lines...) Expand all
59 chrome.runtime.lastError.message); 69 chrome.runtime.lastError.message);
60 return; 70 return;
61 } 71 }
62 72
63 console.info('Google Cast API extension installed.'); 73 console.info('Google Cast API extension installed.');
64 // Loads API again. 74 // Loads API again.
65 setTimeout(loadCastAPI.bind(null, callback, true)); 75 setTimeout(loadCastAPI.bind(null, callback, true));
66 }.wrap()); 76 }.wrap());
67 }.wrap(); 77 }.wrap();
68 78
69 var onLoad = function() { 79 // Trys to load the cast API extention which is defined in manifest.json.
70 if(!chrome.cast || !chrome.cast.isAvailable) {
71 var checkTimer = setTimeout(function() {
72 console.error('Either "Google Cast API" or "Google Cast" extension ' +
73 'seems not to be installed?');
74 }.wrap(), 5000);
75
76 window['__onGCastApiAvailable'] = function(loaded, errorInfo) {
77 clearTimeout(checkTimer);
78
79 if (loaded)
80 callback();
81 else
82 console.error('Google Cast extension load failed.', errorInfo);
83 }.wrap();
84 } else {
85 setTimeout(callback); // Runs asynchronously.
86 }
87 }.wrap();
88
89 script.src = '_modules/mafeflapfdfljijmlienjedomfjfmhpd/cast_sender.js'; 80 script.src = '_modules/mafeflapfdfljijmlienjedomfjfmhpd/cast_sender.js';
90 script.addEventListener('error', onError); 81 script.addEventListener('error', onError);
91 script.addEventListener('load', onLoad); 82 script.addEventListener('load', onLoadCastExtension.bind(null, callback));
92 document.body.appendChild(script); 83 document.body.appendChild(script);
93 } 84 }
94 85
95 /** 86 /**
87 * Loads the cast sdk extension.
88 * @param {function()} callback Callback (executed asynchronously).
89 */
90 function onLoadCastExtension(callback) {
91 if(!chrome.cast || !chrome.cast.isAvailable) {
92 var checkTimer = setTimeout(function() {
93 console.error('Either "Google Cast API" or "Google Cast" extension ' +
94 'seems not to be installed?');
95 }.wrap(), 5000);
96
97 window['__onGCastApiAvailable'] = function(loaded, errorInfo) {
98 clearTimeout(checkTimer);
99
100 if (loaded)
101 callback();
102 else
103 console.error('Google Cast extension load failed.', errorInfo);
104 }.wrap();
105 } else {
106 setTimeout(callback); // Runs asynchronously.
107 }
108 };
109
110 /**
96 * Initialize Cast API. 111 * Initialize Cast API.
97 */ 112 */
98 function initializeApi() { 113 function initializeApi() {
99 var onSession = function() { 114 var onSession = function() {
100 // TODO(yoshiki): Implement this. 115 // TODO(yoshiki): Implement this.
101 }; 116 };
102 117
103 var onInitSuccess = function() { 118 var onInitSuccess = function() {
104 // TODO(yoshiki): Implement this. 119 // TODO(yoshiki): Implement this.
105 }; 120 };
(...skipping 24 matching lines...) Expand all
130 } 145 }
131 146
132 player.setCastList(receivers); 147 player.setCastList(receivers);
133 } else if (availability == chrome.cast.ReceiverAvailability.UNAVAILABLE) { 148 } else if (availability == chrome.cast.ReceiverAvailability.UNAVAILABLE) {
134 player.setCastList([]); 149 player.setCastList([]);
135 } else { 150 } else {
136 console.error('Unexpected response in onReceiver.', arguments); 151 console.error('Unexpected response in onReceiver.', arguments);
137 player.setCastList([]); 152 player.setCastList([]);
138 } 153 }
139 } 154 }
OLDNEW
« no previous file with comments | « ui/file_manager/video_player/js/background.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698