addSelectInput_(name, valueName, options, optionNames, tooltipMessage) {
    const onChange = (input) => {
      shakaDemoMain.configure(valueName, options[input.value]);
      shakaDemoMain.remakeHash();
    };

    // If there are any translations missing for option names, fill in the
    // constant from the enum.  This ensures new enum values are usable in the
    // demo in some form, even if they are forgotten in the demo config.
    for (const key in options) {
      if (!(key in optionNames)) {
        optionNames[key] = key;
      }
    }

    this.addCustomSelectInput_(name, optionNames, onChange, tooltipMessage);

    const initialValue = shakaDemoMain.getCurrentConfigValue(valueName);
    for (const key in options) {
      if (options[key] == initialValue) {
        this.latestInput_.input().value = key;
      }
    }

    return this;
  }
@param {string} name
@param {string} valueName
@param {!Object<string, ?>} options
@param {!Object<string, string>} optionNames
@param {string=} tooltipMessage
@return {!shakaDemo.Config}
@private