Fix for null manager race condition

This commit is contained in:
Sam Potts 2018-03-11 18:23:47 +11:00
parent b3365a7373
commit 9981c349be
9 changed files with 57 additions and 59 deletions

14
dist/plyr.js vendored
View File

@ -4432,7 +4432,7 @@ var Ads = function () {
if (this.enabled) {
// Check if the Google IMA3 SDK is loaded or load it ourselves
if (!utils.is.object(window.google)) {
if (!utils.is.object(window.google) || !utils.is.object(window.google.ima)) {
utils.loadScript(this.player.config.urls.googleIMA.api).then(function () {
_this2.ready();
}).catch(function () {
@ -4544,8 +4544,6 @@ var Ads = function () {
request.forceNonLinearFullSlot = false;
this.loader.requestAds(request);
this.trigger('loaded');
} catch (e) {
this.onAdError(e);
}
@ -4585,7 +4583,7 @@ var Ads = function () {
}, {
key: 'onAdsManagerLoaded',
value: function onAdsManagerLoaded(adsManagerLoadedEvent) {
value: function onAdsManagerLoaded(event) {
var _this6 = this;
// Get the ads manager
@ -4597,7 +4595,7 @@ var Ads = function () {
// The SDK is polling currentTime on the contentPlayback. And needs a duration
// so it can determine when to start the mid- and post-roll
this.manager = adsManagerLoadedEvent.getAdsManager(this.player, settings);
this.manager = event.getAdsManager(this.player, settings);
// Get the cue points for any mid-rolls by filtering out the pre- and post-roll
this.cuePoints = this.manager.getCuePoints();
@ -4840,7 +4838,7 @@ var Ads = function () {
if (!this.managerPromise) {
return;
this.resumeContent();
}
// Play the requested advertisement whenever the adsManager is ready
@ -4864,7 +4862,7 @@ var Ads = function () {
// VAST response
_this9.onAdError(adError);
}
});
}).catch(function () {});
}
/**
@ -4949,7 +4947,7 @@ var Ads = function () {
// Now request some new advertisements
_this10.requestAds();
});
}).catch(function () {});
}
/**

2
dist/plyr.js.map vendored

File diff suppressed because one or more lines are too long

2
dist/plyr.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -10340,7 +10340,7 @@ var Ads = function () {
if (this.enabled) {
// Check if the Google IMA3 SDK is loaded or load it ourselves
if (!utils.is.object(window.google)) {
if (!utils.is.object(window.google) || !utils.is.object(window.google.ima)) {
utils.loadScript(this.player.config.urls.googleIMA.api).then(function () {
_this2.ready();
}).catch(function () {
@ -10452,8 +10452,6 @@ var Ads = function () {
request.forceNonLinearFullSlot = false;
this.loader.requestAds(request);
this.trigger('loaded');
} catch (e) {
this.onAdError(e);
}
@ -10493,7 +10491,7 @@ var Ads = function () {
}, {
key: 'onAdsManagerLoaded',
value: function onAdsManagerLoaded(adsManagerLoadedEvent) {
value: function onAdsManagerLoaded(event) {
var _this6 = this;
// Get the ads manager
@ -10505,7 +10503,7 @@ var Ads = function () {
// The SDK is polling currentTime on the contentPlayback. And needs a duration
// so it can determine when to start the mid- and post-roll
this.manager = adsManagerLoadedEvent.getAdsManager(this.player, settings);
this.manager = event.getAdsManager(this.player, settings);
// Get the cue points for any mid-rolls by filtering out the pre- and post-roll
this.cuePoints = this.manager.getCuePoints();
@ -10748,7 +10746,7 @@ var Ads = function () {
if (!this.managerPromise) {
return;
this.resumeContent();
}
// Play the requested advertisement whenever the adsManager is ready
@ -10772,7 +10770,7 @@ var Ads = function () {
// VAST response
_this9.onAdError(adError);
}
});
}).catch(function () {});
}
/**
@ -10857,7 +10855,7 @@ var Ads = function () {
// Now request some new advertisements
_this10.requestAds();
});
}).catch(function () {});
}
/**

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -49,7 +49,7 @@ class Ads {
load() {
if (this.enabled) {
// Check if the Google IMA3 SDK is loaded or load it ourselves
if (!utils.is.object(window.google)) {
if (!utils.is.object(window.google) || !utils.is.object(window.google.ima)) {
utils
.loadScript(this.player.config.urls.googleIMA.api)
.then(() => {
@ -160,8 +160,6 @@ class Ads {
request.forceNonLinearFullSlot = false;
this.loader.requestAds(request);
this.trigger('loaded');
} catch (e) {
this.onAdError(e);
}
@ -191,7 +189,7 @@ class Ads {
* This method is called whenever the ads are ready inside the AdDisplayContainer
* @param {Event} adsManagerLoadedEvent
*/
onAdsManagerLoaded(adsManagerLoadedEvent) {
onAdsManagerLoaded(event) {
// Get the ads manager
const settings = new google.ima.AdsRenderingSettings();
@ -201,7 +199,7 @@ class Ads {
// The SDK is polling currentTime on the contentPlayback. And needs a duration
// so it can determine when to start the mid- and post-roll
this.manager = adsManagerLoadedEvent.getAdsManager(this.player, settings);
this.manager = event.getAdsManager(this.player, settings);
// Get the cue points for any mid-rolls by filtering out the pre- and post-roll
this.cuePoints = this.manager.getCuePoints();
@ -419,11 +417,12 @@ class Ads {
const { container } = this.player.elements;
if (!this.managerPromise) {
return;
this.resumeContent();
}
// Play the requested advertisement whenever the adsManager is ready
this.managerPromise.then(() => {
this.managerPromise
.then(() => {
// Initialize the container. Must be done via a user action on mobile devices
this.elements.displayContainer.initialize();
@ -443,7 +442,8 @@ class Ads {
// VAST response
this.onAdError(adError);
}
});
})
.catch(() => {});
}
/**
@ -500,7 +500,8 @@ class Ads {
*/
loadAds() {
// Tell our adsManager to go bye bye
this.managerPromise.then(() => {
this.managerPromise
.then(() => {
// Destroy our adsManager
if (this.manager) {
this.manager.destroy();
@ -514,7 +515,8 @@ class Ads {
// Now request some new advertisements
this.requestAds();
});
})
.catch(() => {});
}
/**