diff --git a/externs/shaka/ads.js b/externs/shaka/ads.js index fd164e44dd..c1939faf90 100644 --- a/externs/shaka/ads.js +++ b/externs/shaka/ads.js @@ -296,6 +296,11 @@ shaka.extern.IAd = class { */ needsSkipUI() {} + /** + * @return {boolean} + */ + isClientRendering() {} + /** * @return {number} */ diff --git a/lib/ads/client_side_ad.js b/lib/ads/client_side_ad.js index 668b588152..7042941c58 100644 --- a/lib/ads/client_side_ad.js +++ b/lib/ads/client_side_ad.js @@ -58,6 +58,14 @@ shaka.ads.ClientSideAd = class { return false; } + /** + * @override + * @export + */ + isClientRendering() { + return true; + } + /** * @override * @export diff --git a/lib/ads/interstitial_ad.js b/lib/ads/interstitial_ad.js index 29a3e2cc8d..7f060248f5 100755 --- a/lib/ads/interstitial_ad.js +++ b/lib/ads/interstitial_ad.js @@ -53,6 +53,14 @@ shaka.ads.InterstitialAd = class { return true; } + /** + * @override + * @export + */ + isClientRendering() { + return true; + } + /** * @override * @export diff --git a/lib/ads/media_tailor_ad.js b/lib/ads/media_tailor_ad.js index ed4e3a84d5..6766c82ab5 100755 --- a/lib/ads/media_tailor_ad.js +++ b/lib/ads/media_tailor_ad.js @@ -51,6 +51,14 @@ shaka.ads.MediaTailorAd = class { return true; } + /** + * @override + * @export + */ + isClientRendering() { + return false; + } + /** * @override * @export diff --git a/lib/ads/server_side_ad.js b/lib/ads/server_side_ad.js index 35e25e47f0..25bc5183a8 100644 --- a/lib/ads/server_side_ad.js +++ b/lib/ads/server_side_ad.js @@ -43,6 +43,14 @@ shaka.ads.ServerSideAd = class { return true; } + /** + * @override + * @export + */ + isClientRendering() { + return false; + } + /** * @override * @export diff --git a/test/test/util/fake_ad.js b/test/test/util/fake_ad.js index 858530c0e7..3d00ea4521 100644 --- a/test/test/util/fake_ad.js +++ b/test/test/util/fake_ad.js @@ -76,6 +76,13 @@ shaka.test.FakeAd = class { return true; } + /** + * @override + */ + isClientRendering() { + return true; + } + /** * @override */ diff --git a/ui/controls.js b/ui/controls.js index b9d128d51f..019a6f5d68 100644 --- a/ui/controls.js +++ b/ui/controls.js @@ -1235,12 +1235,14 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget { this.adManager_, shaka.ads.Utils.AD_STARTED, (e) => { this.ad_ = (/** @type {!Object} */ (e))['ad']; this.showAdUI(); + this.onBufferingStateChange_(); }); this.eventManager_.listen( this.adManager_, shaka.ads.Utils.AD_STOPPED, () => { this.ad_ = null; this.hideAdUI(); + this.onBufferingStateChange_(); }); if (screen.orientation) { @@ -1744,6 +1746,11 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget { return; } + if (this.ad_ && this.ad_.isClientRendering() && this.ad_.isLinear()) { + shaka.ui.Utils.setDisplay(this.spinnerContainer_, false); + return; + } + shaka.ui.Utils.setDisplay( this.spinnerContainer_, this.player_.isBuffering()); }