diff options
Diffstat (limited to 'Source/WebCore/inspector/front-end/SettingsScreen.js')
-rw-r--r-- | Source/WebCore/inspector/front-end/SettingsScreen.js | 155 |
1 files changed, 124 insertions, 31 deletions
diff --git a/Source/WebCore/inspector/front-end/SettingsScreen.js b/Source/WebCore/inspector/front-end/SettingsScreen.js index ff6e313fe..51d4b6253 100644 --- a/Source/WebCore/inspector/front-end/SettingsScreen.js +++ b/Source/WebCore/inspector/front-end/SettingsScreen.js @@ -45,7 +45,7 @@ WebInspector.SettingsScreen = function(onHide) this._tabbedPane.element.addStyleClass("help-window-main"); this._tabbedPane.element.appendChild(this._createCloseButton()); this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.General, WebInspector.UIString("General"), new WebInspector.GenericSettingsTab()); - this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.UserAgent, WebInspector.UIString("User agent"), new WebInspector.UserAgentSettingsTab()); + this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.UserAgent, WebInspector.UIString("Overrides"), new WebInspector.UserAgentSettingsTab()); if (WebInspector.experimentsSettings.experimentsEnabled) this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Experiments, WebInspector.UIString("Experiments"), new WebInspector.ExperimentsSettingsTab()); this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Shortcuts, WebInspector.UIString("Shortcuts"), WebInspector.shortcutsScreen.createShortcutsTabView()); @@ -351,6 +351,8 @@ WebInspector.UserAgentSettingsTab = function() p.appendChild(this._createDeviceMetricsControl()); if (Capabilities.canOverrideGeolocation && WebInspector.experimentsSettings.geolocationOverride.isEnabled()) p.appendChild(this._createGeolocationOverrideControl()); + if (Capabilities.canOverrideDeviceOrientation && WebInspector.experimentsSettings.deviceOrientationOverride.isEnabled()) + p.appendChild(this._createDeviceOrientationOverrideControl()); p.appendChild(this._createCheckboxSetting(WebInspector.UIString("Emulate touch events"), WebInspector.settings.emulateTouchEvents)); } @@ -364,7 +366,7 @@ WebInspector.UserAgentSettingsTab.prototype = { var checkboxElement = labelElement.createChild("input"); checkboxElement.type = "checkbox"; checkboxElement.checked = !!userAgent; - labelElement.appendChild(document.createTextNode("Override User Agent")); + labelElement.appendChild(document.createTextNode("User Agent")); p.appendChild(this._createUserAgentSelectRowElement(checkboxElement)); return p; }, @@ -507,6 +509,27 @@ WebInspector.UserAgentSettingsTab.prototype = { PageAgent.getScriptExecutionStatus(executionStatusCallback.bind(this)); }, + /** + * Creates an input element under the parentElement with the given id and defaultText. + * It also sets an onblur event listener. + * @param {Element} parentElement + * @param {string} id + * @param {string} defaultText + * @param {function(*)} eventListener + * @return {Element} element + */ + _createInput: function(parentElement, id, defaultText, eventListener) + { + var element = parentElement.createChild("input"); + element.id = id; + element.maxLength = 12; + element.style.width = "80px"; + element.value = defaultText; + element.align = "right"; + element.addEventListener("blur", eventListener, false); + return element; + }, + _createDeviceMetricsControl: function() { const metricsSetting = WebInspector.settings.deviceMetrics.get(); @@ -520,7 +543,7 @@ WebInspector.UserAgentSettingsTab.prototype = { checkboxElement.checked = !metrics || (metrics.width && metrics.height && metrics.fontScaleFactor); checkboxElement.addEventListener("click", this._onMetricsCheckboxClicked.bind(this), false); this._metricsCheckboxElement = checkboxElement; - labelElement.appendChild(document.createTextNode(WebInspector.UIString("Override device metrics"))); + labelElement.appendChild(document.createTextNode(WebInspector.UIString("Device metrics"))); const metricsSectionElement = this._createDeviceMetricsElement(metrics); p.appendChild(metricsSectionElement); @@ -604,17 +627,6 @@ WebInspector.UserAgentSettingsTab.prototype = { var fieldsetElement = document.createElement("fieldset"); fieldsetElement.id = "metrics-override-section"; - function createInput(parentElement, id, defaultText) - { - var element = parentElement.createChild("input"); - element.id = id; - element.maxLength = 6; - element.style.width = "48px"; - element.value = defaultText; - element.addEventListener("blur", this._applyDeviceMetricsUserInput.bind(this), false); - return element; - } - function swapDimensionsClicked(event) { var widthValue = this._widthOverrideElement.value; @@ -629,9 +641,9 @@ WebInspector.UserAgentSettingsTab.prototype = { var cellElement = rowElement.createChild("td"); cellElement.appendChild(document.createTextNode(WebInspector.UIString("Screen resolution:"))); cellElement = rowElement.createChild("td"); - this._widthOverrideElement = createInput.call(this, cellElement, "metrics-override-width", String(metrics.width || screen.width)); + this._widthOverrideElement = this._createInput(cellElement, "metrics-override-width", String(metrics.width || screen.width), this._applyDeviceMetricsUserInput.bind(this)); cellElement.appendChild(document.createTextNode(" \u00D7 ")); // MULTIPLICATION SIGN. - this._heightOverrideElement = createInput.call(this, cellElement, "metrics-override-height", String(metrics.height || screen.height)); + this._heightOverrideElement = this._createInput(cellElement, "metrics-override-height", String(metrics.height || screen.height), this._applyDeviceMetricsUserInput.bind(this)); cellElement.appendChild(document.createTextNode(" \u2014 ")); // EM DASH. this._swapDimensionsElement = cellElement.createChild("button"); this._swapDimensionsElement.appendChild(document.createTextNode(" \u21C4 ")); // RIGHTWARDS ARROW OVER LEFTWARDS ARROW. @@ -642,7 +654,7 @@ WebInspector.UserAgentSettingsTab.prototype = { cellElement = rowElement.createChild("td"); cellElement.appendChild(document.createTextNode(WebInspector.UIString("Font scale factor:"))); cellElement = rowElement.createChild("td"); - this._fontScaleFactorOverrideElement = createInput.call(this, cellElement, "metrics-override-font-scale", String(metrics.fontScaleFactor || 1)); + this._fontScaleFactorOverrideElement = this._createInput(cellElement, "metrics-override-font-scale", String(metrics.fontScaleFactor || 1), this._applyDeviceMetricsUserInput.bind(this)); rowElement = tableElement.createChild("tr"); cellElement = rowElement.createChild("td"); @@ -728,26 +740,14 @@ WebInspector.UserAgentSettingsTab.prototype = { var fieldsetElement = document.createElement("fieldset"); fieldsetElement.id = "geolocation-override-section"; - function createInput(parentElement, id, defaultText) - { - var element = parentElement.createChild("input"); - element.id = id; - element.maxLength = 12; - element.style.width = "80px"; - element.value = defaultText; - element.addEventListener("blur", this._applyGeolocationUserInput.bind(this), false); - return element; - } - var tableElement = fieldsetElement.createChild("table"); - var rowElement = tableElement.createChild("tr"); var cellElement = rowElement.createChild("td"); cellElement.appendChild(document.createTextNode(WebInspector.UIString("Geolocation Position") + ":")); cellElement = rowElement.createChild("td"); - this._latitudeElement = createInput.call(this, cellElement, "geolocation-override-latitude", String(geolocation.latitude)); + this._latitudeElement = this._createInput(cellElement, "geolocation-override-latitude", String(geolocation.latitude), this._applyGeolocationUserInput.bind(this)); cellElement.appendChild(document.createTextNode(" , ")); - this._longitudeElement = createInput.call(this, cellElement, "geolocation-override-longitude", String(geolocation.longitude)); + this._longitudeElement = this._createInput(cellElement, "geolocation-override-longitude", String(geolocation.longitude), this._applyGeolocationUserInput.bind(this)); rowElement = tableElement.createChild("tr"); cellElement = rowElement.createChild("td"); var geolocationErrorLabelElement = document.createElement("label"); @@ -761,6 +761,99 @@ WebInspector.UserAgentSettingsTab.prototype = { cellElement.appendChild(geolocationErrorLabelElement); return fieldsetElement; + }, + + _createDeviceOrientationOverrideControl: function() + { + const deviceOrientationSetting = WebInspector.settings.deviceOrientationOverride.get(); + var deviceOrientation = WebInspector.UserAgentSupport.DeviceOrientation.parseSetting(deviceOrientationSetting); + + var p = document.createElement("p"); + var labelElement = p.createChild("label"); + var checkboxElement = labelElement.createChild("input"); + checkboxElement.id = "device-orientation-override-checkbox"; + checkboxElement.type = "checkbox"; + checkboxElement.checked = !deviceOrientation; + checkboxElement.addEventListener("click", this._onDeviceOrientationOverrideCheckboxClicked.bind(this), false); + this._deviceOrientationOverrideCheckboxElement = checkboxElement; + labelElement.appendChild(document.createTextNode(WebInspector.UIString("Override Device Orientation"))); + + var deviceOrientationSectionElement = this._createDeviceOrientationOverrideElement(deviceOrientation); + p.appendChild(deviceOrientationSectionElement); + this._deviceOrientationSectionElement = deviceOrientationSectionElement; + + this._setDeviceOrientation(deviceOrientation, false, true); + + return p; + }, + + _onDeviceOrientationOverrideCheckboxClicked: function() + { + var controlsDisabled = !this._deviceOrientationOverrideCheckboxElement.checked; + this._alphaElement.disabled = controlsDisabled; + this._betaElement.disabled = controlsDisabled; + this._gammaElement.disabled = controlsDisabled; + + if (this._deviceOrientationOverrideCheckboxElement.checked) { + var deviceOrientation = WebInspector.UserAgentSupport.DeviceOrientation.parseUserInput(this._alphaElement.value, this._betaElement.value, this._gammaElement.value); + if (deviceOrientation) + this._setDeviceOrientation(deviceOrientation, false, false); + if (!this._alphaElement.value) + this._alphaElement.focus(); + } else + WebInspector.UserAgentSupport.DeviceOrientation.clearDeviceOrientationOverride(); + }, + + _applyDeviceOrientationUserInput: function() + { + this._setDeviceOrientation(WebInspector.UserAgentSupport.DeviceOrientation.parseUserInput(this._alphaElement.value.trim(), this._betaElement.value.trim(), this._gammaElement.value.trim()), true, false); + }, + + /** + * @param {?WebInspector.UserAgentSupport.DeviceOrientation} deviceOrientation + * @param {boolean} userInputModified + * @param {boolean} updateCheckbox + */ + _setDeviceOrientation: function(deviceOrientation, userInputModified, updateCheckbox) + { + if (!deviceOrientation) + return; + + if (!userInputModified) { + this._alphaElement.value = deviceOrientation.alpha; + this._betaElement.value = deviceOrientation.beta; + this._gammaElement.value = deviceOrientation.gamma; + } + + var value = deviceOrientation.toSetting(); + WebInspector.settings.deviceOrientationOverride.set(value); + + if (this._deviceOrientationOverrideCheckboxElement && updateCheckbox) { + this._deviceOrientationOverrideCheckboxElement.checked = !!deviceOrientation.toSetting(); + this._onDeviceOrientationOverrideCheckboxClicked(); + } + }, + + /** + * @param {WebInspector.UserAgentSupport.DeviceOrientation} deviceOrientation + */ + _createDeviceOrientationOverrideElement: function(deviceOrientation) + { + var fieldsetElement = document.createElement("fieldset"); + fieldsetElement.id = "device-orientation-override-section"; + + var tableElement = fieldsetElement.createChild("table"); + + var rowElement = tableElement.createChild("tr"); + var cellElement = rowElement.createChild("td"); + cellElement.appendChild(document.createTextNode("\u03B1: ")); + this._alphaElement = this._createInput(cellElement, "device-orientation-override-alpha", String(deviceOrientation.alpha), this._applyDeviceOrientationUserInput.bind(this)); + cellElement.appendChild(document.createTextNode(" \u03B2: ")); + this._betaElement = this._createInput(cellElement, "device-orientation-override-beta", String(deviceOrientation.beta), this._applyDeviceOrientationUserInput.bind(this)); + cellElement.appendChild(document.createTextNode(" \u03B3: ")); + this._gammaElement = this._createInput(cellElement, "device-orientation-override-gamma", String(deviceOrientation.gamma), this._applyDeviceOrientationUserInput.bind(this)); + + return fieldsetElement; } } |