Source: lib/ads/abstract_ad.js

/*! @license
 * Shaka Player
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */


goog.provide('shaka.ads.AbstractAd');

/**
 * @abstract
 * @implements {shaka.extern.IAd}
 * @export
 */
shaka.ads.AbstractAd = class {
  /**
   * @param {HTMLMediaElement=} video
   */
  constructor(video = null) {
    /** @protected {HTMLMediaElement} */
    this.video = video;
  }

  /**
   * @override
   */
  needsSkipUI() {
    return true;
  }

  /**
   * @override
   */
  isClientRendering() {
    return true;
  }

  /**
   * @override
   */
  hasCustomClick() {
    return false;
  }

  /**
   * @override
   */
  isUsingAnotherMediaElement() {
    return false;
  }

  /**
   * @override
   */
  getDuration() {
    return -1;
  }

  /**
   * @override
   */
  getMinSuggestedDuration() {
    return this.getDuration();
  }

  /**
   * @override
   */
  getRemainingTime() {
    return -1;
  }

  /**
   * @override
   */
  isPaused() {
    return this.video ? this.video.paused : false;
  }

  /**
   * @override
   */
  isSkippable() {
    return false;
  }

  /**
   * @override
   */
  getTimeUntilSkippable() {
    return 0;
  }

  /**
   * @override
   */
  canSkipNow() {
    return false;
  }

  /**
   * @override
   */
  skip() {
    // Nothing
  }

  /**
   * @override
   */
  pause() {
    if (this.video) {
      this.video.pause();
    }
  }

  /**
   * @override
   */
  play() {
    if (this.video) {
      this.video.play();
    }
  }

  /**
   * @override
   */
  getVolume() {
    return this.video ? this.video.volume : 1;
  }

  /**
   * @override
   */
  setVolume(volume) {
    if (this.video) {
      this.video.volume = volume;
    }
  }

  /**
   * @override
   */
  isMuted() {
    return this.video ? this.video.muted : false;
  }

  /**
   * @override
   */
  isLinear() {
    return true;
  }

  /**
   * @override
   */
  resize(width, height) {
    // Nothing
  }

  /**
   * @override
   */
  setMuted(muted) {
    if (this.video) {
      this.video.muted = muted;
    }
  }


  /**
   * @override
   */
  getSequenceLength() {
    return 1;
  }

  /**
   * @override
   */
  getPositionInSequence() {
    return 1;
  }

  /**
   * @override
   */
  getTitle() {
    return '';
  }

  /**
   * @override
   */
  getDescription() {
    return '';
  }

  /**
   * @override
   */
  getVastMediaBitrate() {
    return 0;
  }

  /**
   * @override
   */
  getVastMediaHeight() {
    return 0;
  }

  /**
   * @override
   */
  getVastMediaWidth() {
    return 0;
  }

  /**
   * @override
   */
  getVastAdId() {
    return '';
  }

  /**
   * @override
   */
  getAdId() {
    return '';
  }

  /**
   * @override
   */
  getCreativeAdId() {
    return '';
  }

  /**
   * @override
   */
  getAdvertiserName() {
    return '';
  }

  /**
   * @override
   */
  getMediaUrl() {
    return null;
  }

  /**
   * @override
   */
  getTimeOffset() {
    return 0;
  }

  /**
   * @override
   */
  getPodIndex() {
    return 0;
  }

  /**
   * @override
   */
  release() {
    this.video = null;
  }
};