constructor(name, iconUri, manifestUri, source) {
    // Required members.
    /** @type {string} */
    this.name = name;
    /** @type {string} */
    this.shortName = '';
    /** @type {string} */
    this.iconUri = iconUri;
    /** @type {string} */
    this.manifestUri = manifestUri;
    /** @type {!shakaAssets.Source} */
    this.source = source;

    // Optional members.
    /** @type {boolean} */
    this.focus = false;
    /** @type {boolean} */
    this.disabled = false;
    /** @type {!Array<!shaka.extern.ExtraText>} */
    this.extraText = [];
    /** @type {!Array<string>} */
    this.extraThumbnail = [];
    /** @type {!Array<!shaka.extern.ExtraChapter>} */
    this.extraChapter = [];
    /** @type {?string} */
    this.certificateUri = null;
    /** @type {?string} */
    this.description = null;
    /** @type {boolean} */
    this.isFeatured = false;
    /** @type {!Array<!shakaAssets.KeySystem>} */
    this.drm = [shakaAssets.KeySystem.CLEAR];
    /** @type {!Array<!shakaAssets.Feature>} */
    this.features = [shakaAssets.Feature.VOD];
    /** @type {!Map<string, string>} */
    this.licenseServers = new Map();
    /** @type {!Map<string, string>} */
    this.offlineLicenseServers = new Map();
    /** @type {!Map<string, string>} */
    this.licenseRequestHeaders = new Map();
    /** @type {?shaka.extern.RequestFilter} */
    this.requestFilter = null;
    /** @type {?shaka.extern.ResponseFilter} */
    this.responseFilter = null;
    /** @type {!Map<string, string>} */
    this.clearKeys = new Map(); // TODO: Setter method?
    /** @type {?Object} */
    this.extraConfig = null;
    /** @type {?Object} */
    this.extraUiConfig = null;
    /** @type {?string} */
    this.adTagUri = null;
    /** @type {?string} */
    this.imaVideoId = null;
    /** @type {?string} */
    this.imaAssetKey = null;
    /** @type {?string} */
    this.imaContentSrcId = null;
    /** @type {?string} */
    this.imaManifestType = null;
    /** @type {?string} */
    this.mediaTailorUrl = null;
    /** @type {?Object} */
    this.mediaTailorAdsParams = null;
    /** @type {boolean} */
    this.useIMA = true;
    /** @type {?string} */
    this.mimeType = null;


    // Preload values.
    /** @type {?shaka.media.PreloadManager} */
    this.preloadManager;
    this.preloaded = false;
    this.preloadFailed = false;


    // Offline storage values.
    /** @type {?function()} */
    this.storeCallback;
    /** @type {?function()} */
    this.unstoreCallback;
    /** @type {?shaka.extern.StoredContent} */
    this.storedContent;
    /** @type {number} */
    this.storedProgress = 1;
  }
@param {string} name
@param {string} iconUri
@param {string} manifestUri
@param {shakaAssets.Source} source