Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(803)

Unified Diff: third_party/WebKit/Source/devtools/front_end/network_conditions/NetworkConditionsSelector.js

Issue 2915883002: DevTools: prepare to unify Network and CPU throttling UI (Closed)
Patch Set: gs Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/network_conditions/NetworkConditionsSelector.js
diff --git a/third_party/WebKit/Source/devtools/front_end/network_conditions/NetworkConditionsSelector.js b/third_party/WebKit/Source/devtools/front_end/network_conditions/NetworkConditionsSelector.js
deleted file mode 100644
index a99c6a2038b50d83c573b0b5d0b754f527bb0503..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/devtools/front_end/network_conditions/NetworkConditionsSelector.js
+++ /dev/null
@@ -1,248 +0,0 @@
-// Copyright 2015 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.
-/**
- * @unrestricted
- */
-NetworkConditions.NetworkConditionsSelector = class {
- /**
- * @param {function(!Array<!NetworkConditions.NetworkConditionsGroup>):!Array<?SDK.NetworkManager.Conditions>} populateCallback
- * @param {function(number)} selectCallback
- */
- constructor(populateCallback, selectCallback) {
- this._populateCallback = populateCallback;
- this._selectCallback = selectCallback;
- this._customSetting = Common.moduleSetting('customNetworkConditions');
- this._customSetting.addChangeListener(this._populateOptions, this);
- this._manager = SDK.multitargetNetworkManager;
- this._manager.addEventListener(
- SDK.MultitargetNetworkManager.Events.ConditionsChanged, this._conditionsChanged, this);
- this._populateOptions();
- }
-
- /**
- * @param {number} throughput
- * @param {boolean=} plainText
- * @return {string}
- */
- static throughputText(throughput, plainText) {
- if (throughput < 0)
- return '';
- var throughputInKbps = throughput / (1024 / 8);
- var delimiter = plainText ? '' : ' ';
- if (throughputInKbps < 1024)
- return Common.UIString('%d%skb/s', throughputInKbps, delimiter);
- if (throughputInKbps < 1024 * 10)
- return Common.UIString('%.1f%sMb/s', throughputInKbps / 1024, delimiter);
- return Common.UIString('%d%sMb/s', (throughputInKbps / 1024) | 0, delimiter);
- }
-
- /**
- * @param {!HTMLSelectElement} selectElement
- */
- static decorateSelect(selectElement) {
- var options = [];
- var selector = new NetworkConditions.NetworkConditionsSelector(populate, select);
- selectElement.addEventListener('change', optionSelected, false);
-
- /**
- * @param {!Array.<!NetworkConditions.NetworkConditionsGroup>} groups
- * @return {!Array<?SDK.NetworkManager.Conditions>}
- */
- function populate(groups) {
- selectElement.removeChildren();
- options = [];
- for (var i = 0; i < groups.length; ++i) {
- var group = groups[i];
- var groupElement = selectElement.createChild('optgroup');
- groupElement.label = group.title;
- for (var conditions of group.items) {
- var title = Common.UIString(conditions.title);
- var 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.ToolbarMenuButton}
- */
- static createToolbarMenuButton() {
- var button = new UI.ToolbarMenuButton(appendItems);
- button.setGlyph('');
- button.turnIntoSelect();
-
- /** @type {!Array<?SDK.NetworkManager.Conditions>} */
- var options = [];
- var selectedIndex = -1;
- var selector = new NetworkConditions.NetworkConditionsSelector(populate, select);
- return button;
-
- /**
- * @param {!UI.ContextMenu} contextMenu
- */
- function appendItems(contextMenu) {
- for (var index = 0; index < options.length; ++index) {
- var conditions = options[index];
- if (!conditions) {
- contextMenu.appendSeparator();
- } else {
- contextMenu.appendCheckboxItem(
- Common.UIString(conditions.title), selector.optionSelected.bind(selector, conditions),
- selectedIndex === index);
- }
- }
- contextMenu.appendItem(Common.UIString('Edit\u2026'), selector.revealAndUpdate.bind(selector));
- }
-
- /**
- * @param {!Array.<!NetworkConditions.NetworkConditionsGroup>} groups
- * @return {!Array<?SDK.NetworkManager.Conditions>}
- */
- function populate(groups) {
- options = [];
- for (var group of groups) {
- for (var 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);
- }
- }
-
- /**
- * @return {!UI.ToolbarCheckbox}
- */
- static createOfflineToolbarCheckbox() {
- var checkbox = new UI.ToolbarCheckbox(
- Common.UIString('Offline'), Common.UIString('Force disconnected from network'), forceOffline);
- SDK.multitargetNetworkManager.addEventListener(
- SDK.MultitargetNetworkManager.Events.ConditionsChanged, networkConditionsChanged);
- checkbox.setChecked(SDK.multitargetNetworkManager.networkConditions() === SDK.NetworkManager.OfflineConditions);
-
- function forceOffline() {
- if (checkbox.checked()) {
- NetworkConditions.NetworkConditionsSelector._lastNetworkConditions =
- SDK.multitargetNetworkManager.networkConditions();
- SDK.multitargetNetworkManager.setNetworkConditions(SDK.NetworkManager.OfflineConditions);
- } else {
- SDK.multitargetNetworkManager.setNetworkConditions(
- NetworkConditions.NetworkConditionsSelector._lastNetworkConditions);
- }
- }
-
- function networkConditionsChanged() {
- var conditions = SDK.multitargetNetworkManager.networkConditions();
- checkbox.setChecked(conditions === SDK.NetworkManager.OfflineConditions);
- }
- return checkbox;
- }
-
- _populateOptions() {
- var customGroup = {title: Common.UIString('Custom'), items: this._customSetting.get()};
- var presetsGroup = {title: Common.UIString('Presets'), items: NetworkConditions.NetworkConditionsSelector.presets};
- var disabledGroup = {title: Common.UIString('Disabled'), items: [SDK.NetworkManager.NoThrottlingConditions]};
- this._options = this._populateCallback([disabledGroup, presetsGroup, customGroup]);
- if (!this._conditionsChanged()) {
- for (var i = this._options.length - 1; i >= 0; i--) {
- if (this._options[i]) {
- this.optionSelected(/** @type {!SDK.NetworkManager.Conditions} */ (this._options[i]));
- break;
- }
- }
- }
- }
-
- revealAndUpdate() {
- Common.Revealer.reveal(this._customSetting);
- this._conditionsChanged();
- }
-
- /**
- * @param {!SDK.NetworkManager.Conditions} conditions
- */
- optionSelected(conditions) {
- this._manager.setNetworkConditions(conditions);
- }
-
- /**
- * @return {boolean}
- */
- _conditionsChanged() {
- var value = this._manager.networkConditions();
- for (var index = 0; index < this._options.length; ++index) {
- var option = this._options[index];
- if (option && option.download === value.download && option.upload === value.upload &&
- option.latency === value.latency && option.title === value.title) {
- this._selectCallback(index);
- return true;
- }
- }
- return false;
- }
-};
-
-/** @typedef {!{title: string, items: !Array<!SDK.NetworkManager.Conditions>}} */
-NetworkConditions.NetworkConditionsGroup;
-
-
-/** @type {!Array.<!SDK.NetworkManager.Conditions>} */
-NetworkConditions.NetworkConditionsSelector.presets = [
- SDK.NetworkManager.OfflineConditions,
- {title: 'Slow 3G', download: 500 * 1024 / 8 * .8, upload: 500 * 1024 / 8 * .8, latency: 400 * 5},
- {title: 'Fast 3G', download: 1.6 * 1024 * 1024 / 8 * .9, upload: 750 * 1024 / 8 * .9, latency: 150 * 3.75}
-];
-
-/**
- * @implements {UI.ActionDelegate}
- * @unrestricted
- */
-NetworkConditions.NetworkConditionsActionDelegate = 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;
- }
-};

Powered by Google App Engine
This is Rietveld 408576698