Merge pull request #49 from cadecairos/t990

Support for 'oneTime' attribute + tests [#990]
This commit is contained in:
Christopher De Cairos 2012-05-09 14:37:17 -07:00
Родитель 55c58e87d9 a5c12156d0
Коммит 1be0abe3d5
2 изменённых файлов: 46 добавлений и 0 удалений

Просмотреть файл

@ -1365,6 +1365,12 @@
natives.start = natives.start || natives[ "in" ];
natives.end = natives.end || natives[ "out" ];
if ( options.once ) {
natives.end = combineFn( natives.end, function() {
this.removeTrackEvent( options._id );
});
}
// extend teardown to always call end if running
natives._teardown = combineFn(function() {

Просмотреть файл

@ -4174,6 +4174,46 @@ test( "end undefined or false should never be fired", function() {
$pop.currentTime( $pop.duration() );
});
asyncTest( "Plug-ins with a `once` attribute should be removed after `end` is fired.", 3, function() {
var $pop = Popcorn( "#video" ),
startFired = 0;
endFired = 0;
Popcorn.plugin( "onceplugin", {
start: function() {
if ( !startFired ) {
ok( true, "start called once" );
startFired++;
} else {
ok( false, "Start should oly execute once!" )
startFired++;
}
},
end: function() {
if ( !endFired ) {
ok( true, "end called once" );
this.currentTime( 0 );
endFired++;
} else {
ok( false, "End should only execute once!" );
endFired++;
}
}
});
$pop.onceplugin({ start: 2, end: 3, once: true });
$pop.cue( 4, function() {
ok( startFired === 1 && endFired === 1, "start and end called one each" );
$pop.removePlugin( "onceplugin" );
$pop.destroy();
start();
});
$pop.play( 0 );
});
module( "Popcorn XHR" );
test( "Basic", function() {