Blame devtools/client/responsive.html/components/NetworkThrottlingSelector.js

Packit f0b94e
/* This Source Code Form is subject to the terms of the Mozilla Public
Packit f0b94e
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Packit f0b94e
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit f0b94e
Packit f0b94e
"use strict";
Packit f0b94e
Packit f0b94e
const { PureComponent } = require("devtools/client/shared/vendor/react");
Packit f0b94e
const PropTypes = require("devtools/client/shared/vendor/react-prop-types");
Packit f0b94e
const dom = require("devtools/client/shared/vendor/react-dom-factories");
Packit f0b94e
Packit f0b94e
const Types = require("../types");
Packit f0b94e
const { getStr } = require("../utils/l10n");
Packit f0b94e
const throttlingProfiles = require("devtools/client/shared/network-throttling-profiles");
Packit f0b94e
Packit f0b94e
class NetworkThrottlingSelector extends PureComponent {
Packit f0b94e
  static get propTypes() {
Packit f0b94e
    return {
Packit f0b94e
      networkThrottling: PropTypes.shape(Types.networkThrottling).isRequired,
Packit f0b94e
      onChangeNetworkThrottling: PropTypes.func.isRequired,
Packit f0b94e
    };
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
  constructor(props) {
Packit f0b94e
    super(props);
Packit f0b94e
    this.onSelectChange = this.onSelectChange.bind(this);
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
  onSelectChange({ target }) {
Packit f0b94e
    let {
Packit f0b94e
      onChangeNetworkThrottling,
Packit f0b94e
    } = this.props;
Packit f0b94e
Packit f0b94e
    if (target.value == getStr("responsive.noThrottling")) {
Packit f0b94e
      onChangeNetworkThrottling(false, "");
Packit f0b94e
      return;
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    for (let profile of throttlingProfiles) {
Packit f0b94e
      if (profile.id === target.value) {
Packit f0b94e
        onChangeNetworkThrottling(true, profile.id);
Packit f0b94e
        return;
Packit f0b94e
      }
Packit f0b94e
    }
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
  render() {
Packit f0b94e
    let {
Packit f0b94e
      networkThrottling,
Packit f0b94e
    } = this.props;
Packit f0b94e
Packit f0b94e
    let selectClass = "toolbar-dropdown";
Packit f0b94e
    let selectedProfile;
Packit f0b94e
    if (networkThrottling.enabled) {
Packit f0b94e
      selectClass += " selected";
Packit f0b94e
      selectedProfile = networkThrottling.profile;
Packit f0b94e
    } else {
Packit f0b94e
      selectedProfile = getStr("responsive.noThrottling");
Packit f0b94e
    }
Packit f0b94e
Packit f0b94e
    let listContent = [
Packit f0b94e
      dom.option(
Packit f0b94e
        {
Packit f0b94e
          key: "disabled",
Packit f0b94e
        },
Packit f0b94e
        getStr("responsive.noThrottling")
Packit f0b94e
      ),
Packit f0b94e
      dom.option(
Packit f0b94e
        {
Packit f0b94e
          key: "divider",
Packit f0b94e
          className: "divider",
Packit f0b94e
          disabled: true,
Packit f0b94e
        }
Packit f0b94e
      ),
Packit f0b94e
      throttlingProfiles.map(profile => {
Packit f0b94e
        return dom.option(
Packit f0b94e
          {
Packit f0b94e
            key: profile.id,
Packit f0b94e
          },
Packit f0b94e
          profile.id
Packit f0b94e
        );
Packit f0b94e
      }),
Packit f0b94e
    ];
Packit f0b94e
Packit f0b94e
    return dom.select(
Packit f0b94e
      {
Packit f0b94e
        id: "global-network-throttling-selector",
Packit f0b94e
        className: selectClass,
Packit f0b94e
        value: selectedProfile,
Packit f0b94e
        onChange: this.onSelectChange,
Packit f0b94e
      },
Packit f0b94e
      ...listContent
Packit f0b94e
    );
Packit f0b94e
  }
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
module.exports = NetworkThrottlingSelector;