async getManifestUri_(asset) {
    let manifestUri = asset.manifestUri;
    // If we have an offline copy, use that.  If the offlineUri field is null,
    // we are still downloading it.
    if (asset.storedContent && asset.storedContent.offlineUri) {
      manifestUri = asset.storedContent.offlineUri;
    }
    // If it's a server side dai asset, request ad-containing manifest
    // from the ad manager.
    if (asset.imaAssetKey || (asset.imaContentSrcId && asset.imaVideoId)) {
      manifestUri = await this.getManifestUriFromAdManager_(asset);
    }
    // If it's a MediaTailor asset, request ad-containing manifest
    // from the ad manager.
    if (asset.mediaTailorUrl) {
      manifestUri = await this.getManifestUriFromMediaTailorAdManager_(asset);
    }
    return manifestUri;
  }
@param {ShakaDemoAssetInfo} asset
@return {!Promise<string>}
@private