The Great Blink mv for source files, part 2.

Move and rename files.

NOAUTOREVERT=true
NOPRESUBMIT=true
NOTREECHECKS=true
Bug: 768828
[email protected]
NOTRY=true

Change-Id: I66d3b155808bc5bdbf237b80208e1e552bcf7f28
Reviewed-on: https://chromium-review.googlesource.com/1001153
Reviewed-by: Blink Reformat <[email protected]>
Commit-Queue: Blink Reformat <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#549061}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 0aee4434a4dba42a42abaea9bfbc0cd196a63bc1
diff --git a/front_end/mobile_throttling/ThrottlingManager.js b/front_end/mobile_throttling/ThrottlingManager.js
new file mode 100644
index 0000000..ab8834b
--- /dev/null
+++ b/front_end/mobile_throttling/ThrottlingManager.js
@@ -0,0 +1,267 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @implements {SDK.SDKModelObserver<!SDK.EmulationModel>}
+ */
+MobileThrottling.ThrottlingManager = class extends Common.Object {
+  constructor() {
+    super();
+    /** @type {!MobileThrottling.CPUThrottlingRates} */
+    this._cpuThrottlingRate = MobileThrottling.CPUThrottlingRates.NoThrottling;
+    /** @type {!Set<!UI.ToolbarComboBox>} */
+    this._cpuThrottlingControls = new Set();
+    this._cpuThrottlingRates = MobileThrottling.cpuThrottlingPresets;
+    /** @type {!Common.Setting<!Array<!SDK.NetworkManager.Conditions>>} */
+    this._customNetworkConditionsSetting = Common.moduleSetting('customNetworkConditions');
+    /** @type {!SDK.NetworkManager.Conditions} */
+    this._currentNetworkThrottlingConditions = SDK.NetworkManager.NoThrottlingConditions;
+    /** @type {!SDK.NetworkManager.Conditions} */
+    this._lastNetworkThrottlingConditions;
+
+    SDK.multitargetNetworkManager.addEventListener(SDK.MultitargetNetworkManager.Events.ConditionsChanged, () => {
+      this._lastNetworkThrottlingConditions = this._currentNetworkThrottlingConditions;
+      this._currentNetworkThrottlingConditions = SDK.multitargetNetworkManager.networkConditions();
+    });
+
+    SDK.targetManager.observeModels(SDK.EmulationModel, this);
+  }
+
+
+  /**
+   * @param {!HTMLSelectElement} selectElement
+   * @return {!MobileThrottling.NetworkThrottlingSelector}
+   */
+  decorateSelectWithNetworkThrottling(selectElement) {
+    let options = [];
+    const selector =
+        new MobileThrottling.NetworkThrottlingSelector(populate, select, this._customNetworkConditionsSetting);
+    selectElement.addEventListener('change', optionSelected, false);
+    return selector;
+
+    /**
+     * @param {!Array.<!MobileThrottling.NetworkThrottlingConditionsGroup>} groups
+     * @return {!Array<?SDK.NetworkManager.Conditions>}
+     */
+    function populate(groups) {
+      selectElement.removeChildren();
+      options = [];
+      for (let i = 0; i < groups.length; ++i) {
+        const group = groups[i];
+        const groupElement = selectElement.createChild('optgroup');
+        groupElement.label = group.title;
+        for (const conditions of group.items) {
+          const title = conditions.title;
+          const option = new Option(title, title);
+          groupElement.appendChild(option);
+          options.push(conditions);
+        }
+        if (i === groups.length - 1) {
+          groupElement.appendChild(new Option(Common.UIString('Add\u2026'), Common.UIString('Add\u2026')));
+          options.push(null);
+        }
+      }
+      return options;
+    }
+
+    function optionSelected() {
+      if (selectElement.selectedIndex === selectElement.options.length - 1)
+        selector.revealAndUpdate();
+      else
+        selector.optionSelected(options[selectElement.selectedIndex]);
+    }
+
+    /**
+     * @param {number} index
+     */
+    function select(index) {
+      if (selectElement.selectedIndex !== index)
+        selectElement.selectedIndex = index;
+    }
+  }
+
+  /**
+   * @return {!UI.ToolbarCheckbox}
+   */
+  createOfflineToolbarCheckbox() {
+    const checkbox = new UI.ToolbarCheckbox(
+        Common.UIString('Offline'), Common.UIString('Force disconnected from network'), forceOffline.bind(this));
+    SDK.multitargetNetworkManager.addEventListener(
+        SDK.MultitargetNetworkManager.Events.ConditionsChanged, networkConditionsChanged);
+    checkbox.setChecked(SDK.multitargetNetworkManager.networkConditions() === SDK.NetworkManager.OfflineConditions);
+
+    /**
+     * @this {!MobileThrottling.ThrottlingManager}
+     */
+    function forceOffline() {
+      if (checkbox.checked())
+        SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.OfflineConditions);
+      else
+        SDK.multitargetNetworkManager.setNetworkConditions(this._lastNetworkThrottlingConditions);
+    }
+
+    function networkConditionsChanged() {
+      checkbox.setChecked(SDK.multitargetNetworkManager.networkConditions() === SDK.NetworkManager.OfflineConditions);
+    }
+
+    return checkbox;
+  }
+
+
+  /**
+   * @return {!UI.ToolbarMenuButton}
+   */
+  createMobileThrottlingButton() {
+    const button = new UI.ToolbarMenuButton(appendItems);
+    button.setTitle(Common.UIString('Throttling'));
+    button.setGlyph('');
+    button.turnIntoSelect();
+    button.setDarkText();
+
+    /** @type {!MobileThrottling.ConditionsList} */
+    let options = [];
+    let selectedIndex = -1;
+    const selector = new MobileThrottling.MobileThrottlingSelector(populate, select);
+    return button;
+
+    /**
+     * @param {!UI.ContextMenu} contextMenu
+     */
+    function appendItems(contextMenu) {
+      for (let index = 0; index < options.length; ++index) {
+        const conditions = options[index];
+        if (!conditions)
+          continue;
+        if (conditions.title === MobileThrottling.CustomConditions.title &&
+            conditions.description === MobileThrottling.CustomConditions.description)
+          continue;
+        contextMenu.defaultSection().appendCheckboxItem(
+            Common.UIString(conditions.title),
+            selector.optionSelected.bind(selector, /** @type {!MobileThrottling.Conditions} */ (conditions)),
+            selectedIndex === index);
+      }
+    }
+
+    /**
+     * @param {!Array.<!MobileThrottling.MobileThrottlingConditionsGroup>} groups
+     * @return {!MobileThrottling.ConditionsList}
+     */
+    function populate(groups) {
+      options = [];
+      for (const group of groups) {
+        for (const conditions of group.items)
+          options.push(conditions);
+        options.push(null);
+      }
+      return options;
+    }
+
+    /**
+     * @param {number} index
+     */
+    function select(index) {
+      selectedIndex = index;
+      button.setText(options[index].title);
+      button.setTitle(options[index].description);
+    }
+  }
+
+  /**
+   * @return {number}
+   */
+  cpuThrottlingRate() {
+    return this._cpuThrottlingRate;
+  }
+
+  /**
+   * @param {!MobileThrottling.CPUThrottlingRates} rate
+   */
+  setCPUThrottlingRate(rate) {
+    this._cpuThrottlingRate = rate;
+    for (const emulationModel of SDK.targetManager.models(SDK.EmulationModel))
+      emulationModel.setCPUThrottlingRate(this._cpuThrottlingRate);
+    let icon = null;
+    if (this._cpuThrottlingRate !== MobileThrottling.CPUThrottlingRates.NoThrottling) {
+      Host.userMetrics.actionTaken(Host.UserMetrics.Action.CpuThrottlingEnabled);
+      icon = UI.Icon.create('smallicon-warning');
+      icon.title = Common.UIString('CPU throttling is enabled');
+    }
+    const index = this._cpuThrottlingRates.indexOf(this._cpuThrottlingRate);
+    for (const control of this._cpuThrottlingControls)
+      control.setSelectedIndex(index);
+    UI.inspectorView.setPanelIcon('timeline', icon);
+    this.dispatchEventToListeners(MobileThrottling.ThrottlingManager.Events.RateChanged, this._cpuThrottlingRate);
+  }
+
+  /**
+   * @override
+   * @param {!SDK.EmulationModel} emulationModel
+   */
+  modelAdded(emulationModel) {
+    if (this._cpuThrottlingRate !== MobileThrottling.CPUThrottlingRates.NoThrottling)
+      emulationModel.setCPUThrottlingRate(this._cpuThrottlingRate);
+  }
+
+  /**
+   * @override
+   * @param {!SDK.EmulationModel} emulationModel
+   */
+  modelRemoved(emulationModel) {
+  }
+
+  /**
+   * @return {!UI.ToolbarComboBox}
+   */
+  createCPUThrottlingSelector() {
+    const control = new UI.ToolbarComboBox(
+        event => this.setCPUThrottlingRate(this._cpuThrottlingRates[event.target.selectedIndex]));
+    this._cpuThrottlingControls.add(control);
+    const currentRate = this._cpuThrottlingRate;
+
+    for (let i = 0; i < this._cpuThrottlingRates.length; ++i) {
+      const rate = this._cpuThrottlingRates[i];
+      const title = rate === 1 ? Common.UIString('No throttling') : Common.UIString('%d\xD7 slowdown', rate);
+      const option = control.createOption(title);
+      control.addOption(option);
+      if (currentRate === rate)
+        control.setSelectedIndex(i);
+    }
+    return control;
+  }
+};
+
+/** @enum {symbol} */
+MobileThrottling.ThrottlingManager.Events = {
+  RateChanged: Symbol('RateChanged')
+};
+
+/**
+ * @implements {UI.ActionDelegate}
+ */
+MobileThrottling.ThrottlingManager.ActionDelegate = class {
+  /**
+   * @override
+   * @param {!UI.Context} context
+   * @param {string} actionId
+   * @return {boolean}
+   */
+  handleAction(context, actionId) {
+    if (actionId === 'network-conditions.network-online') {
+      SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.NoThrottlingConditions);
+      return true;
+    }
+    if (actionId === 'network-conditions.network-offline') {
+      SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.OfflineConditions);
+      return true;
+    }
+    return false;
+  }
+};
+
+/**
+ * @return {!MobileThrottling.ThrottlingManager}
+ */
+MobileThrottling.throttlingManager = function() {
+  return self.singleton(MobileThrottling.ThrottlingManager);
+};