diff --git a/lib/ads/ad_manager.js b/lib/ads/ad_manager.js index 920ac303df..b0742b1ef9 100644 --- a/lib/ads/ad_manager.js +++ b/lib/ads/ad_manager.js @@ -314,6 +314,17 @@ goog.require('shaka.util.IReleasable'); */ +/** + * @event shaka.ads.AdManager.AD_ERROR + * @description Fired when a fatal error is encountered. + * @property {string} type + * 'ad-error' + * @property {Object} originalEvent + * The native SDK event, if available. + * @exportDoc + */ + + /** * @event shaka.ads.AdManager.AdInteractionEvent * @description Fired when an ad triggers the interaction callback. @@ -902,6 +913,13 @@ shaka.ads.AdManager.AD_METADATA = 'ad-metadata'; */ shaka.ads.AdManager.AD_RECOVERABLE_ERROR = 'ad-recoverable-error'; +/** + * The event name for when the ad manager dispatch errors. + * + * @const {string} + * @export + */ +shaka.ads.AdManager.AD_ERROR = 'ad-error'; /** * The event name for when the client side SDK signalled its readiness diff --git a/lib/ads/client_side_ad_manager.js b/lib/ads/client_side_ad_manager.js index 2a35e2c5b8..718acc0e63 100644 --- a/lib/ads/client_side_ad_manager.js +++ b/lib/ads/client_side_ad_manager.js @@ -133,6 +133,10 @@ shaka.ads.ClientSideAdManager = class { shaka.log.warning( 'There was an ad error from the IMA SDK: ' + e.getError()); shaka.log.warning('Resuming playback.'); + + const data = (new Map()).set('originalEvent', e); + this.onEvent_(new shaka.util.FakeEvent(shaka.ads.AdManager.AD_ERROR, data)); + this.onAdComplete_(/* adEvent= */ null); // Remove ad breaks from the timeline this.onEvent_(