setUpdateTimer_(offset) {
    // NOTE: An updatePeriod_ of -1 means the attribute was missing.
    // An attribute which is present and set to 0 should still result in
    // periodic updates.  For more, see:
    // https://github.com/Dash-Industry-Forum/Guidelines-TimingModel/issues/48
    if (this.updatePeriod_ < 0) {
      return;
    }
    let updateTime = this.updatePeriod_;
    if (this.config_.updatePeriod >= 0) {
      updateTime = this.config_.updatePeriod;
    }

    const finalDelay = Math.max(
        updateTime - offset,
        this.averageUpdateDuration_.getEstimate());

    // We do not run the timer as repeating because part of update is async and
    // we need schedule the update after it finished.
    this.updateTimer_.tickAfter(/* seconds= */ finalDelay);
  }
Sets the update timer.  Does nothing if the manifest does not specify an
update period.

@param {number} offset An offset, in seconds, to apply to the manifest's
  update period.
@private