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);
+};