Index: third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js b/third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js |
index 1a5c771d7f87ce5b48c49eb6f796d7509e22134c..23c2f6e6f07228a46ed04dbe5d06f3d355c17dbc 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js |
+++ b/third_party/WebKit/Source/devtools/front_end/components/NetworkConditionsSelector.js |
@@ -1,187 +1,123 @@ |
// 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. |
- |
/** |
- * @constructor |
- * @param {function(!Array<!WebInspector.NetworkConditionsGroup>):!Array<?WebInspector.NetworkManager.Conditions>} populateCallback |
- * @param {function(number)} selectCallback |
+ * @unrestricted |
*/ |
-WebInspector.NetworkConditionsSelector = function(populateCallback, selectCallback) |
-{ |
+WebInspector.NetworkConditionsSelector = class { |
+ /** |
+ * @param {function(!Array<!WebInspector.NetworkConditionsGroup>):!Array<?WebInspector.NetworkManager.Conditions>} populateCallback |
+ * @param {function(number)} selectCallback |
+ */ |
+ constructor(populateCallback, selectCallback) { |
this._populateCallback = populateCallback; |
this._selectCallback = selectCallback; |
- this._customSetting = WebInspector.moduleSetting("customNetworkConditions"); |
+ this._customSetting = WebInspector.moduleSetting('customNetworkConditions'); |
this._customSetting.addChangeListener(this._populateOptions, this); |
this._manager = WebInspector.multitargetNetworkManager; |
- this._manager.addEventListener(WebInspector.MultitargetNetworkManager.Events.ConditionsChanged, this._conditionsChanged, this); |
+ this._manager.addEventListener( |
+ WebInspector.MultitargetNetworkManager.Events.ConditionsChanged, this._conditionsChanged, this); |
this._populateOptions(); |
-}; |
- |
-/** @typedef {!{title: string, items: !Array<!WebInspector.NetworkManager.Conditions>}} */ |
-WebInspector.NetworkConditionsGroup; |
- |
-/** |
- * @param {number} throughput |
- * @param {boolean=} plainText |
- * @return {string} |
- */ |
-WebInspector.NetworkConditionsSelector._throughputText = function(throughput, plainText) |
-{ |
+ } |
+ |
+ /** |
+ * @param {number} throughput |
+ * @param {boolean=} plainText |
+ * @return {string} |
+ */ |
+ static _throughputText(throughput, plainText) { |
if (throughput < 0) |
- return ""; |
+ return ''; |
var throughputInKbps = throughput / (1024 / 8); |
- var delimiter = plainText ? "" : " "; |
+ var delimiter = plainText ? '' : ' '; |
if (throughputInKbps < 1024) |
- return WebInspector.UIString("%d%skb/s", throughputInKbps, delimiter); |
+ return WebInspector.UIString('%d%skb/s', throughputInKbps, delimiter); |
if (throughputInKbps < 1024 * 10) |
- return WebInspector.UIString("%.1f%sMb/s", throughputInKbps / 1024, delimiter); |
- return WebInspector.UIString("%d%sMb/s", (throughputInKbps / 1024) | 0, delimiter); |
-}; |
- |
-/** @type {!Array.<!WebInspector.NetworkManager.Conditions>} */ |
-WebInspector.NetworkConditionsSelector._presets = [ |
- WebInspector.NetworkManager.OfflineConditions, |
- {title: "GPRS", download: 50 * 1024 / 8, upload: 20 * 1024 / 8, latency: 500}, |
- {title: "Regular 2G", download: 250 * 1024 / 8, upload: 50 * 1024 / 8, latency: 300}, |
- {title: "Good 2G", download: 450 * 1024 / 8, upload: 150 * 1024 / 8, latency: 150}, |
- {title: "Regular 3G", download: 750 * 1024 / 8, upload: 250 * 1024 / 8, latency: 100}, |
- {title: "Good 3G", download: 1.5 * 1024 * 1024 / 8, upload: 750 * 1024 / 8, latency: 40}, |
- {title: "Regular 4G", download: 4 * 1024 * 1024 / 8, upload: 3 * 1024 * 1024 / 8, latency: 20}, |
- {title: "DSL", download: 2 * 1024 * 1024 / 8, upload: 1 * 1024 * 1024 / 8, latency: 5}, |
- {title: "WiFi", download: 30 * 1024 * 1024 / 8, upload: 15 * 1024 * 1024 / 8, latency: 2} |
-]; |
- |
-/** |
- * @param {!WebInspector.NetworkManager.Conditions} conditions |
- * @param {boolean=} plainText |
- * @return {!{text: string, title: string}} |
- */ |
-WebInspector.NetworkConditionsSelector._conditionsTitle = function(conditions, plainText) |
-{ |
+ return WebInspector.UIString('%.1f%sMb/s', throughputInKbps / 1024, delimiter); |
+ return WebInspector.UIString('%d%sMb/s', (throughputInKbps / 1024) | 0, delimiter); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.NetworkManager.Conditions} conditions |
+ * @param {boolean=} plainText |
+ * @return {!{text: string, title: string}} |
+ */ |
+ static _conditionsTitle(conditions, plainText) { |
var downloadInKbps = conditions.download / (1024 / 8); |
var uploadInKbps = conditions.upload / (1024 / 8); |
var isThrottling = (downloadInKbps >= 0) || (uploadInKbps >= 0) || (conditions.latency > 0); |
var conditionTitle = WebInspector.UIString(conditions.title); |
if (!isThrottling) |
- return {text: conditionTitle, title: conditionTitle}; |
+ return {text: conditionTitle, title: conditionTitle}; |
var downloadText = WebInspector.NetworkConditionsSelector._throughputText(conditions.download, plainText); |
var uploadText = WebInspector.NetworkConditionsSelector._throughputText(conditions.upload, plainText); |
- var pattern = plainText ? "%s (%dms, %s, %s)" : "%s (%dms RTT, %s\u2b07, %s\u2b06)"; |
+ var pattern = plainText ? '%s (%dms, %s, %s)' : '%s (%dms RTT, %s\u2b07, %s\u2b06)'; |
var title = WebInspector.UIString(pattern, conditionTitle, conditions.latency, downloadText, uploadText); |
- return {text: title, title: WebInspector.UIString("Maximum download throughput: %s.\r\nMaximum upload throughput: %s.\r\nMinimum round-trip time: %dms.", downloadText, uploadText, conditions.latency)}; |
-}; |
- |
-WebInspector.NetworkConditionsSelector.prototype = { |
- _populateOptions: function() |
- { |
- var customGroup = {title: WebInspector.UIString("Custom"), items: this._customSetting.get()}; |
- var presetsGroup = {title: WebInspector.UIString("Presets"), items: WebInspector.NetworkConditionsSelector._presets}; |
- var disabledGroup = {title: WebInspector.UIString("Disabled"), items: [WebInspector.NetworkManager.NoThrottlingConditions]}; |
- this._options = this._populateCallback([customGroup, presetsGroup, disabledGroup]); |
- if (!this._conditionsChanged()) { |
- for (var i = this._options.length - 1; i >= 0; i--) { |
- if (this._options[i]) { |
- this.optionSelected(/** @type {!WebInspector.NetworkManager.Conditions} */ (this._options[i])); |
- break; |
- } |
- } |
- } |
- }, |
- |
- revealAndUpdate: function() |
- { |
- WebInspector.Revealer.reveal(this._customSetting); |
- this._conditionsChanged(); |
- }, |
- |
- /** |
- * @param {!WebInspector.NetworkManager.Conditions} conditions |
- */ |
- optionSelected: function(conditions) |
- { |
- this._manager.setNetworkConditions(conditions); |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- _conditionsChanged: function() |
- { |
- 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; |
- } |
-}; |
- |
-/** |
- * @param {!HTMLSelectElement} selectElement |
- */ |
-WebInspector.NetworkConditionsSelector.decorateSelect = function(selectElement) |
-{ |
+ return { |
+ text: title, |
+ title: WebInspector.UIString( |
+ 'Maximum download throughput: %s.\r\nMaximum upload throughput: %s.\r\nMinimum round-trip time: %dms.', |
+ downloadText, uploadText, conditions.latency) |
+ }; |
+ } |
+ |
+ /** |
+ * @param {!HTMLSelectElement} selectElement |
+ */ |
+ static decorateSelect(selectElement) { |
var options = []; |
var selector = new WebInspector.NetworkConditionsSelector(populate, select); |
- selectElement.addEventListener("change", optionSelected, false); |
+ selectElement.addEventListener('change', optionSelected, false); |
/** |
* @param {!Array.<!WebInspector.NetworkConditionsGroup>} groups |
* @return {!Array<?WebInspector.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; |
- if (!i) { |
- groupElement.appendChild(new Option(WebInspector.UIString("Add\u2026"), WebInspector.UIString("Add\u2026"))); |
- options.push(null); |
- } |
- for (var conditions of group.items) { |
- var title = WebInspector.NetworkConditionsSelector._conditionsTitle(conditions, true); |
- var option = new Option(title.text, title.text); |
- option.title = title.title; |
- groupElement.appendChild(option); |
- options.push(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; |
+ if (!i) { |
+ groupElement.appendChild(new Option(WebInspector.UIString('Add\u2026'), WebInspector.UIString('Add\u2026'))); |
+ options.push(null); |
+ } |
+ for (var conditions of group.items) { |
+ var title = WebInspector.NetworkConditionsSelector._conditionsTitle(conditions, true); |
+ var option = new Option(title.text, title.text); |
+ option.title = title.title; |
+ groupElement.appendChild(option); |
+ options.push(conditions); |
} |
- return options; |
+ } |
+ return options; |
} |
- function optionSelected() |
- { |
- if (selectElement.selectedIndex === 0) |
- selector.revealAndUpdate(); |
- else |
- selector.optionSelected(options[selectElement.selectedIndex]); |
+ function optionSelected() { |
+ if (selectElement.selectedIndex === 0) |
+ selector.revealAndUpdate(); |
+ else |
+ selector.optionSelected(options[selectElement.selectedIndex]); |
} |
/** |
* @param {number} index |
*/ |
- function select(index) |
- { |
- if (selectElement.selectedIndex !== index) |
- selectElement.selectedIndex = index; |
+ function select(index) { |
+ if (selectElement.selectedIndex !== index) |
+ selectElement.selectedIndex = index; |
} |
-}; |
+ } |
-/** |
- * @return {!WebInspector.ToolbarMenuButton} |
- */ |
-WebInspector.NetworkConditionsSelector.createToolbarMenuButton = function() |
-{ |
+ /** |
+ * @return {!WebInspector.ToolbarMenuButton} |
+ */ |
+ static createToolbarMenuButton() { |
var button = new WebInspector.ToolbarMenuButton(appendItems); |
- button.setGlyph(""); |
+ button.setGlyph(''); |
button.turnIntoSelect(); |
/** @type {!Array<?WebInspector.NetworkManager.Conditions>} */ |
@@ -193,328 +129,383 @@ WebInspector.NetworkConditionsSelector.createToolbarMenuButton = function() |
/** |
* @param {!WebInspector.ContextMenu} contextMenu |
*/ |
- function appendItems(contextMenu) |
- { |
- for (var index = 0; index < options.length; ++index) { |
- var conditions = options[index]; |
- if (!conditions) |
- contextMenu.appendSeparator(); |
- else |
- contextMenu.appendCheckboxItem(WebInspector.NetworkConditionsSelector._conditionsTitle(conditions, true).text, selector.optionSelected.bind(selector, conditions), selectedIndex === index); |
- } |
- contextMenu.appendItem(WebInspector.UIString("Edit\u2026"), selector.revealAndUpdate.bind(selector)); |
+ function appendItems(contextMenu) { |
+ for (var index = 0; index < options.length; ++index) { |
+ var conditions = options[index]; |
+ if (!conditions) |
+ contextMenu.appendSeparator(); |
+ else |
+ contextMenu.appendCheckboxItem( |
+ WebInspector.NetworkConditionsSelector._conditionsTitle(conditions, true).text, |
+ selector.optionSelected.bind(selector, conditions), selectedIndex === index); |
+ } |
+ contextMenu.appendItem(WebInspector.UIString('Edit\u2026'), selector.revealAndUpdate.bind(selector)); |
} |
/** |
* @param {!Array.<!WebInspector.NetworkConditionsGroup>} groups |
* @return {!Array<?WebInspector.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; |
+ 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); |
+ function select(index) { |
+ selectedIndex = index; |
+ button.setText(options[index].title); |
} |
-}; |
- |
-/** |
- * @return {!WebInspector.ToolbarCheckbox} |
- */ |
-WebInspector.NetworkConditionsSelector.createOfflineToolbarCheckbox = function() |
-{ |
- var checkbox = new WebInspector.ToolbarCheckbox(WebInspector.UIString("Offline"), WebInspector.UIString("Force disconnected from network"), undefined, forceOffline); |
- WebInspector.multitargetNetworkManager.addEventListener(WebInspector.MultitargetNetworkManager.Events.ConditionsChanged, networkConditionsChanged); |
- checkbox.setChecked(WebInspector.multitargetNetworkManager.networkConditions() === WebInspector.NetworkManager.OfflineConditions); |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.ToolbarCheckbox} |
+ */ |
+ static createOfflineToolbarCheckbox() { |
+ var checkbox = new WebInspector.ToolbarCheckbox( |
+ WebInspector.UIString('Offline'), WebInspector.UIString('Force disconnected from network'), undefined, |
+ forceOffline); |
+ WebInspector.multitargetNetworkManager.addEventListener( |
+ WebInspector.MultitargetNetworkManager.Events.ConditionsChanged, networkConditionsChanged); |
+ checkbox.setChecked( |
+ WebInspector.multitargetNetworkManager.networkConditions() === WebInspector.NetworkManager.OfflineConditions); |
var lastNetworkConditions; |
- function forceOffline() |
- { |
- if (checkbox.checked()) { |
- lastNetworkConditions = WebInspector.multitargetNetworkManager.networkConditions(); |
- WebInspector.multitargetNetworkManager.setNetworkConditions(WebInspector.NetworkManager.OfflineConditions); |
- } else { |
- WebInspector.multitargetNetworkManager.setNetworkConditions(lastNetworkConditions); |
- } |
+ function forceOffline() { |
+ if (checkbox.checked()) { |
+ lastNetworkConditions = WebInspector.multitargetNetworkManager.networkConditions(); |
+ WebInspector.multitargetNetworkManager.setNetworkConditions(WebInspector.NetworkManager.OfflineConditions); |
+ } else { |
+ WebInspector.multitargetNetworkManager.setNetworkConditions(lastNetworkConditions); |
+ } |
} |
- function networkConditionsChanged() |
- { |
- var conditions = WebInspector.multitargetNetworkManager.networkConditions(); |
- if (conditions !== WebInspector.NetworkManager.OfflineConditions) |
- lastNetworkConditions = conditions; |
- checkbox.setChecked(conditions === WebInspector.NetworkManager.OfflineConditions); |
+ function networkConditionsChanged() { |
+ var conditions = WebInspector.multitargetNetworkManager.networkConditions(); |
+ if (conditions !== WebInspector.NetworkManager.OfflineConditions) |
+ lastNetworkConditions = conditions; |
+ checkbox.setChecked(conditions === WebInspector.NetworkManager.OfflineConditions); |
} |
return checkbox; |
+ } |
+ |
+ _populateOptions() { |
+ var customGroup = {title: WebInspector.UIString('Custom'), items: this._customSetting.get()}; |
+ var presetsGroup = { |
+ title: WebInspector.UIString('Presets'), |
+ items: WebInspector.NetworkConditionsSelector._presets |
+ }; |
+ var disabledGroup = { |
+ title: WebInspector.UIString('Disabled'), |
+ items: [WebInspector.NetworkManager.NoThrottlingConditions] |
+ }; |
+ this._options = this._populateCallback([customGroup, presetsGroup, disabledGroup]); |
+ if (!this._conditionsChanged()) { |
+ for (var i = this._options.length - 1; i >= 0; i--) { |
+ if (this._options[i]) { |
+ this.optionSelected(/** @type {!WebInspector.NetworkManager.Conditions} */ (this._options[i])); |
+ break; |
+ } |
+ } |
+ } |
+ } |
+ |
+ revealAndUpdate() { |
+ WebInspector.Revealer.reveal(this._customSetting); |
+ this._conditionsChanged(); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.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<!WebInspector.NetworkManager.Conditions>}} */ |
+WebInspector.NetworkConditionsGroup; |
+ |
+ |
+/** @type {!Array.<!WebInspector.NetworkManager.Conditions>} */ |
+WebInspector.NetworkConditionsSelector._presets = [ |
+ WebInspector.NetworkManager.OfflineConditions, |
+ {title: 'GPRS', download: 50 * 1024 / 8, upload: 20 * 1024 / 8, latency: 500}, |
+ {title: 'Regular 2G', download: 250 * 1024 / 8, upload: 50 * 1024 / 8, latency: 300}, |
+ {title: 'Good 2G', download: 450 * 1024 / 8, upload: 150 * 1024 / 8, latency: 150}, |
+ {title: 'Regular 3G', download: 750 * 1024 / 8, upload: 250 * 1024 / 8, latency: 100}, |
+ {title: 'Good 3G', download: 1.5 * 1024 * 1024 / 8, upload: 750 * 1024 / 8, latency: 40}, |
+ {title: 'Regular 4G', download: 4 * 1024 * 1024 / 8, upload: 3 * 1024 * 1024 / 8, latency: 20}, |
+ {title: 'DSL', download: 2 * 1024 * 1024 / 8, upload: 1 * 1024 * 1024 / 8, latency: 5}, |
+ {title: 'WiFi', download: 30 * 1024 * 1024 / 8, upload: 15 * 1024 * 1024 / 8, latency: 2} |
+]; |
+ |
+ |
/** |
- * @constructor |
- * @extends {WebInspector.VBox} |
* @implements {WebInspector.ListWidget.Delegate} |
+ * @unrestricted |
*/ |
-WebInspector.NetworkConditionsSettingsTab = function() |
-{ |
- WebInspector.VBox.call(this, true); |
- this.registerRequiredCSS("components/networkConditionsSettingsTab.css"); |
+WebInspector.NetworkConditionsSettingsTab = class extends WebInspector.VBox { |
+ constructor() { |
+ super(true); |
+ this.registerRequiredCSS('components/networkConditionsSettingsTab.css'); |
- this.contentElement.createChild("div", "header").textContent = WebInspector.UIString("Network Throttling Profiles"); |
+ this.contentElement.createChild('div', 'header').textContent = WebInspector.UIString('Network Throttling Profiles'); |
- var addButton = createTextButton(WebInspector.UIString("Add custom profile..."), this._addButtonClicked.bind(this), "add-conditions-button"); |
+ var addButton = createTextButton( |
+ WebInspector.UIString('Add custom profile...'), this._addButtonClicked.bind(this), 'add-conditions-button'); |
this.contentElement.appendChild(addButton); |
this._list = new WebInspector.ListWidget(this); |
- this._list.element.classList.add("conditions-list"); |
- this._list.registerRequiredCSS("components/networkConditionsSettingsTab.css"); |
+ this._list.element.classList.add('conditions-list'); |
+ this._list.registerRequiredCSS('components/networkConditionsSettingsTab.css'); |
this._list.show(this.contentElement); |
- this._customSetting = WebInspector.moduleSetting("customNetworkConditions"); |
+ this._customSetting = WebInspector.moduleSetting('customNetworkConditions'); |
this._customSetting.addChangeListener(this._conditionsUpdated, this); |
this.setDefaultFocusedElement(addButton); |
this.contentElement.tabIndex = 0; |
-}; |
- |
-WebInspector.NetworkConditionsSettingsTab.prototype = { |
- wasShown: function() |
- { |
- WebInspector.VBox.prototype.wasShown.call(this); |
- this._conditionsUpdated(); |
- }, |
- |
- _conditionsUpdated: function() |
- { |
- this._list.clear(); |
- |
- var conditions = this._customSetting.get(); |
- for (var i = 0; i < conditions.length; ++i) |
- this._list.appendItem(conditions[i], true); |
- |
- this._list.appendSeparator(); |
- |
- conditions = WebInspector.NetworkConditionsSelector._presets; |
- for (var i = 0; i < conditions.length; ++i) |
- this._list.appendItem(conditions[i], false); |
- }, |
- |
- _addButtonClicked: function() |
- { |
- this._list.addNewItem(this._customSetting.get().length, {title: "", download: -1, upload: -1, latency: 0}); |
- }, |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ wasShown() { |
+ super.wasShown(); |
+ this._conditionsUpdated(); |
+ } |
+ |
+ _conditionsUpdated() { |
+ this._list.clear(); |
+ |
+ var conditions = this._customSetting.get(); |
+ for (var i = 0; i < conditions.length; ++i) |
+ this._list.appendItem(conditions[i], true); |
+ |
+ this._list.appendSeparator(); |
+ |
+ conditions = WebInspector.NetworkConditionsSelector._presets; |
+ for (var i = 0; i < conditions.length; ++i) |
+ this._list.appendItem(conditions[i], false); |
+ } |
+ |
+ _addButtonClicked() { |
+ this._list.addNewItem(this._customSetting.get().length, {title: '', download: -1, upload: -1, latency: 0}); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {*} item |
+ * @param {boolean} editable |
+ * @return {!Element} |
+ */ |
+ renderItem(item, editable) { |
+ var conditions = /** @type {!WebInspector.NetworkManager.Conditions} */ (item); |
+ var element = createElementWithClass('div', 'conditions-list-item'); |
+ var title = element.createChild('div', 'conditions-list-text conditions-list-title'); |
+ var titleText = title.createChild('div', 'conditions-list-title-text'); |
+ titleText.textContent = conditions.title; |
+ titleText.title = conditions.title; |
+ element.createChild('div', 'conditions-list-separator'); |
+ element.createChild('div', 'conditions-list-text').textContent = |
+ WebInspector.NetworkConditionsSelector._throughputText(conditions.download); |
+ element.createChild('div', 'conditions-list-separator'); |
+ element.createChild('div', 'conditions-list-text').textContent = |
+ WebInspector.NetworkConditionsSelector._throughputText(conditions.upload); |
+ element.createChild('div', 'conditions-list-separator'); |
+ element.createChild('div', 'conditions-list-text').textContent = WebInspector.UIString('%dms', conditions.latency); |
+ return element; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {*} item |
+ * @param {number} index |
+ */ |
+ removeItemRequested(item, index) { |
+ var list = this._customSetting.get(); |
+ list.splice(index, 1); |
+ this._customSetting.set(list); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {*} item |
+ * @param {!WebInspector.ListWidget.Editor} editor |
+ * @param {boolean} isNew |
+ */ |
+ commitEdit(item, editor, isNew) { |
+ var conditions = /** @type {?WebInspector.NetworkManager.Conditions} */ (item); |
+ conditions.title = editor.control('title').value.trim(); |
+ var download = editor.control('download').value.trim(); |
+ conditions.download = download ? parseInt(download, 10) * (1024 / 8) : -1; |
+ var upload = editor.control('upload').value.trim(); |
+ conditions.upload = upload ? parseInt(upload, 10) * (1024 / 8) : -1; |
+ var latency = editor.control('latency').value.trim(); |
+ conditions.latency = latency ? parseInt(latency, 10) : 0; |
+ |
+ var list = this._customSetting.get(); |
+ if (isNew) |
+ list.push(conditions); |
+ this._customSetting.set(list); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {*} item |
+ * @return {!WebInspector.ListWidget.Editor} |
+ */ |
+ beginEdit(item) { |
+ var conditions = /** @type {?WebInspector.NetworkManager.Conditions} */ (item); |
+ var editor = this._createEditor(); |
+ editor.control('title').value = conditions.title; |
+ editor.control('download').value = conditions.download <= 0 ? '' : String(conditions.download / (1024 / 8)); |
+ editor.control('upload').value = conditions.upload <= 0 ? '' : String(conditions.upload / (1024 / 8)); |
+ editor.control('latency').value = conditions.latency ? String(conditions.latency) : ''; |
+ return editor; |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.ListWidget.Editor} |
+ */ |
+ _createEditor() { |
+ if (this._editor) |
+ return this._editor; |
+ |
+ var editor = new WebInspector.ListWidget.Editor(); |
+ this._editor = editor; |
+ var content = editor.contentElement(); |
+ |
+ var titles = content.createChild('div', 'conditions-edit-row'); |
+ titles.createChild('div', 'conditions-list-text conditions-list-title').textContent = |
+ WebInspector.UIString('Profile Name'); |
+ titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible'); |
+ titles.createChild('div', 'conditions-list-text').textContent = WebInspector.UIString('Download'); |
+ titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible'); |
+ titles.createChild('div', 'conditions-list-text').textContent = WebInspector.UIString('Upload'); |
+ titles.createChild('div', 'conditions-list-separator conditions-list-separator-invisible'); |
+ titles.createChild('div', 'conditions-list-text').textContent = WebInspector.UIString('Latency'); |
+ |
+ var fields = content.createChild('div', 'conditions-edit-row'); |
+ fields.createChild('div', 'conditions-list-text conditions-list-title') |
+ .appendChild(editor.createInput('title', 'text', '', titleValidator)); |
+ fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible'); |
+ |
+ var cell = fields.createChild('div', 'conditions-list-text'); |
+ cell.appendChild(editor.createInput('download', 'text', WebInspector.UIString('kb/s'), throughputValidator)); |
+ cell.createChild('div', 'conditions-edit-optional').textContent = WebInspector.UIString('optional'); |
+ fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible'); |
+ |
+ cell = fields.createChild('div', 'conditions-list-text'); |
+ cell.appendChild(editor.createInput('upload', 'text', WebInspector.UIString('kb/s'), throughputValidator)); |
+ cell.createChild('div', 'conditions-edit-optional').textContent = WebInspector.UIString('optional'); |
+ fields.createChild('div', 'conditions-list-separator conditions-list-separator-invisible'); |
+ |
+ cell = fields.createChild('div', 'conditions-list-text'); |
+ cell.appendChild(editor.createInput('latency', 'text', WebInspector.UIString('ms'), latencyValidator)); |
+ cell.createChild('div', 'conditions-edit-optional').textContent = WebInspector.UIString('optional'); |
+ |
+ return editor; |
/** |
- * @override |
- * @param {*} item |
- * @param {boolean} editable |
- * @return {!Element} |
- */ |
- renderItem: function(item, editable) |
- { |
- var conditions = /** @type {!WebInspector.NetworkManager.Conditions} */ (item); |
- var element = createElementWithClass("div", "conditions-list-item"); |
- var title = element.createChild("div", "conditions-list-text conditions-list-title"); |
- var titleText = title.createChild("div", "conditions-list-title-text"); |
- titleText.textContent = conditions.title; |
- titleText.title = conditions.title; |
- element.createChild("div", "conditions-list-separator"); |
- element.createChild("div", "conditions-list-text").textContent = WebInspector.NetworkConditionsSelector._throughputText(conditions.download); |
- element.createChild("div", "conditions-list-separator"); |
- element.createChild("div", "conditions-list-text").textContent = WebInspector.NetworkConditionsSelector._throughputText(conditions.upload); |
- element.createChild("div", "conditions-list-separator"); |
- element.createChild("div", "conditions-list-text").textContent = WebInspector.UIString("%dms", conditions.latency); |
- return element; |
- }, |
- |
- /** |
- * @override |
* @param {*} item |
* @param {number} index |
+ * @param {!HTMLInputElement|!HTMLSelectElement} input |
+ * @return {boolean} |
*/ |
- removeItemRequested: function(item, index) |
- { |
- var list = this._customSetting.get(); |
- list.splice(index, 1); |
- this._customSetting.set(list); |
- }, |
+ function titleValidator(item, index, input) { |
+ var value = input.value.trim(); |
+ return value.length > 0 && value.length < 50; |
+ } |
/** |
- * @override |
* @param {*} item |
- * @param {!WebInspector.ListWidget.Editor} editor |
- * @param {boolean} isNew |
+ * @param {number} index |
+ * @param {!HTMLInputElement|!HTMLSelectElement} input |
+ * @return {boolean} |
*/ |
- commitEdit: function(item, editor, isNew) |
- { |
- var conditions = /** @type {?WebInspector.NetworkManager.Conditions} */ (item); |
- conditions.title = editor.control("title").value.trim(); |
- var download = editor.control("download").value.trim(); |
- conditions.download = download ? parseInt(download, 10) * (1024 / 8) : -1; |
- var upload = editor.control("upload").value.trim(); |
- conditions.upload = upload ? parseInt(upload, 10) * (1024 / 8) : -1; |
- var latency = editor.control("latency").value.trim(); |
- conditions.latency = latency ? parseInt(latency, 10) : 0; |
- |
- var list = this._customSetting.get(); |
- if (isNew) |
- list.push(conditions); |
- this._customSetting.set(list); |
- }, |
+ function throughputValidator(item, index, input) { |
+ var value = input.value.trim(); |
+ return !value || (/^[\d]+(\.\d+)?|\.\d+$/.test(value) && value >= 0 && value <= 10000000); |
+ } |
/** |
- * @override |
* @param {*} item |
- * @return {!WebInspector.ListWidget.Editor} |
- */ |
- beginEdit: function(item) |
- { |
- var conditions = /** @type {?WebInspector.NetworkManager.Conditions} */ (item); |
- var editor = this._createEditor(); |
- editor.control("title").value = conditions.title; |
- editor.control("download").value = conditions.download <= 0 ? "" : String(conditions.download / (1024 / 8)); |
- editor.control("upload").value = conditions.upload <= 0 ? "" : String(conditions.upload / (1024 / 8)); |
- editor.control("latency").value = conditions.latency ? String(conditions.latency) : ""; |
- return editor; |
- }, |
- |
- /** |
- * @return {!WebInspector.ListWidget.Editor} |
+ * @param {number} index |
+ * @param {!HTMLInputElement|!HTMLSelectElement} input |
+ * @return {boolean} |
*/ |
- _createEditor: function() |
- { |
- if (this._editor) |
- return this._editor; |
- |
- var editor = new WebInspector.ListWidget.Editor(); |
- this._editor = editor; |
- var content = editor.contentElement(); |
- |
- var titles = content.createChild("div", "conditions-edit-row"); |
- titles.createChild("div", "conditions-list-text conditions-list-title").textContent = WebInspector.UIString("Profile Name"); |
- titles.createChild("div", "conditions-list-separator conditions-list-separator-invisible"); |
- titles.createChild("div", "conditions-list-text").textContent = WebInspector.UIString("Download"); |
- titles.createChild("div", "conditions-list-separator conditions-list-separator-invisible"); |
- titles.createChild("div", "conditions-list-text").textContent = WebInspector.UIString("Upload"); |
- titles.createChild("div", "conditions-list-separator conditions-list-separator-invisible"); |
- titles.createChild("div", "conditions-list-text").textContent = WebInspector.UIString("Latency"); |
- |
- var fields = content.createChild("div", "conditions-edit-row"); |
- fields.createChild("div", "conditions-list-text conditions-list-title").appendChild(editor.createInput("title", "text", "", titleValidator)); |
- fields.createChild("div", "conditions-list-separator conditions-list-separator-invisible"); |
- |
- var cell = fields.createChild("div", "conditions-list-text"); |
- cell.appendChild(editor.createInput("download", "text", WebInspector.UIString("kb/s"), throughputValidator)); |
- cell.createChild("div", "conditions-edit-optional").textContent = WebInspector.UIString("optional"); |
- fields.createChild("div", "conditions-list-separator conditions-list-separator-invisible"); |
- |
- cell = fields.createChild("div", "conditions-list-text"); |
- cell.appendChild(editor.createInput("upload", "text", WebInspector.UIString("kb/s"), throughputValidator)); |
- cell.createChild("div", "conditions-edit-optional").textContent = WebInspector.UIString("optional"); |
- fields.createChild("div", "conditions-list-separator conditions-list-separator-invisible"); |
- |
- cell = fields.createChild("div", "conditions-list-text"); |
- cell.appendChild(editor.createInput("latency", "text", WebInspector.UIString("ms"), latencyValidator)); |
- cell.createChild("div", "conditions-edit-optional").textContent = WebInspector.UIString("optional"); |
- |
- return editor; |
- |
- /** |
- * @param {*} item |
- * @param {number} index |
- * @param {!HTMLInputElement|!HTMLSelectElement} input |
- * @return {boolean} |
- */ |
- function titleValidator(item, index, input) |
- { |
- var value = input.value.trim(); |
- return value.length > 0 && value.length < 50; |
- } |
- |
- /** |
- * @param {*} item |
- * @param {number} index |
- * @param {!HTMLInputElement|!HTMLSelectElement} input |
- * @return {boolean} |
- */ |
- function throughputValidator(item, index, input) |
- { |
- var value = input.value.trim(); |
- return !value || (/^[\d]+(\.\d+)?|\.\d+$/.test(value) && value >= 0 && value <= 10000000); |
- } |
- |
- /** |
- * @param {*} item |
- * @param {number} index |
- * @param {!HTMLInputElement|!HTMLSelectElement} input |
- * @return {boolean} |
- */ |
- function latencyValidator(item, index, input) |
- { |
- var value = input.value.trim(); |
- return !value || (/^[\d]+$/.test(value) && value >= 0 && value <= 1000000); |
- } |
- }, |
- |
- __proto__: WebInspector.VBox.prototype |
+ function latencyValidator(item, index, input) { |
+ var value = input.value.trim(); |
+ return !value || (/^[\d]+$/.test(value) && value >= 0 && value <= 1000000); |
+ } |
+ } |
}; |
/** |
- * @constructor |
* @implements {WebInspector.ActionDelegate} |
+ * @unrestricted |
*/ |
-WebInspector.NetworkConditionsActionDelegate = function() |
-{ |
-}; |
- |
-WebInspector.NetworkConditionsActionDelegate.prototype = { |
- /** |
- * @override |
- * @param {!WebInspector.Context} context |
- * @param {string} actionId |
- * @return {boolean} |
- */ |
- handleAction: function(context, actionId) |
- { |
- if (actionId === "components.network-online") { |
- WebInspector.multitargetNetworkManager.setNetworkConditions(WebInspector.NetworkManager.NoThrottlingConditions); |
- return true; |
- } |
- if (actionId === "components.network-offline") { |
- WebInspector.multitargetNetworkManager.setNetworkConditions(WebInspector.NetworkManager.OfflineConditions); |
- return true; |
- } |
- return false; |
+WebInspector.NetworkConditionsActionDelegate = class { |
+ /** |
+ * @override |
+ * @param {!WebInspector.Context} context |
+ * @param {string} actionId |
+ * @return {boolean} |
+ */ |
+ handleAction(context, actionId) { |
+ if (actionId === 'components.network-online') { |
+ WebInspector.multitargetNetworkManager.setNetworkConditions(WebInspector.NetworkManager.NoThrottlingConditions); |
+ return true; |
+ } |
+ if (actionId === 'components.network-offline') { |
+ WebInspector.multitargetNetworkManager.setNetworkConditions(WebInspector.NetworkManager.OfflineConditions); |
+ return true; |
} |
+ return false; |
+ } |
}; |
/** |
* @param {?NetworkAgent.ResourcePriority} priority |
* @return {string} |
*/ |
-WebInspector.uiLabelForPriority = function(priority) |
-{ |
- var labelMap = WebInspector.uiLabelForPriority._priorityToUILabel; |
- if (!labelMap) { |
- labelMap = new Map([ |
- [NetworkAgent.ResourcePriority.VeryLow, WebInspector.UIString("Lowest")], |
- [NetworkAgent.ResourcePriority.Low, WebInspector.UIString("Low")], |
- [NetworkAgent.ResourcePriority.Medium, WebInspector.UIString("Medium")], |
- [NetworkAgent.ResourcePriority.High, WebInspector.UIString("High")], |
- [NetworkAgent.ResourcePriority.VeryHigh, WebInspector.UIString("Highest")] |
- ]); |
- WebInspector.uiLabelForPriority._priorityToUILabel = labelMap; |
- } |
- return labelMap.get(priority) || WebInspector.UIString("Unknown"); |
+WebInspector.uiLabelForPriority = function(priority) { |
+ var labelMap = WebInspector.uiLabelForPriority._priorityToUILabel; |
+ if (!labelMap) { |
+ labelMap = new Map([ |
+ [NetworkAgent.ResourcePriority.VeryLow, WebInspector.UIString('Lowest')], |
+ [NetworkAgent.ResourcePriority.Low, WebInspector.UIString('Low')], |
+ [NetworkAgent.ResourcePriority.Medium, WebInspector.UIString('Medium')], |
+ [NetworkAgent.ResourcePriority.High, WebInspector.UIString('High')], |
+ [NetworkAgent.ResourcePriority.VeryHigh, WebInspector.UIString('Highest')] |
+ ]); |
+ WebInspector.uiLabelForPriority._priorityToUILabel = labelMap; |
+ } |
+ return labelMap.get(priority) || WebInspector.UIString('Unknown'); |
}; |