From 0e08e7be202c7bab22fdb80866d88139b34e4789 Mon Sep 17 00:00:00 2001 From: Christopher De Cairos Date: Thu, 8 Dec 2011 14:52:53 -0500 Subject: [PATCH] Enabled the error event for Youtube [#853] --- players/youtube/popcorn.youtube.js | 9 +++++++++ players/youtube/popcorn.youtube.unit.js | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/players/youtube/popcorn.youtube.js b/players/youtube/popcorn.youtube.js index 35dd44786..d9655cbfc 100755 --- a/players/youtube/popcorn.youtube.js +++ b/players/youtube/popcorn.youtube.js @@ -4,6 +4,7 @@ var onYouTubePlayerReady = function( containerId ) { onYouTubePlayerReady[ containerId ] && onYouTubePlayerReady[ containerId ](); }; onYouTubePlayerReady.stateChangeEventHandler = {}; +onYouTubePlayerReady.onErrorEventHandler = {}; Popcorn.player( "youtube", { _setup: function( options ) { @@ -67,9 +68,17 @@ Popcorn.player( "youtube", { } }; + onYouTubePlayerReady.onErrorEventHandler[ container.id ] = function( errorCode ) { + if ( [ 2, 100, 101, 150 ].indexOf( errorCode ) !== -1 ) { + media.dispatchEvent( "error" ); + } + }; + // youtube requires callbacks to be a string to a function path from the global scope youtubeObject.addEventListener( "onStateChange", "onYouTubePlayerReady.stateChangeEventHandler." + container.id ); + youtubeObject.addEventListener( "onError", "onYouTubePlayerReady.onErrorEventHandler." + container.id ); + var timeupdate = function() { if ( !media.paused ) { diff --git a/players/youtube/popcorn.youtube.unit.js b/players/youtube/popcorn.youtube.unit.js index f7f4be44a..b52f2f101 100644 --- a/players/youtube/popcorn.youtube.unit.js +++ b/players/youtube/popcorn.youtube.unit.js @@ -435,3 +435,15 @@ test( "Player height and width", function() { readyStatePoll(); }); +test( "Player Errors", function() { + QUnit.reset(); + expect( 1 ); + stop(); + var pop = Popcorn.youtube( "#video4", "http://www.youtube.com/watch?v=abcdefghijk" ); + + pop.listen( "error", function() { + ok( true, "error trigger by invalid URL" ); + start(); + }); +}); +