Index: Source/devtools/front_end/elements/OverridesView.js |
diff --git a/Source/devtools/front_end/elements/OverridesView.js b/Source/devtools/front_end/elements/OverridesView.js |
index c046ef1e6cf91ba4ab9371aaacf9c98c1d7cbe7a..ee42fc626fd75330b0e808e91288769f940a43c7 100644 |
--- a/Source/devtools/front_end/elements/OverridesView.js |
+++ b/Source/devtools/front_end/elements/OverridesView.js |
@@ -43,9 +43,10 @@ WebInspector.OverridesView = function() |
this._tabbedPane.shrinkableTabs = false; |
this._tabbedPane.verticalTabLayout = true; |
- if (!WebInspector.overridesSupport.isInspectingDevice()) |
+ if (!WebInspector.overridesSupport.isInspectingDevice()) { |
new WebInspector.OverridesView.DeviceTab().appendAsTab(this._tabbedPane); |
- new WebInspector.OverridesView.MediaTab().appendAsTab(this._tabbedPane); |
+ new WebInspector.OverridesView.MediaTab().appendAsTab(this._tabbedPane); |
+ } |
new WebInspector.OverridesView.NetworkTab().appendAsTab(this._tabbedPane); |
new WebInspector.OverridesView.SensorsTab().appendAsTab(this._tabbedPane); |
@@ -149,10 +150,9 @@ WebInspector.OverridesView.Tab.prototype = { |
*/ |
WebInspector.OverridesView.DeviceTab = function() |
{ |
- WebInspector.OverridesView.Tab.call(this, "device", WebInspector.UIString("Device"), [WebInspector.overridesSupport.settings.emulateDevice]); |
+ WebInspector.OverridesView.Tab.call(this, "device", WebInspector.UIString("Device"), [], [function(){return true;}]); |
this.element.classList.add("overrides-device"); |
- this.element.appendChild(WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("Device"), WebInspector.overridesSupport.settings.emulateDevice, true)); |
this.element.appendChild(this._createDeviceElement()); |
var footnote = this.element.createChild("p", "help-footnote"); |
@@ -165,9 +165,10 @@ WebInspector.OverridesView.DeviceTab = function() |
WebInspector.OverridesView.DeviceTab.prototype = { |
_createDeviceElement: function() |
{ |
- var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.overridesSupport.settings.emulateDevice); |
+ var fieldsetElement = document.createElement("fieldset"); |
fieldsetElement.id = "metrics-override-section"; |
+ fieldsetElement.createChild("span").textContent = WebInspector.UIString("Device:"); |
fieldsetElement.appendChild(WebInspector.overridesSupport.createDeviceSelect(document)); |
var tableElement = fieldsetElement.createChild("table", "nowrap"); |
@@ -177,14 +178,14 @@ WebInspector.OverridesView.DeviceTab.prototype = { |
cellElement.appendChild(document.createTextNode(WebInspector.UIString("Resolution:"))); |
cellElement = rowElement.createChild("td"); |
- var widthOverrideInput = WebInspector.SettingsUI.createSettingInputField("", WebInspector.overridesSupport.settings.deviceWidth, true, 4, "80px", WebInspector.OverridesSupport.integerInputValidator, true); |
+ var widthOverrideInput = WebInspector.SettingsUI.createSettingInputField("", WebInspector.overridesSupport.settings.deviceWidth, true, 4, "80px", WebInspector.OverridesSupport.deviceSizeValidator, true, true, WebInspector.UIString("--")); |
cellElement.appendChild(widthOverrideInput); |
this._swapDimensionsElement = cellElement.createChild("button", "overrides-swap"); |
this._swapDimensionsElement.appendChild(document.createTextNode(" \u21C4 ")); // RIGHTWARDS ARROW OVER LEFTWARDS ARROW. |
this._swapDimensionsElement.title = WebInspector.UIString("Swap dimensions"); |
this._swapDimensionsElement.addEventListener("click", WebInspector.overridesSupport.swapDimensions.bind(WebInspector.overridesSupport), false); |
this._swapDimensionsElement.tabIndex = -1; |
- var heightOverrideInput = WebInspector.SettingsUI.createSettingInputField("", WebInspector.overridesSupport.settings.deviceHeight, true, 4, "80px", WebInspector.OverridesSupport.integerInputValidator, true); |
+ var heightOverrideInput = WebInspector.SettingsUI.createSettingInputField("", WebInspector.overridesSupport.settings.deviceHeight, true, 4, "80px", WebInspector.OverridesSupport.deviceSizeValidator, true, true, WebInspector.UIString("--")); |
cellElement.appendChild(heightOverrideInput); |
rowElement = tableElement.createChild("tr"); |
@@ -194,7 +195,7 @@ WebInspector.OverridesView.DeviceTab.prototype = { |
rowElement = tableElement.createChild("tr"); |
rowElement.title = WebInspector.UIString("Ratio between a device's physical pixels and device-independent pixels."); |
rowElement.createChild("td").appendChild(document.createTextNode(WebInspector.UIString("Device pixel ratio:"))); |
- rowElement.createChild("td").appendChild(WebInspector.SettingsUI.createSettingInputField("", WebInspector.overridesSupport.settings.deviceScaleFactor, true, 4, "80px", WebInspector.OverridesSupport.doubleInputValidator, true)); |
+ rowElement.createChild("td").appendChild(WebInspector.SettingsUI.createSettingInputField("", WebInspector.overridesSupport.settings.deviceScaleFactor, true, 4, "80px", WebInspector.OverridesSupport.deviceScaleFactorValidator, true, true, WebInspector.UIString("--"))); |
var viewportCheckbox = this._createSettingCheckbox(WebInspector.UIString("Emulate mobile"), WebInspector.overridesSupport.settings.emulateViewport); |
viewportCheckbox.title = WebInspector.UIString("Enable meta viewport, overlay scrollbars and default 980px body width"); |
@@ -205,7 +206,8 @@ WebInspector.OverridesView.DeviceTab.prototype = { |
textAutosizingOverrideElement.title = WebInspector.UIString("Text autosizing is the feature that boosts font sizes on mobile devices."); |
fieldsetElement.appendChild(textAutosizingOverrideElement); |
- fieldsetElement.appendChild(this._createSettingCheckbox(WebInspector.UIString("Shrink to fit"), WebInspector.overridesSupport.settings.deviceFitWindow)); |
+ if (!WebInspector.overridesSupport.responsiveDesignAvailable()) |
+ fieldsetElement.appendChild(this._createSettingCheckbox(WebInspector.UIString("Shrink to fit"), WebInspector.overridesSupport.settings.deviceFitWindow)); |
return fieldsetElement; |
}, |
@@ -231,9 +233,6 @@ WebInspector.OverridesView.MediaTab.prototype = { |
{ |
var checkbox = WebInspector.SettingsUI.createSettingCheckbox(WebInspector.UIString("CSS media"), WebInspector.overridesSupport.settings.overrideCSSMedia, true); |
var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.overridesSupport.settings.overrideCSSMedia); |
- if (WebInspector.overridesSupport.isInspectingDevice()) |
- fieldsetElement.disabled = true; |
- |
var mediaSelectElement = fieldsetElement.createChild("select"); |
var mediaTypes = WebInspector.CSSStyleModel.MediaTypes; |
var defaultMedia = WebInspector.overridesSupport.settings.emulatedCSSMedia.get(); |
@@ -274,179 +273,54 @@ WebInspector.OverridesView.MediaTab.prototype = { |
*/ |
WebInspector.OverridesView.NetworkTab = function() |
{ |
- var flags = []; |
+ var predicates = [this._userAgentOverrideEnabled.bind(this)]; |
if (WebInspector.experimentsSettings.networkConditions.isEnabled()) |
- flags.push(WebInspector.overridesSupport.settings.emulateNetworkConditions); |
- WebInspector.OverridesView.Tab.call(this, "network", WebInspector.UIString("Network"), flags, [this._isUserAgentOverrideEnabled.bind(this)]); |
+ predicates.push(this._networkThroughputIsLimited.bind(this)); |
+ WebInspector.OverridesView.Tab.call(this, "network", WebInspector.UIString("Network"), [], predicates); |
this.element.classList.add("overrides-network"); |
- if (WebInspector.experimentsSettings.networkConditions.isEnabled()) { |
- this.element.appendChild(this._createSettingCheckbox(WebInspector.UIString("Limit network throughput"), WebInspector.overridesSupport.settings.emulateNetworkConditions)); |
- this.element.appendChild(this._createNetworkConditionsElement()); |
- } |
+ if (WebInspector.experimentsSettings.networkConditions.isEnabled()) |
+ this._createNetworkConditionsElement(); |
this._createUserAgentSection(); |
} |
WebInspector.OverridesView.NetworkTab.prototype = { |
/** |
- * @return {!Element} |
+ * @return {boolean} |
*/ |
+ _networkThroughputIsLimited: function() |
+ { |
+ return WebInspector.overridesSupport.networkThroughputIsLimited(); |
+ }, |
+ |
_createNetworkConditionsElement: function() |
{ |
- var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.overridesSupport.settings.emulateNetworkConditions); |
+ var fieldsetElement = this.element.createChild("fieldset"); |
+ fieldsetElement.createChild("span").textContent = WebInspector.UIString("Limit network throughput:"); |
var networkThroughput = WebInspector.overridesSupport.createNetworkThroughputSelect(document); |
fieldsetElement.appendChild(networkThroughput); |
- fieldsetElement.createChild("br"); |
- var networkDomains = WebInspector.SettingsUI.createSettingInputField("For domains:", WebInspector.overridesSupport.settings.networkConditionsDomains, false, 0, "", WebInspector.OverridesSupport.networkDomainsValidator, false); |
- networkDomains.querySelector("input").placeholder = WebInspector.UIString("Leave empty to limit all domains"); |
+ var networkDomains = WebInspector.SettingsUI.createSettingInputField("For domains:", WebInspector.overridesSupport.settings.networkConditionsDomains, false, 0, "", WebInspector.OverridesSupport.networkDomainsValidator, false, false, WebInspector.UIString("Leave empty to limit all domains")); |
fieldsetElement.appendChild(networkDomains); |
- return fieldsetElement; |
+ WebInspector.overridesSupport.settings.networkConditionsThroughput.addChangeListener(this.updateActiveState, this); |
}, |
/** |
* @return {boolean} |
*/ |
- _isUserAgentOverrideEnabled: function() |
+ _userAgentOverrideEnabled: function() |
{ |
- return !!WebInspector.overridesSupport.userAgentOverride(); |
- }, |
- |
- _onUserAgentOverrideEnabledChanged: function() |
- { |
- this.updateActiveState(); |
- var enabled = !!WebInspector.overridesSupport.userAgentOverride(); |
- if (this._userAgentCheckbox.checked !== enabled) |
- this._userAgentCheckbox.checked = enabled; |
- this._userAgentFieldset.disabled = !enabled; |
+ return !!WebInspector.overridesSupport.settings.userAgent.get(); |
}, |
_createUserAgentSection: function() |
{ |
- var settings = [WebInspector.overridesSupport.settings.emulateDevice, WebInspector.settings.responsiveDesignEnabled, WebInspector.overridesSupport.settings.deviceUserAgent]; |
- for (var i = 0; i < settings.length; i++) { |
- settings[i].addChangeListener(this._onUserAgentOverrideEnabledChanged.bind(this)); |
- settings[i].addChangeListener(WebInspector.overridesSupport.updateUserAgentToMatchDeviceUserAgent.bind(WebInspector.overridesSupport)); |
- } |
- WebInspector.overridesSupport.settings.overrideUserAgent.addChangeListener(this._onUserAgentOverrideEnabledChanged.bind(this)); |
- WebInspector.overridesSupport.settings.userAgent.addChangeListener(this._onUserAgentOverrideEnabledChanged.bind(this)); |
- |
- var label = this.element.createChild("label"); |
- var checkbox = label.createChild("input"); |
- checkbox.type = "checkbox"; |
- checkbox.name = WebInspector.UIString("Spoof user agent"); |
- label.createTextChild(WebInspector.UIString("Spoof user agent")); |
- |
- function checkboxChanged() |
- { |
- var enabled = checkbox.checked; |
- WebInspector.overridesSupport.settings.overrideUserAgent.set(enabled); |
- if (WebInspector.overridesSupport.isEmulateDeviceEnabled()) |
- WebInspector.overridesSupport.settings.deviceUserAgent.set(enabled ? WebInspector.overridesSupport.settings.userAgent.get() : ""); |
- } |
- checkbox.addEventListener("change", checkboxChanged, false); |
- |
var fieldsetElement = this.element.createChild("fieldset"); |
- this._createUserAgentSelectAndInput(fieldsetElement, settings.concat([WebInspector.overridesSupport.settings.userAgent])); |
+ var userAgentInput = WebInspector.SettingsUI.createSettingInputField("Spoof user agent:", WebInspector.overridesSupport.settings.userAgent, false, 0, "", undefined, false, false, WebInspector.UIString("no override")); |
+ fieldsetElement.appendChild(userAgentInput); |
- this._userAgentFieldset = fieldsetElement; |
- this._userAgentCheckbox = checkbox; |
- this._onUserAgentOverrideEnabledChanged(); |
- }, |
- |
- /** |
- * @param {!Element} fieldsetElement |
- * @param {!Array.<!WebInspector.Setting>} settings |
- */ |
- _createUserAgentSelectAndInput: function(fieldsetElement, settings) |
- { |
- var userAgents = WebInspector.OverridesSupport._userAgents.concat([[WebInspector.UIString("Other"), "Other"]]); |
- |
- var userAgentSelectElement = fieldsetElement.createChild("select"); |
- for (var i = 0; i < userAgents.length; ++i) |
- userAgentSelectElement.add(new Option(userAgents[i][0], userAgents[i][1])); |
- userAgentSelectElement.selectedIndex = 0; |
- |
- fieldsetElement.createChild("br"); |
- |
- var otherUserAgentElement = fieldsetElement.createChild("input"); |
- otherUserAgentElement.type = "text"; |
- otherUserAgentElement.value = otherUserAgentElement.title = WebInspector.overridesSupport.userAgentOverride(); |
- |
- /** |
- * @param {string} userAgent |
- */ |
- function setUserAgentValue(userAgent) |
- { |
- WebInspector.overridesSupport.settings.userAgent.set(userAgent); |
- if (WebInspector.overridesSupport.isEmulateDeviceEnabled()) |
- WebInspector.overridesSupport.settings.deviceUserAgent.set(userAgent); |
- } |
- |
- function userAgentSelected() |
- { |
- var value = userAgentSelectElement.options[userAgentSelectElement.selectedIndex].value; |
- if (value !== "Other") { |
- setUserAgentValue(value); |
- otherUserAgentElement.value = value; |
- otherUserAgentElement.title = value; |
- otherUserAgentElement.disabled = true; |
- } else { |
- otherUserAgentElement.disabled = false; |
- otherUserAgentElement.focus(); |
- } |
- } |
- |
- function settingChanged() |
- { |
- var deviceUserAgent = WebInspector.overridesSupport.isEmulateDeviceEnabled() ? WebInspector.overridesSupport.settings.deviceUserAgent.get() : ""; |
- var value = deviceUserAgent || WebInspector.overridesSupport.settings.userAgent.get(); |
- var options = userAgentSelectElement.options; |
- var selectionRestored = false; |
- for (var i = 0; i < options.length; ++i) { |
- if (options[i].value === value) { |
- userAgentSelectElement.selectedIndex = i; |
- selectionRestored = true; |
- break; |
- } |
- } |
- |
- otherUserAgentElement.disabled = selectionRestored; |
- if (!selectionRestored) |
- userAgentSelectElement.selectedIndex = options.length - 1; |
- |
- if (otherUserAgentElement.value !== value) { |
- otherUserAgentElement.value = value; |
- otherUserAgentElement.title = value; |
- } |
- } |
- |
- function textKeyDown(event) |
- { |
- if (isEnterKey(event)) |
- textChanged(); |
- } |
- |
- function textDoubleClicked() |
- { |
- userAgentSelectElement.selectedIndex = userAgents.length - 1; |
- userAgentSelected(); |
- } |
- |
- function textChanged() |
- { |
- setUserAgentValue(otherUserAgentElement.value); |
- } |
- |
- settingChanged(); |
- for (var i = 0; i < settings.length; i++) |
- settings[i].addChangeListener(settingChanged); |
- |
- userAgentSelectElement.addEventListener("change", userAgentSelected, false); |
- otherUserAgentElement.addEventListener("dblclick", textDoubleClicked, true); |
- otherUserAgentElement.addEventListener("blur", textChanged, false); |
- otherUserAgentElement.addEventListener("keydown", textKeyDown, false); |
+ WebInspector.overridesSupport.settings.userAgent.addChangeListener(this.updateActiveState, this); |
}, |
__proto__: WebInspector.OverridesView.Tab.prototype |
@@ -460,69 +334,19 @@ WebInspector.OverridesView.NetworkTab.prototype = { |
WebInspector.OverridesView.SensorsTab = function() |
{ |
var settings = [WebInspector.overridesSupport.settings.overrideGeolocation, WebInspector.overridesSupport.settings.overrideDeviceOrientation]; |
- var predicates = !WebInspector.overridesSupport.hasTouchInputs() ? [this._isTouchEnabled.bind(this)] : []; |
- WebInspector.OverridesView.Tab.call(this, "sensors", WebInspector.UIString("Sensors"), settings, predicates); |
+ if (!WebInspector.overridesSupport.hasTouchInputs()) |
+ settings.push(WebInspector.overridesSupport.settings.emulateTouch); |
+ WebInspector.OverridesView.Tab.call(this, "sensors", WebInspector.UIString("Sensors"), settings); |
this.element.classList.add("overrides-sensors"); |
this.registerRequiredCSS("accelerometer.css"); |
if (!WebInspector.overridesSupport.hasTouchInputs()) |
- this.element.appendChild(this._createTouchCheckbox()); |
+ this.element.appendChild(this._createSettingCheckbox(WebInspector.UIString("Emulate touch screen"), WebInspector.overridesSupport.settings.emulateTouch, undefined)); |
this._appendGeolocationOverrideControl(); |
this._apendDeviceOrientationOverrideControl(); |
} |
WebInspector.OverridesView.SensorsTab.prototype = { |
- /** |
- * @return {boolean} |
- */ |
- _isTouchEnabled: function() |
- { |
- return WebInspector.overridesSupport.isTouchEmulationEnabled(); |
- }, |
- |
- _onTouchEmulationChanged: function() |
- { |
- this.updateActiveState(); |
- var enabled = WebInspector.overridesSupport.isTouchEmulationEnabled(); |
- if (this._touchCheckbox.checked !== enabled) |
- this._touchCheckbox.checked = enabled; |
- }, |
- |
- /** |
- * @return {!Element} |
- */ |
- _createTouchCheckbox: function() |
- { |
- var settings = [WebInspector.overridesSupport.settings.emulateDevice, WebInspector.settings.responsiveDesignEnabled, WebInspector.overridesSupport.settings.deviceTouch]; |
- for (var i = 0; i < settings.length; i++) { |
- settings[i].addChangeListener(this._onTouchEmulationChanged.bind(this)); |
- settings[i].addChangeListener(WebInspector.overridesSupport.updateSensorsTouchToMatchDeviceTouch.bind(WebInspector.overridesSupport)); |
- } |
- WebInspector.overridesSupport.settings.sensorsTouch.addChangeListener(this._onTouchEmulationChanged.bind(this)); |
- |
- var input = document.createElement("input"); |
- input.type = "checkbox"; |
- input.name = WebInspector.UIString("Emulate touch screen"); |
- this._touchCheckbox = input; |
- |
- var label = document.createElement("label"); |
- label.appendChild(input); |
- label.createTextChild(WebInspector.UIString("Emulate touch screen")); |
- |
- function inputChanged() |
- { |
- var enabled = input.checked; |
- WebInspector.overridesSupport.settings.sensorsTouch.set(enabled); |
- if (WebInspector.overridesSupport.isEmulateDeviceEnabled()) |
- WebInspector.overridesSupport.settings.deviceTouch.set(enabled); |
- } |
- input.addEventListener("change", inputChanged, false); |
- |
- this._onTouchEmulationChanged(); |
- |
- return label; |
- }, |
- |
_appendGeolocationOverrideControl: function() |
{ |
const geolocationSetting = WebInspector.overridesSupport.settings.geolocationOverride.get(); |