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

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

Issue 760853003: Adds histograms for casting feature of Video Player (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed the comments by isherman 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 unified diff | Download patch
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 /** 5 /**
6 * @param {Element} playerContainer Main container. 6 * @param {Element} playerContainer Main container.
7 * @param {Element} videoContainer Container for the video element. 7 * @param {Element} videoContainer Container for the video element.
8 * @param {Element} controlsContainer Container for video controls. 8 * @param {Element} controlsContainer Container for video controls.
9 * @constructor 9 * @constructor
10 */ 10 */
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 document.querySelector('#thumbnail').style.backgroundImage = ''; 311 document.querySelector('#thumbnail').style.backgroundImage = '';
312 } 312 }
313 }) 313 })
314 .catch(function() { 314 .catch(function() {
315 // Shows no image on error. 315 // Shows no image on error.
316 document.querySelector('#thumbnail').style.backgroundImage = ''; 316 document.querySelector('#thumbnail').style.backgroundImage = '';
317 }); 317 });
318 318
319 var videoElementInitializePromise; 319 var videoElementInitializePromise;
320 if (this.currentCast_) { 320 if (this.currentCast_) {
321 metrics.recordPlayType(metrics.PLAY_TYPE.CAST);
322
321 videoPlayerElement.setAttribute('casting', true); 323 videoPlayerElement.setAttribute('casting', true);
322 324
323 document.querySelector('#cast-name').textContent = 325 document.querySelector('#cast-name').textContent =
324 this.currentCast_.friendlyName; 326 this.currentCast_.friendlyName;
325 327
326 videoPlayerElement.setAttribute('castable', true); 328 videoPlayerElement.setAttribute('castable', true);
327 329
328 videoElementInitializePromise = media.isAvailableForCast() 330 videoElementInitializePromise = media.isAvailableForCast()
329 .then(function(result) { 331 .then(function(result) {
330 if (!result) 332 if (!result)
331 return Promise.reject('No casts are available.'); 333 return Promise.reject('No casts are available.');
332 334
333 return new Promise(function(fulfill, reject) { 335 return new Promise(function(fulfill, reject) {
334 chrome.cast.requestSession( 336 chrome.cast.requestSession(
335 fulfill, reject, undefined, this.currentCast_.label); 337 fulfill, reject, undefined, this.currentCast_.label);
336 }.bind(this)).then(function(session) { 338 }.bind(this)).then(function(session) {
337 session.addUpdateListener(this.onCastSessionUpdateBound_); 339 session.addUpdateListener(this.onCastSessionUpdateBound_);
338 340
339 this.currentSession_ = session; 341 this.currentSession_ = session;
340 this.videoElement_ = new CastVideoElement(media, session); 342 this.videoElement_ = new CastVideoElement(media, session);
341 this.controls.attachMedia(this.videoElement_); 343 this.controls.attachMedia(this.videoElement_);
342 }.bind(this)); 344 }.bind(this));
343 }.bind(this)); 345 }.bind(this));
344 } else { 346 } else {
347 metrics.recordPlayType(metrics.PLAY_TYPE.LOCAL);
345 videoPlayerElement.removeAttribute('casting'); 348 videoPlayerElement.removeAttribute('casting');
346 349
347 this.videoElement_ = document.createElement('video'); 350 this.videoElement_ = document.createElement('video');
348 document.querySelector('#video-container').appendChild( 351 document.querySelector('#video-container').appendChild(
349 this.videoElement_); 352 this.videoElement_);
350 353
351 this.controls.attachMedia(this.videoElement_); 354 this.controls.attachMedia(this.videoElement_);
352 this.videoElement_.src = video.url; 355 this.videoElement_.src = video.url;
353 356
354 media.isAvailableForCast().then(function(result) { 357 media.isAvailableForCast().then(function(result) {
(...skipping 28 matching lines...) Expand all
383 }.wrap()); 386 }.wrap());
384 this.videoElement_.addEventListener('pause', function() { 387 this.videoElement_.addEventListener('pause', function() {
385 chrome.power.releaseKeepAwake(); 388 chrome.power.releaseKeepAwake();
386 }.wrap()); 389 }.wrap());
387 390
388 this.videoElement_.load(); 391 this.videoElement_.load();
389 callback(); 392 callback();
390 }.bind(this)) 393 }.bind(this))
391 // In case of error. 394 // In case of error.
392 .catch(function(error) { 395 .catch(function(error) {
396 if (this.currentCast_)
397 metrics.recordCastVideoErrorAction();
398
393 videoPlayerElement.removeAttribute('loading'); 399 videoPlayerElement.removeAttribute('loading');
394 console.error('Failed to initialize the video element.', 400 console.error('Failed to initialize the video element.',
395 error.stack || error); 401 error.stack || error);
396 this.controls_.showErrorMessage( 402 this.controls_.showErrorMessage(
397 'VIDEO_PLAYER_VIDEO_FILE_UNSUPPORTED'); 403 'VIDEO_PLAYER_VIDEO_FILE_UNSUPPORTED');
398 callback(); 404 callback();
399 }.bind(this)); 405 }.bind(this));
400 }.wrap(this)); 406 }.wrap(this));
401 }; 407 };
402 408
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 }.wrap(null)); 667 }.wrap(null));
662 } 668 }
663 669
664 var initPromise = Promise.all( 670 var initPromise = Promise.all(
665 [new Promise(initVideos.wrap(null)), 671 [new Promise(initVideos.wrap(null)),
666 new Promise(initStrings.wrap(null)), 672 new Promise(initStrings.wrap(null)),
667 new Promise(util.addPageLoadHandler.wrap(null))]); 673 new Promise(util.addPageLoadHandler.wrap(null))]);
668 674
669 initPromise.then(function(results) { 675 initPromise.then(function(results) {
670 var videos = results[0]; 676 var videos = results[0];
677
678 metrics.recordOpenVideoPlayerAction();
679 metrics.recordNumberOfOpenedFiles(videos.length);
680
671 player.prepare(videos); 681 player.prepare(videos);
672 return new Promise(player.playFirstVideo.wrap(player)); 682 return new Promise(player.playFirstVideo.wrap(player));
673 }.wrap(null)); 683 }.wrap(null));
OLDNEW
« no previous file with comments | « ui/file_manager/video_player/js/cast/caster.js ('k') | ui/file_manager/video_player/js/video_player_metrics.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698