constructor(media, keySystem, sessionType) {
    shaka.log.debug('PatchedMediaKeysWebkit.MediaKeySession');
    super();

    /** @private {!HTMLMediaElement} */
    this.media_ = media;

    /** @private {boolean} */
    this.initialized_ = false;

    /** @private {shaka.util.PublicPromise} */
    this.generatePromise_ = null;

    /** @private {shaka.util.PublicPromise} */
    this.updatePromise_ = null;

    /** @private {string} */
    this.keySystem_ = keySystem;

    /** @private {string} */
    this.type_ = sessionType;

    /** @type {string} */
    this.sessionId = '';

    /** @type {number} */
    this.expiration = NaN;

    /** @type {!shaka.util.PublicPromise} */
    this.closed = new shaka.util.PublicPromise();

    /** @type {!shaka.polyfill.PatchedMediaKeysWebkit.MediaKeyStatusMap} */
    this.keyStatuses =
        new shaka.polyfill.PatchedMediaKeysWebkit.MediaKeyStatusMap();
  }
@param {!HTMLMediaElement} media
@param {string} keySystem
@param {string} sessionType