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

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

Issue 806163003: Adds histograms for casting feature of Video Player Base URL: https://chromium.googlesource.com/chromium/src.git@2214
Patch Set: Created 6 years 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/caster.js
diff --git a/ui/file_manager/video_player/js/cast/caster.js b/ui/file_manager/video_player/js/cast/caster.js
index cf718e256da983d8af8aa5d4e9066e61f41f26f3..e4a0d5203ba442441cc582ed865588d09c015bd6 100644
--- a/ui/file_manager/video_player/js/cast/caster.js
+++ b/ui/file_manager/video_player/js/cast/caster.js
@@ -26,10 +26,14 @@ function initialize() {
}
CastExtensionDiscoverer.findInstalledExtension(function(foundId) {
- if (foundId)
+ if (foundId) {
loadCastAPI(initializeApi);
- else
+ } else {
console.info('No Google Cast extension is installed.');
+
+ metrics.recordCastAPIExtensionStatus(
+ metrics.CAST_API_EXTENSION_STATUS.SKIPPED);
+ }
}.wrap());
}
@@ -39,7 +43,7 @@ function initialize() {
* The given callback is executes after the cast SDK extension is initialized.
*
* @param {function} callback Callback (executed asynchronously).
- * @param {boolean=} opt_secondTry Spericy try if it's second call after
+ * @param {boolean=} opt_secondTry Specify true if it's the second call after
* installation of Cast API extension.
*/
function loadCastAPI(callback, opt_secondTry) {
@@ -50,6 +54,9 @@ function loadCastAPI(callback, opt_secondTry) {
document.body.removeChild(script);
if (opt_secondTry) {
+ metrics.recordCastAPIExtensionStatus(
+ metrics.CAST_API_EXTENSION_STATUS.LOAD_FAILED);
+
// Shows error message and exits if it's the 2nd try.
console.error('Google Cast API extension load failed.');
return;
@@ -61,12 +68,16 @@ function loadCastAPI(callback, opt_secondTry) {
true, // Don't use installation prompt.
function() {
if (chrome.runtime.lastError) {
+ metrics.recordCastAPIExtensionStatus(
+ metrics.CAST_API_EXTENSION_STATUS.INSTALLATION_FAILED);
+
console.error('Google Cast API extension installation error.',
chrome.runtime.lastError.message);
return;
}
console.info('Google Cast API extension installed.');
+
// Loads API again.
setTimeout(loadCastAPI.bind(null, callback, true));
}.wrap());
@@ -75,31 +86,54 @@ function loadCastAPI(callback, opt_secondTry) {
// Trys to load the cast API extention which is defined in manifest.json.
script.src = '_modules/mafeflapfdfljijmlienjedomfjfmhpd/cast_sender.js';
script.addEventListener('error', onError);
- script.addEventListener('load', onLoadCastExtension.bind(null, callback));
+ script.addEventListener(
+ 'load', onLoadCastExtension.bind(null, callback, opt_secondTry));
document.body.appendChild(script);
}
/**
* Loads the cast sdk extension.
* @param {function()} callback Callback (executed asynchronously).
+ * @param {boolean=} opt_installationOccured True if the extension is just
+ * installed in this window. False or null if it's already installed.
*/
-function onLoadCastExtension(callback) {
+function onLoadCastExtension(callback, opt_installationOccured) {
+ var executeCallback = function() {
+ if (opt_installationOccured) {
+ metrics.recordCastAPIExtensionStatus(
+ metrics.CAST_API_EXTENSION_STATUS.INSTALLED_AND_LOADED);
+ } else {
+ metrics.recordCastAPIExtensionStatus(
+ metrics.CAST_API_EXTENSION_STATUS.LOADED);
+ }
+
+ setTimeout(callback); // Runs asynchronously.
+ };
+
if(!chrome.cast || !chrome.cast.isAvailable) {
var checkTimer = setTimeout(function() {
console.error('Either "Google Cast API" or "Google Cast" extension ' +
'seems not to be installed?');
+
+ metrics.recordCastAPIExtensionStatus(
+ metrics.CAST_API_EXTENSION_STATUS.LOAD_FAILED);
}.wrap(), 5000);
window['__onGCastApiAvailable'] = function(loaded, errorInfo) {
clearTimeout(checkTimer);
- if (loaded)
- callback();
- else
+ if (loaded) {
+ executeCallback();
+ } else {
+ metrics.recordCastAPIExtensionStatus(
+ metrics.CAST_API_EXTENSION_STATUS.LOAD_FAILED);
+
console.error('Google Cast extension load failed.', errorInfo);
+ }
}.wrap();
} else {
- setTimeout(callback); // Runs asynchronously.
+ // Just executes the callback since the API is already loaded.
+ executeCallback();
}
}
@@ -140,8 +174,10 @@ function onReceiver(availability, receivers) {
receivers = [];
}
+ metrics.recordNumberOfCastDevices(receivers.length);
player.setCastList(receivers);
} else if (availability == chrome.cast.ReceiverAvailability.UNAVAILABLE) {
+ metrics.recordNumberOfCastDevices(0);
player.setCastList([]);
} else {
console.error('Unexpected response in onReceiver.', arguments);
« no previous file with comments | « ui/file_manager/video_player/js/cast/cast_video_element.js ('k') | ui/file_manager/video_player/js/video_player.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698