Source: lib/polyfill/patchedmediakeys_cert.js

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

goog.provide('shaka.polyfill.PatchedMediaKeysCert');

goog.require('shaka.log');
goog.require('shaka.polyfill');
goog.require('shaka.util.Platform');


/**
 * @summary A polyfill to fix setServerCertificate implementation on
 * older platforms which claim to support modern EME.
 * @export
 */
shaka.polyfill.PatchedMediaKeysCert = class {
  /**
   * Installs the polyfill if needed.
   * @export
   */
  static install() {
    if (!window.MediaKeys) {
      // No MediaKeys available
      return;
    }
    // eslint-disable-next-line no-restricted-syntax
    if (MediaKeys.prototype.setServerCertificate &&
        !shaka.polyfill.PatchedMediaKeysCert.hasInvalidImplementation_()) {
      // setServerCertificate is there and userAgent seems to be valid.
      return;
    }

    shaka.log.info('Patching MediaKeys.setServerCertificate');
    // eslint-disable-next-line no-restricted-syntax
    MediaKeys.prototype.setServerCertificate =
      shaka.polyfill.PatchedMediaKeysCert.setServerCertificate_;
  }

  /**
   * @param {!BufferSource} certificate
   * @return {!Promise<boolean>}
   * @private
   */
  static setServerCertificate_(certificate) {
    shaka.log.debug('PatchedMediaKeysCert.setServerCertificate');
    return Promise.resolve(false);
  }

  /**
   * @return {boolean}
   * @private
   */
  static hasInvalidImplementation_() {
    return shaka.util.Platform.isTizen3() || shaka.util.Platform.isTizen4() ||
      shaka.util.Platform.isTizen5_0() || shaka.util.Platform.isWebOS3();
  }
};

shaka.polyfill.register(shaka.polyfill.PatchedMediaKeysCert.install);