diff --git a/bower.json b/bower.json index bdfb2de..b140d10 100644 --- a/bower.json +++ b/bower.json @@ -30,6 +30,6 @@ "dependencies": { "videojs": "4.4.3", "vast-client-js": "1.1.2", - "videojs-contrib-ads": "0.4.0" + "videojs-contrib-ads": "0.5.0" } } diff --git a/spec/VastPluginSpec.js b/spec/VastPluginSpec.js index a6bff6d..bca1161 100644 --- a/spec/VastPluginSpec.js +++ b/spec/VastPluginSpec.js @@ -34,10 +34,10 @@ describe('videojs.vast plugin', function() { } })(); player = videojs(id); - player.ads(); - player.vast({ - url: "" - }); + // player.ads(); + // player.vast({ + // url: "" + // }); }); @@ -70,11 +70,11 @@ describe('videojs.vast plugin', function() { }); it("should bail out if no url is provided", function() { - spyOn(this.p, "trigger"); this.p.ads(); var result = this.p.vast({}); - expect(result).toBe(null); - expect(this.p.trigger).toHaveBeenCalledWith("adtimeout"); + spyOn(this.p, "trigger").and.callThrough(); + this.p.trigger('readyforpreroll'); + expect(this.p.trigger).toHaveBeenCalledWith("adscanceled"); }); it("should request an ad if a source is already loaded", function() { @@ -122,6 +122,7 @@ describe('videojs.vast plugin', function() { describe("tearDown", function() { it("should end the linear ad", function() { + player.ads(); player.vast({ url: 'balhbahblhab' }); spyOn(player.ads, "endLinearAdMode"); @@ -143,6 +144,7 @@ describe('videojs.vast plugin', function() { describe("preroll", function() { beforeEach(function() { + player.ads(); player.vast({ url: 'balhbahblhab' }); player.vastTracker = { clickThroughURLTemplate: "a whole new page", @@ -163,7 +165,7 @@ describe('videojs.vast plugin', function() { }); it("should end the ad", function() { - spyOn(player, "one"); + spyOn(player, "one"); player.vast.preroll(); expect(player.one).toHaveBeenCalledWith("ended", jasmine.any(Function)); }); @@ -187,7 +189,7 @@ describe('videojs.vast plugin', function() { spyOn(player, "trigger"); player.vast.getContent("some url"); - expect(player.trigger).toHaveBeenCalledWith("adtimeout"); + expect(player.trigger).toHaveBeenCalledWith("adscanceled"); }); describe("linear ads", function() { @@ -231,7 +233,7 @@ describe('videojs.vast plugin', function() { expect(DMVAST.util.track).toHaveBeenCalledWith( jasmine.any(String), jasmine.any(Object) ); - expect(player.trigger).toHaveBeenCalledWith("adtimeout"); + expect(player.trigger).toHaveBeenCalledWith("adscanceled"); }); }); diff --git a/videojs.vast.js b/videojs.vast.js index 1fecb5f..429847e 100644 --- a/videojs.vast.js +++ b/videojs.vast.js @@ -87,7 +87,7 @@ player.vast.sources = player.vast.createSourceObjects(creative.mediaFiles); if (!player.vast.sources.length) { - player.trigger('adtimeout'); + player.trigger('adscanceled'); return; } @@ -118,7 +118,7 @@ if (!player.vastTracker) { // No pre-roll, start video - player.trigger('adtimeout'); + player.trigger('adscanceled'); } }); }, @@ -135,13 +135,11 @@ } player.vastTracker.setProgress(player.currentTime()); }, - playFn = function() { - if (player.ads.state === 'ad-playback') { - player.vastTracker.setPaused(false); - } - }, pauseFn = function() { player.vastTracker.setPaused(true); + player.one('play', function(){ + player.vastTracker.setPaused(false); + }); }, errorFn = function() { // Inform ad server we couldn't play the media file for this ad @@ -152,14 +150,12 @@ player.on('canplay', canplayFn); player.on('timeupdate', timeupdateFn); - player.on('play', playFn); player.on('pause', pauseFn); player.on('error', errorFn); - player.one('ended', function() { + player.one('vast-preroll-removed', function() { player.off('canplay', canplayFn); player.off('timeupdate', timeupdateFn); - player.off('play', playFn); player.off('pause', pauseFn); player.off('error', errorFn); if (!errorOccurred) { @@ -281,12 +277,6 @@ return null; } - // if we don't have a vast url, just bail out - if (!settings.url) { - player.trigger('adtimeout'); - return null; - } - // set up vast plugin, then set up events here player.vast = new Vast(player, settings); @@ -313,6 +303,11 @@ }); player.on('readyforpreroll', function() { + // if we don't have a vast url, just bail out + if (!settings.url) { + player.trigger('adscanceled'); + return null; + } // set up and start playing preroll player.vast.preroll(); });