onRateChange_() {
    /** @type {number} */
    const newRate = this.video_.playbackRate;

    // On Edge, when someone seeks using the native controls, it will set the
    // playback rate to zero until they finish seeking, after which it will
    // return the playback rate.
    //
    // If the playback rate changes while seeking, Edge will cache the playback
    // rate and use it after seeking.
    //
    // https://github.com/shaka-project/shaka-player/issues/951
    if (newRate == 0) {
      return;
    }

    if (this.playRateController_) {
      // The playback rate has changed. This could be us or someone else.
      // If this was us, setting the rate again will be a no-op.
      this.playRateController_.set(newRate);

      if (this.loadMode_ == shaka.Player.LoadMode.MEDIA_SOURCE) {
        this.abrManager_.playbackRateChanged(newRate);
      }
      this.setupTrickPlayEventListeners_(newRate);
    }

    const event = shaka.Player.makeEvent_(
        shaka.util.FakeEvent.EventName.RateChange);
    this.dispatchEvent(event);
  }
A callback for when the playback rate changes. We need to watch the
playback rate so that if the playback rate on the media element changes
(that was not caused by our play rate controller) we can notify the
controller so that it can stay in-sync with the change.

@private