diff --git a/externs/shaka/ads.js b/externs/shaka/ads.js index 3020f77452..880dbd018c 100644 --- a/externs/shaka/ads.js +++ b/externs/shaka/ads.js @@ -109,6 +109,11 @@ shaka.extern.IAdManager = class extends EventTarget { */ requestMediaTailorStream(url, adsParams, backupUrl) {} + /** + * @param {string} url + */ + addMediaTailorTrackingUrl(url) {} + /** * @param {!HTMLElement} adContainer * @param {!HTMLMediaElement} video diff --git a/lib/ads/ad_manager.js b/lib/ads/ad_manager.js index 55590e252e..8cc96addf6 100644 --- a/lib/ads/ad_manager.js +++ b/lib/ads/ad_manager.js @@ -560,6 +560,23 @@ shaka.ads.AdManager = class extends shaka.util.FakeEventTarget { } + /** + * @param {string} url + * @override + * @export + */ + addMediaTailorTrackingUrl(url) { + if (!this.mtAdManager_) { + throw new shaka.util.Error( + shaka.util.Error.Severity.RECOVERABLE, + shaka.util.Error.Category.ADS, + shaka.util.Error.Code.MT_AD_MANAGER_NOT_INITIALIZED); + } + + this.mtAdManager_.addTrackingUrl(url); + } + + /** * @override * @export diff --git a/lib/ads/media_tailor_ad_manager.js b/lib/ads/media_tailor_ad_manager.js index ee539f6c8f..be82269c74 100755 --- a/lib/ads/media_tailor_ad_manager.js +++ b/lib/ads/media_tailor_ad_manager.js @@ -130,6 +130,15 @@ shaka.ads.MediaTailorAdManager = class { return this.streamPromise_; } + /** + * @param {string} url + */ + addTrackingUrl(url) { + this.trackingUrl_ = url; + this.onEvent_(new shaka.util.FakeEvent(shaka.ads.AdManager.ADS_LOADED, + (new Map()).set('loadTime', 0))); + } + /** * Resets the MediaTailor manager and removes any continuous polling. */ diff --git a/test/test/util/fake_ad_manager.js b/test/test/util/fake_ad_manager.js index 1ffd1fe01b..1a2b4f9e79 100644 --- a/test/test/util/fake_ad_manager.js +++ b/test/test/util/fake_ad_manager.js @@ -47,6 +47,9 @@ shaka.test.FakeAdManager = class extends shaka.util.FakeEventTarget { return Promise.resolve('fake:url'); } + /** @override */ + addMediaTailorTrackingUrl(url) {} + /** @override */ initServerSide(adContainer, video) {}