summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/devtools/front_end/OverridesView.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/devtools/front_end/OverridesView.js')
-rw-r--r--chromium/third_party/WebKit/Source/devtools/front_end/OverridesView.js1089
1 files changed, 0 insertions, 1089 deletions
diff --git a/chromium/third_party/WebKit/Source/devtools/front_end/OverridesView.js b/chromium/third_party/WebKit/Source/devtools/front_end/OverridesView.js
deleted file mode 100644
index ef0fb75d22b..00000000000
--- a/chromium/third_party/WebKit/Source/devtools/front_end/OverridesView.js
+++ /dev/null
@@ -1,1089 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/**
- * @constructor
- * @extends {WebInspector.View}
- */
-WebInspector.OverridesView = function()
-{
- WebInspector.View.call(this);
- this.registerRequiredCSS("overrides.css");
- this.registerRequiredCSS("helpScreen.css");
- this.element.classList.add("overrides-view", "fill", "vbox");
-
- this._tabbedPane = new WebInspector.TabbedPane();
- this._tabbedPane.shrinkableTabs = false;
- this._tabbedPane.verticalTabLayout = true;
-
- new WebInspector.OverridesView.DeviceTab().appendAsTab(this._tabbedPane);
- new WebInspector.OverridesView.ViewportTab().appendAsTab(this._tabbedPane);
- new WebInspector.OverridesView.UserAgentTab().appendAsTab(this._tabbedPane);
- new WebInspector.OverridesView.SensorsTab().appendAsTab(this._tabbedPane);
-
- this._lastSelectedTabSetting = WebInspector.settings.createSetting("lastSelectedEmulateTab", "device");
- this._tabbedPane.selectTab(this._lastSelectedTabSetting.get());
- this._tabbedPane.addEventListener(WebInspector.TabbedPane.EventTypes.TabSelected, this._tabSelected, this);
- this._tabbedPane.show(this.element);
-
- this._warningFooter = this.element.createChild("div", "overrides-footer");
- this._overridesWarningUpdated();
- WebInspector.overridesSupport.addEventListener(WebInspector.OverridesSupport.Events.OverridesWarningUpdated, this._overridesWarningUpdated, this);
-}
-
-WebInspector.OverridesView.prototype = {
- /**
- * @param {!WebInspector.Event} event
- */
- _tabSelected: function(event)
- {
- this._lastSelectedTabSetting.set(this._tabbedPane.selectedTabId);
- },
-
- _overridesWarningUpdated: function()
- {
- var message = WebInspector.overridesSupport.warningMessage();
- this._warningFooter.enableStyleClass("hidden", !message);
- this._warningFooter.textContent = message;
- },
-
- __proto__: WebInspector.View.prototype
-}
-
-/**
- * @constructor
- * @extends {WebInspector.View}
- * @param {string} id
- * @param {string} name
- * @param {!Array.<!WebInspector.Setting>} settings
- */
-WebInspector.OverridesView.Tab = function(id, name, settings)
-{
- WebInspector.View.call(this);
- this._id = id;
- this._name = name;
- this._settings = settings;
- for (var i = 0; i < settings.length; ++i)
- settings[i].addChangeListener(this._updateActiveState, this);
-}
-
-WebInspector.OverridesView.Tab.prototype = {
- /**
- * @param {!WebInspector.TabbedPane} tabbedPane
- */
- appendAsTab: function(tabbedPane)
- {
- this._tabbedPane = tabbedPane;
- tabbedPane.appendTab(this._id, this._name, this);
- this._updateActiveState();
- },
-
- _updateActiveState: function()
- {
- var active = false;
- for (var i = 0; !active && i < this._settings.length; ++i)
- active = this._settings[i].get();
- this._tabbedPane.element.enableStyleClass("overrides-activate-" + this._id, active);
- this._tabbedPane.changeTabTitle(this._id, active ? this._name + " \u2713" : this._name);
- },
-
- /**
- * 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
- * @param {boolean=} numeric
- * @return {!Element} element
- */
- _createInput: function(parentElement, id, defaultText, eventListener, numeric)
- {
- var element = parentElement.createChild("input");
- element.id = id;
- element.type = "text";
- element.maxLength = 12;
- element.style.width = "80px";
- element.value = defaultText;
- element.align = "right";
- if (numeric)
- element.className = "numeric";
- element.addEventListener("input", eventListener, false);
- element.addEventListener("keydown", keyDownListener, false);
- function keyDownListener(event)
- {
- if (isEnterKey(event))
- eventListener(event);
- }
- return element;
- },
-
- /**
- * @param {string} title
- * @param {function(boolean)} callback
- */
- _createNonPersistedCheckbox: function(title, callback)
- {
- var labelElement = document.createElement("label");
- var checkboxElement = labelElement.createChild("input");
- checkboxElement.type = "checkbox";
- checkboxElement.checked = false;
- checkboxElement.addEventListener("click", onclick, false);
- labelElement.appendChild(document.createTextNode(title));
- return labelElement;
-
- function onclick()
- {
- callback(checkboxElement.checked);
- }
- },
-
- /**
- * @param {string} name
- * @param {!WebInspector.Setting} setting
- * @param {function(boolean)=} callback
- */
- _createSettingCheckbox: function(name, setting, callback)
- {
- var checkbox = WebInspector.SettingsTab.createCheckbox(name, setting.get.bind(setting), listener, true);
-
- function listener(value)
- {
- if (setting.get() === value)
- return;
-
- setting.set(value);
- if (callback)
- callback(value);
- }
-
- setting.addChangeListener(changeListener);
-
- function changeListener()
- {
- if (checkbox.firstChild.checked !== setting.get())
- checkbox.firstChild.checked = setting.get();
- }
- return checkbox;
- }
-}
-
-WebInspector.OverridesView.Tab.prototype.__proto__ = WebInspector.View.prototype;
-
-/**
- * @constructor
- * @extends {WebInspector.OverridesView.Tab}
- */
-WebInspector.OverridesView.DeviceTab = function()
-{
- WebInspector.OverridesView.Tab.call(this, "device", WebInspector.UIString("Device"), []);
- this.element.classList.add("overrides-device");
-
- this._emulatedDeviceSetting = WebInspector.settings.createSetting("emulatedDevice", "Google Nexus 4");
- this._emulateDeviceViewportSetting = WebInspector.settings.overrideDeviceMetrics;
- this._emulateDeviceUserAgentSetting = WebInspector.settings.overrideUserAgent;
-
- this._deviceSelectElement = this.element.createChild("select");
-
- var devices = WebInspector.OverridesView.DeviceTab._phones.concat(WebInspector.OverridesView.DeviceTab._tablets);
- devices.sort();
- var selectionRestored = false;
- for (var i = 0; i < devices.length; ++i) {
- var device = devices[i];
- var option = new Option(device[0], device[0]);
- option._userAgent = device[1];
- option._metrics = device[2];
- this._deviceSelectElement.add(option);
- if (this._emulatedDeviceSetting.get() === device[0]) {
- this._deviceSelectElement.selectedIndex = i;
- selectionRestored = true;
- }
- }
-
- if (!selectionRestored)
- this._deviceSelectElement.selectedIndex = devices.length - 1;
-
- this._deviceSelectElement.addEventListener("change", this._deviceSelected.bind(this), false);
- this._deviceSelectElement.addEventListener("dblclick", this._emulateButtonClicked.bind(this), false);
- this._deviceSelectElement.addEventListener("keypress", this._keyPressed.bind(this), false);
- this._deviceSelectElement.disabled = WebInspector.isInspectingDevice();
-
- var buttonsBar = this.element.createChild("div");
- var emulateButton = buttonsBar.createChild("button", "settings-tab-text-button");
- emulateButton.textContent = WebInspector.UIString("Emulate");
- emulateButton.addEventListener("click", this._emulateButtonClicked.bind(this), false);
- emulateButton.disabled = WebInspector.isInspectingDevice();
- this._emulateButton = emulateButton;
-
- var resetButton = buttonsBar.createChild("button", "settings-tab-text-button");
- resetButton.textContent = WebInspector.UIString("Reset");
- resetButton.addEventListener("click", this._resetButtonClicked.bind(this), false);
-
- this._viewportValueLabel = this.element.createChild("div", "overrides-device-value-label");
- this._viewportValueLabel.textContent = WebInspector.UIString("Viewport:");
- this._viewportValueElement = this._viewportValueLabel.createChild("span", "overrides-device-value");
-
- this._userAgentLabel = this.element.createChild("div", "overrides-device-value-label");
- this._userAgentLabel.textContent = WebInspector.UIString("User agent:");
- this._userAgentValueElement = this._userAgentLabel.createChild("span", "overrides-device-value");
-
- this._updateValueLabels();
-}
-
-// Third element lists device metrics separated by 'x':
-// - screen width,
-// - screen height,
-// - device scale factor,
-// - use text autosizing.
-WebInspector.OverridesView.DeviceTab._phones = [
- ["Apple iPhone 3GS",
- "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
- "320x480x1"],
- ["Apple iPhone 4",
- "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
- "640x960x2"],
- ["Apple iPhone 5",
- "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
- "640x1136x2"],
- ["BlackBerry Z10",
- "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+",
- "768x1280x2"],
- ["BlackBerry Z30",
- "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+",
- "720x1280x2"],
- ["Google Nexus 4",
- "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
- "768x1280x2"],
- ["Google Nexus 5",
- "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
- "1080x1920x3"],
- ["Google Nexus S",
- "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Nexus S Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "480x800x1.5"],
- ["HTC Evo, Touch HD, Desire HD, Desire",
- "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Sprint APA9292KT Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "480x800x1.5"],
- ["HTC One X, EVO LTE",
- "Mozilla/5.0 (Linux; Android 4.0.3; HTC One X Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19",
- "720x1280x2"],
- ["HTC Sensation, Evo 3D",
- "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
- "540x960x1.5"],
- ["LG Optimus 2X, Optimus 3D, Optimus Black",
- "Mozilla/5.0 (Linux; U; Android 2.2; en-us; LG-P990/V08c Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MMS/LG-Android-MMS-V1.0/1.2",
- "480x800x1.5"],
- ["LG Optimus G",
- "Mozilla/5.0 (Linux; Android 4.0; LG-E975 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
- "768x1280x2"],
- ["LG Optimus LTE, Optimus 4X HD",
- "Mozilla/5.0 (Linux; U; Android 2.3; en-us; LG-P930 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "720x1280x1.7"],
- ["LG Optimus One",
- "Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; LG-MS690 Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "320x480x1.5"],
- ["Motorola Defy, Droid, Droid X, Milestone",
- "Mozilla/5.0 (Linux; U; Android 2.0; en-us; Milestone Build/ SHOLS_U2_01.03.1) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17",
- "480x854x1.5"],
- ["Motorola Droid 3, Droid 4, Droid Razr, Atrix 4G, Atrix 2",
- "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Droid Build/FRG22D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "540x960x1"],
- ["Motorola Droid Razr HD",
- "Mozilla/5.0 (Linux; U; Android 2.3; en-us; DROID RAZR 4G Build/6.5.1-73_DHD-11_M1-29) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "720x1280x1"],
- ["Nokia C5, C6, C7, N97, N8, X7",
- "NokiaN97/21.1.107 (SymbianOS/9.4; Series60/5.0 Mozilla/5.0; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebkit/525 (KHTML, like Gecko) BrowserNG/7.1.4",
- "360x640x1"],
- ["Nokia Lumia 7X0, Lumia 8XX, Lumia 900, N800, N810, N900",
- "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 820)",
- "480x800x1.5"],
- ["Samsung Galaxy Note 3",
- "Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
- "1080x1920x2"],
- ["Samsung Galaxy Note II",
- "Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
- "720x1280x2"],
- ["Samsung Galaxy Note",
- "Mozilla/5.0 (Linux; U; Android 2.3; en-us; SAMSUNG-SGH-I717 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "800x1280x2"],
- ["Samsung Galaxy S III, Galaxy Nexus",
- "Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
- "720x1280x2"],
- ["Samsung Galaxy S, S II, W",
- "Mozilla/5.0 (Linux; U; Android 2.1; en-us; GT-I9000 Build/ECLAIR) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2",
- "480x800x1.5"],
- ["Samsung Galaxy S4",
- "Mozilla/5.0 (Linux; U; Android 2.1; en-us; GT-I9000 Build/ECLAIR) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2",
- "1080x1920x3"],
- ["Sony Xperia S, Ion",
- "Mozilla/5.0 (Linux; U; Android 4.0; en-us; LT28at Build/6.1.C.1.111) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
- "720x1280x2"],
- ["Sony Xperia Sola, U",
- "Mozilla/5.0 (Linux; U; Android 2.3; en-us; SonyEricssonST25i Build/6.0.B.1.564) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "480x854x1"],
- ["Sony Xperia Z, Z1",
- "Mozilla/5.0 (Linux; U; Android 4.2; en-us; SonyC6903 Build/14.1.G.1.518) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
- "1080x1920x3"],
-];
-
-WebInspector.OverridesView.DeviceTab._tablets = [
- ["Amazon Amazon Kindle Fire HD 7\"",
- "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire HD Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "1280x800x1.5"],
- ["Amazon Amazon Kindle Fire HD 8.9\"",
- "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire HD Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "1920x1200x1.5"],
- ["Amazon Amazon Kindle Fire",
- "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "1024x600x1"],
- ["Apple iPad 1 / 2 / iPad Mini",
- "Mozilla/5.0 (iPad; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5",
- "1024x768x1"],
- ["Apple iPad 3 / 4",
- "Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
- "2048x1536x2"],
- ["BlackBerry PlayBook",
- "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+",
- "1024x600x1"],
- ["Google Nexus 10",
- "Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
- "2560x1600x2"],
- ["Google Nexus 7 2",
- "Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
- "1920x1200x2"],
- ["Google Nexus 7",
- "Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36",
- "1280x800x1.325"],
- ["Motorola Xoom, Xyboard",
- "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/525.10 (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2",
- "1280x800x1"],
- ["Samsung Galaxy Tab 7.7, 8.9, 10.1",
- "Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "1280x800x1"],
- ["Samsung Galaxy Tab",
- "Mozilla/5.0 (Linux; U; Android 2.2; en-us; SCH-I800 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
- "1024x600x1"],
-];
-
-WebInspector.OverridesView.DeviceTab.prototype = {
- /**
- * @param {!Event} e
- */
- _keyPressed: function(e)
- {
- if (e.keyCode === WebInspector.KeyboardShortcut.Keys.Enter.code)
- this._emulateButtonClicked();
- },
-
- _emulateButtonClicked: function()
- {
- var option = this._deviceSelectElement.options[this._deviceSelectElement.selectedIndex];
- WebInspector.overridesSupport.emulateDevice(option._metrics, option._userAgent);
- },
-
- _resetButtonClicked: function()
- {
- WebInspector.overridesSupport.reset();
- },
-
- _deviceSelected: function()
- {
- var option = this._deviceSelectElement.options[this._deviceSelectElement.selectedIndex];
- this._emulatedDeviceSetting.set(option.value);
- this._updateValueLabels();
- },
-
- _updateValueLabels: function()
- {
- var option = this._deviceSelectElement.options[this._deviceSelectElement.selectedIndex];
- var metrics;
- if (option._metrics && (metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(option._metrics)))
- this._viewportValueElement.textContent = WebInspector.UIString("%s \u00D7 %s, devicePixelRatio = %s", metrics.width, metrics.height, metrics.deviceScaleFactor);
- else
- this._viewportValueElement.textContent = "";
- this._userAgentValueElement.textContent = option._userAgent || "";
- }
-}
-
-WebInspector.OverridesView.DeviceTab.prototype.__proto__ = WebInspector.OverridesView.Tab.prototype;
-
-
-/**
- * @constructor
- * @extends {WebInspector.OverridesView.Tab}
- */
-WebInspector.OverridesView.ViewportTab = function()
-{
- WebInspector.OverridesView.Tab.call(this, "viewport", WebInspector.UIString("Screen"), [WebInspector.settings.overrideDeviceMetrics, WebInspector.settings.overrideCSSMedia]);
- this.element.classList.add("overrides-viewport");
-
- const metricsSetting = WebInspector.settings.deviceMetrics.get();
- var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(metricsSetting);
- var checkbox = this._createSettingCheckbox(WebInspector.UIString("Emulate screen"), WebInspector.settings.overrideDeviceMetrics, this._onMetricsCheckboxClicked.bind(this));
- checkbox.firstChild.disabled = WebInspector.isInspectingDevice();
- WebInspector.settings.deviceMetrics.addChangeListener(this._updateDeviceMetricsElement, this);
-
- this.element.appendChild(checkbox);
- this.element.appendChild(this._createDeviceMetricsElement(metrics));
- this.element.appendChild(this._createMediaEmulationElement());
-
- var footnote = this.element.createChild("p", "help-footnote");
- var footnoteLink = footnote.createChild("a");
- footnoteLink.href = "https://developers.google.com/chrome-developer-tools/docs/mobile-emulation";
- footnoteLink.target = "_blank";
- footnoteLink.createTextChild(WebInspector.UIString("More information about screen emulation"));
-
- this._onMetricsCheckboxClicked(WebInspector.settings.overrideDeviceMetrics.get());
-}
-
-WebInspector.OverridesView.ViewportTab.prototype = {
- /**
- * @param {boolean} enabled
- */
- _onMetricsCheckboxClicked: function(enabled)
- {
- if (enabled && !this._widthOverrideElement.value)
- this._widthOverrideElement.focus();
- this._applyDeviceMetricsUserInput();
- },
-
- _applyDeviceMetricsUserInput: function()
- {
- this._muteRangeListener = true;
- this._widthRangeInput.value = this._widthOverrideElement.value;
- delete this._muteRangeListener;
- if (this._applyDeviceMetricsTimer)
- clearTimeout(this._applyDeviceMetricsTimer);
- this._applyDeviceMetricsTimer = setTimeout(this._doApplyDeviceMetricsUserInput.bind(this), 50);
- },
-
- _doApplyDeviceMetricsUserInput: function()
- {
- delete this._applyDeviceMetricsTimer;
- this._setDeviceMetricsOverride(WebInspector.OverridesSupport.DeviceMetrics.parseUserInput(this._widthOverrideElement.value.trim(), this._heightOverrideElement.value.trim(), this._deviceScaleFactorOverrideElement.value.trim(), this._textAutosizingOverrideCheckbox.checked), true);
- },
-
- /**
- * @param {?WebInspector.OverridesSupport.DeviceMetrics} metrics
- * @param {boolean} userInputModified
- */
- _setDeviceMetricsOverride: function(metrics, userInputModified)
- {
- function setValid(condition, element)
- {
- if (condition)
- element.classList.remove("error-input");
- else
- element.classList.add("error-input");
- }
-
- setValid(metrics && metrics.isWidthValid(), this._widthOverrideElement);
- setValid(metrics && metrics.isHeightValid(), this._heightOverrideElement);
- setValid(metrics && metrics.isDeviceScaleFactorValid(), this._deviceScaleFactorOverrideElement);
-
- if (!metrics)
- return;
-
- if (!userInputModified) {
- this._widthOverrideElement.value = metrics.widthToInput();
- this._heightOverrideElement.value = metrics.heightToInput();
- this._deviceScaleFactorOverrideElement.value = metrics.deviceScaleFactorToInput();
- this._textAutosizingOverrideCheckbox.checked = metrics.textAutosizing;
- }
-
- if (metrics.isValid()) {
- var value = metrics.toSetting();
- if (value !== WebInspector.settings.deviceMetrics.get())
- WebInspector.settings.deviceMetrics.set(value);
- }
- },
-
- /**
- * @param {!WebInspector.OverridesSupport.DeviceMetrics} metrics
- */
- _createDeviceMetricsElement: function(metrics)
- {
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideDeviceMetrics);
- if (WebInspector.isInspectingDevice())
- fieldsetElement.disabled = true;
- fieldsetElement.id = "metrics-override-section";
-
- /**
- * @this {WebInspector.OverridesView.ViewportTab}
- */
- function swapDimensionsClicked()
- {
- var widthValue = this._widthOverrideElement.value;
- this._widthOverrideElement.value = this._heightOverrideElement.value;
- this._heightOverrideElement.value = widthValue;
- this._applyDeviceMetricsUserInput();
- }
-
- var tableElement = fieldsetElement.createChild("table", "nowrap");
-
- var rowElement = tableElement.createChild("tr");
- var cellElement = rowElement.createChild("td");
- cellElement.appendChild(document.createTextNode(WebInspector.UIString("Resolution:")));
- cellElement = rowElement.createChild("td");
- this._widthOverrideElement = this._createInput(cellElement, "metrics-override-width", String(metrics.width || screen.width), this._applyDeviceMetricsUserInput.bind(this), true);
- 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", swapDimensionsClicked.bind(this), false);
- this._swapDimensionsElement.tabIndex = -1;
- this._heightOverrideElement = this._createInput(cellElement, "metrics-override-height", String(metrics.height || screen.height), this._applyDeviceMetricsUserInput.bind(this), true);
-
- rowElement = tableElement.createChild("tr");
- cellElement = rowElement.createChild("td");
- cellElement.colSpan = 4;
- this._widthRangeInput = cellElement.createChild("input");
- this._widthRangeInput.type = "range";
- this._widthRangeInput.min = 100;
- this._widthRangeInput.max = 2000;
- this._widthRangeInput.addEventListener("change", this._rangeValueChanged.bind(this), false);
- this._widthRangeInput.value = this._widthOverrideElement.value;
-
- rowElement = tableElement.createChild("tr");
- rowElement.title = WebInspector.UIString("Ratio between a device's physical pixels and device-independent pixels.");
- cellElement = rowElement.createChild("td");
- cellElement.appendChild(document.createTextNode(WebInspector.UIString("Device pixel ratio:")));
- cellElement = rowElement.createChild("td");
- this._deviceScaleFactorOverrideElement = this._createInput(cellElement, "metrics-override-device-scale", String(metrics.deviceScaleFactor || 1), this._applyDeviceMetricsUserInput.bind(this), true);
-
- var textAutosizingOverrideElement = this._createNonPersistedCheckbox(WebInspector.UIString("Enable text autosizing "), this._applyDeviceMetricsUserInput.bind(this));
- textAutosizingOverrideElement.title = WebInspector.UIString("Text autosizing is the feature that boosts font sizes on mobile devices.");
- this._textAutosizingOverrideCheckbox = textAutosizingOverrideElement.firstChild;
- this._textAutosizingOverrideCheckbox.checked = metrics.textAutosizing;
- fieldsetElement.appendChild(textAutosizingOverrideElement);
-
- var checkbox = this._createSettingCheckbox(WebInspector.UIString("Emulate viewport"), WebInspector.settings.emulateViewport);
- fieldsetElement.appendChild(checkbox);
-
- checkbox = this._createSettingCheckbox(WebInspector.UIString("Shrink to fit"), WebInspector.settings.deviceFitWindow);
- fieldsetElement.appendChild(checkbox);
-
- return fieldsetElement;
- },
-
- _updateDeviceMetricsElement: function()
- {
- const metricsSetting = WebInspector.settings.deviceMetrics.get();
- var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(metricsSetting);
-
- if (this._widthOverrideElement.value !== metrics.width)
- this._widthOverrideElement.value = metrics.width || screen.width;
- this._muteRangeListener = true;
- if (this._widthRangeInput.value != metrics.width)
- this._widthRangeInput.value = metrics.width || screen.width;
- delete this._muteRangeListener;
- if (this._heightOverrideElement.value !== metrics.height)
- this._heightOverrideElement.value = metrics.height || screen.height;
- if (this._deviceScaleFactorOverrideElement.value !== metrics.deviceScaleFactor)
- this._deviceScaleFactorOverrideElement.value = metrics.deviceScaleFactor || 1;
- if (this._textAutosizingOverrideCheckbox.checked !== metrics.textAutosizing)
- this._textAutosizingOverrideCheckbox.checked = metrics.textAutosizing || false;
- },
-
- _createMediaEmulationElement: function()
- {
- var checkbox = WebInspector.SettingsTab.createSettingCheckbox(WebInspector.UIString("CSS media"), WebInspector.settings.overrideCSSMedia, true);
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideCSSMedia);
- if (WebInspector.isInspectingDevice())
- fieldsetElement.disabled = true;
- checkbox.appendChild(fieldsetElement);
-
- var mediaSelectElement = fieldsetElement.createChild("select");
- var mediaTypes = WebInspector.CSSStyleModel.MediaTypes;
- var defaultMedia = WebInspector.settings.emulatedCSSMedia.get();
- for (var i = 0; i < mediaTypes.length; ++i) {
- var mediaType = mediaTypes[i];
- if (mediaType === "all") {
- // "all" is not a device-specific media type.
- continue;
- }
- var option = document.createElement("option");
- option.text = mediaType;
- option.value = mediaType;
- mediaSelectElement.add(option);
- if (mediaType === defaultMedia)
- mediaSelectElement.selectedIndex = mediaSelectElement.options.length - 1;
- }
-
- mediaSelectElement.addEventListener("change", this._emulateMediaChanged.bind(this, mediaSelectElement), false);
- return checkbox;
- },
-
- _emulateMediaChanged: function(select)
- {
- var media = select.options[select.selectedIndex].value;
- WebInspector.settings.emulatedCSSMedia.set(media);
- },
-
- _rangeValueChanged: function()
- {
- if (this._muteRangeListener)
- return;
- this._widthOverrideElement.value = this._widthRangeInput.value;
- this._applyDeviceMetricsUserInput();
- }
-}
-
-WebInspector.OverridesView.ViewportTab.prototype.__proto__ = WebInspector.OverridesView.Tab.prototype;
-
-
-/**
- * @constructor
- * @extends {WebInspector.OverridesView.Tab}
- */
-WebInspector.OverridesView.UserAgentTab = function()
-{
- WebInspector.OverridesView.Tab.call(this, "user-agent", WebInspector.UIString("User Agent"), [WebInspector.settings.overrideUserAgent]);
- this.element.classList.add("overrides-user-agent");
- var checkbox = this._createSettingCheckbox(WebInspector.UIString("Spoof user agent"), WebInspector.settings.overrideUserAgent);
- checkbox.firstChild.disabled = WebInspector.isInspectingDevice();
- this.element.appendChild(checkbox);
- this.element.appendChild(this._createUserAgentSelectRowElement());
-}
-
-WebInspector.OverridesView.UserAgentTab._userAgents = [
- ["Internet Explorer 10", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"],
- ["Internet Explorer 9", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"],
- ["Internet Explorer 8", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"],
- ["Internet Explorer 7", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"],
-
- ["Firefox 7 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"],
- ["Firefox 7 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"],
- ["Firefox 4 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"],
- ["Firefox 4 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"],
- ["Firefox 14 \u2014 Android Mobile", "Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0"],
- ["Firefox 14 \u2014 Android Tablet", "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0"],
-
- ["Chrome \u2014 Android Mobile", "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"],
- ["Chrome \u2014 Android Tablet", "Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19"],
-
- ["iPhone \u2014 iOS 7", "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53"],
- ["iPhone \u2014 iOS 6", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"],
- ["iPad \u2014 iOS 7", "Mozilla/5.0 (iPad; CPU OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53"],
- ["iPad \u2014 iOS 6", "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"],
-
- ["Android 2.3 \u2014 Nexus S", "Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"],
- ["Android 4.0.2 \u2014 Galaxy Nexus", "Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"],
-
- ["BlackBerry \u2014 PlayBook 2.1", "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML, like Gecko) Version/7.2.1.0 Safari/536.2+"],
- ["BlackBerry \u2014 9900", "Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.187 Mobile Safari/534.11+"],
- ["BlackBerry \u2014 BB10", "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+"],
-
- ["MeeGo \u2014 Nokia N9", "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13"],
-];
-
-WebInspector.OverridesView.UserAgentTab.prototype = {
- /**
- * @return {!Element}
- */
- _createUserAgentSelectRowElement: function()
- {
- var userAgent = WebInspector.settings.userAgent.get();
- var userAgents = WebInspector.OverridesView.UserAgentTab._userAgents.concat([[WebInspector.UIString("Other"), "Other"]]);
-
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideUserAgent);
- if (WebInspector.isInspectingDevice())
- fieldsetElement.disabled = true;
-
- this._selectElement = fieldsetElement.createChild("select");
- fieldsetElement.createChild("br");
- this._otherUserAgentElement = fieldsetElement.createChild("input");
- this._otherUserAgentElement.type = "text";
- this._otherUserAgentElement.value = userAgent;
- this._otherUserAgentElement.title = userAgent;
-
- var selectionRestored = false;
- for (var i = 0; i < userAgents.length; ++i) {
- var agent = userAgents[i];
- var option = new Option(agent[0], agent[1]);
- option._metrics = agent[2] ? agent[2] : "";
- this._selectElement.add(option);
- if (userAgent === agent[1]) {
- this._selectElement.selectedIndex = i;
- selectionRestored = true;
- }
- }
-
- if (!selectionRestored) {
- if (!userAgent)
- this._selectElement.selectedIndex = 0;
- else
- this._selectElement.selectedIndex = userAgents.length - 1;
- }
-
- this._selectElement.addEventListener("change", this._userAgentChanged.bind(this, true), false);
- WebInspector.settings.userAgent.addChangeListener(this._userAgentSettingChanged, this);
-
- fieldsetElement.addEventListener("dblclick", textDoubleClicked.bind(this), false);
- this._otherUserAgentElement.addEventListener("blur", textChanged.bind(this), false);
-
- /**
- * @this {WebInspector.OverridesView.UserAgentTab}
- */
- function textDoubleClicked()
- {
- this._selectElement.selectedIndex = userAgents.length - 1;
- this._userAgentChanged();
- }
-
- /**
- * @this {WebInspector.OverridesView.UserAgentTab}
- */
- function textChanged()
- {
- if (WebInspector.settings.userAgent.get() !== this._otherUserAgentElement.value)
- WebInspector.settings.userAgent.set(this._otherUserAgentElement.value);
- }
-
- return fieldsetElement;
- },
-
- /**
- * @param {boolean=} isUserGesture
- */
- _userAgentChanged: function(isUserGesture)
- {
- var value = this._selectElement.options[this._selectElement.selectedIndex].value;
- if (value !== "Other") {
- WebInspector.settings.userAgent.set(value);
- this._otherUserAgentElement.value = value;
- this._otherUserAgentElement.title = value;
- this._otherUserAgentElement.disabled = true;
- } else {
- this._otherUserAgentElement.disabled = false;
- this._otherUserAgentElement.focus();
- }
- },
-
- _userAgentSettingChanged: function()
- {
- var value = WebInspector.settings.userAgent.get();
- var options = this._selectElement.options;
- var foundMatch = false;
- for (var i = 0; i < options.length; ++i) {
- if (options[i].value === value) {
- if (this._selectElement.selectedIndex !== i)
- this._selectElement.selectedIndex = i;
- foundMatch = true;
- break;
- }
- }
-
- this._otherUserAgentElement.disabled = foundMatch;
- if (!foundMatch)
- this._selectElement.selectedIndex = options.length - 1;
-
- if (this._otherUserAgentElement.value !== value) {
- this._otherUserAgentElement.value = value;
- this._otherUserAgentElement.title = value;
- }
- }
-}
-
-WebInspector.OverridesView.UserAgentTab.prototype.__proto__ = WebInspector.OverridesView.Tab.prototype;
-
-
-/**
- * @constructor
- * @extends {WebInspector.OverridesView.Tab}
- */
-WebInspector.OverridesView.SensorsTab = function()
-{
- WebInspector.OverridesView.Tab.call(this, "sensors", WebInspector.UIString("Sensors"), [WebInspector.settings.emulateTouchEvents, WebInspector.settings.overrideGeolocation, WebInspector.settings.overrideDeviceOrientation]);
- this.element.classList.add("overrides-sensors");
- this.registerRequiredCSS("accelerometer.css");
- if (!WebInspector.isInspectingDevice())
- this.element.appendChild(this._createSettingCheckbox(WebInspector.UIString("Emulate touch screen"), WebInspector.settings.emulateTouchEvents));
- this._appendGeolocationOverrideControl();
- if (!WebInspector.isInspectingDevice())
- this._apendDeviceOrientationOverrideControl();
-}
-
-WebInspector.OverridesView.SensorsTab.prototype = {
- _appendGeolocationOverrideControl: function()
- {
- const geolocationSetting = WebInspector.settings.geolocationOverride.get();
- var geolocation = WebInspector.OverridesSupport.GeolocationPosition.parseSetting(geolocationSetting);
- this.element.appendChild(this._createSettingCheckbox(WebInspector.UIString("Emulate geolocation coordinates"), WebInspector.settings.overrideGeolocation, this._geolocationOverrideCheckboxClicked.bind(this)));
- this.element.appendChild(this._createGeolocationOverrideElement(geolocation));
- this._geolocationOverrideCheckboxClicked(WebInspector.settings.overrideGeolocation.get());
- },
-
- /**
- * @param {boolean} enabled
- */
- _geolocationOverrideCheckboxClicked: function(enabled)
- {
- if (enabled && !this._latitudeElement.value)
- this._latitudeElement.focus();
- },
-
- _applyGeolocationUserInput: function()
- {
- this._setGeolocationPosition(WebInspector.OverridesSupport.GeolocationPosition.parseUserInput(this._latitudeElement.value.trim(), this._longitudeElement.value.trim(), this._geolocationErrorElement.checked), true);
- },
-
- /**
- * @param {?WebInspector.OverridesSupport.GeolocationPosition} geolocation
- * @param {boolean} userInputModified
- */
- _setGeolocationPosition: function(geolocation, userInputModified)
- {
- if (!geolocation)
- return;
-
- if (!userInputModified) {
- this._latitudeElement.value = geolocation.latitude;
- this._longitudeElement.value = geolocation.longitude;
- }
-
- var value = geolocation.toSetting();
- WebInspector.settings.geolocationOverride.set(value);
- },
-
- /**
- * @param {!WebInspector.OverridesSupport.GeolocationPosition} geolocation
- * @return {!Element}
- */
- _createGeolocationOverrideElement: function(geolocation)
- {
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideGeolocation);
- fieldsetElement.id = "geolocation-override-section";
-
- var tableElement = fieldsetElement.createChild("table");
- var rowElement = tableElement.createChild("tr");
- var cellElement = rowElement.createChild("td");
- cellElement = rowElement.createChild("td");
- cellElement.appendChild(document.createTextNode(WebInspector.UIString("Lat = ")));
- this._latitudeElement = this._createInput(cellElement, "geolocation-override-latitude", String(geolocation.latitude), this._applyGeolocationUserInput.bind(this), true);
- cellElement.appendChild(document.createTextNode(" , "));
- cellElement.appendChild(document.createTextNode(WebInspector.UIString("Lon = ")));
- this._longitudeElement = this._createInput(cellElement, "geolocation-override-longitude", String(geolocation.longitude), this._applyGeolocationUserInput.bind(this), true);
- rowElement = tableElement.createChild("tr");
- cellElement = rowElement.createChild("td");
- cellElement.colSpan = 2;
- var geolocationErrorLabelElement = document.createElement("label");
- var geolocationErrorCheckboxElement = geolocationErrorLabelElement.createChild("input");
- geolocationErrorCheckboxElement.id = "geolocation-error";
- geolocationErrorCheckboxElement.type = "checkbox";
- geolocationErrorCheckboxElement.checked = !geolocation || geolocation.error;
- geolocationErrorCheckboxElement.addEventListener("click", this._applyGeolocationUserInput.bind(this), false);
- geolocationErrorLabelElement.appendChild(document.createTextNode(WebInspector.UIString("Emulate position unavailable")));
- this._geolocationErrorElement = geolocationErrorCheckboxElement;
- cellElement.appendChild(geolocationErrorLabelElement);
-
- return fieldsetElement;
- },
-
- _apendDeviceOrientationOverrideControl: function()
- {
- const deviceOrientationSetting = WebInspector.settings.deviceOrientationOverride.get();
- var deviceOrientation = WebInspector.OverridesSupport.DeviceOrientation.parseSetting(deviceOrientationSetting);
- this.element.appendChild(this._createSettingCheckbox(WebInspector.UIString("Accelerometer"), WebInspector.settings.overrideDeviceOrientation, this._deviceOrientationOverrideCheckboxClicked.bind(this)));
- this.element.appendChild(this._createDeviceOrientationOverrideElement(deviceOrientation));
- this._deviceOrientationOverrideCheckboxClicked(WebInspector.settings.overrideDeviceOrientation.get());
- },
-
- /**
- * @param {boolean} enabled
- */
- _deviceOrientationOverrideCheckboxClicked: function(enabled)
- {
- if (enabled && !this._alphaElement.value)
- this._alphaElement.focus();
- },
-
- _applyDeviceOrientationUserInput: function()
- {
- this._setDeviceOrientation(WebInspector.OverridesSupport.DeviceOrientation.parseUserInput(this._alphaElement.value.trim(), this._betaElement.value.trim(), this._gammaElement.value.trim()), WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource.UserInput);
- },
-
- _resetDeviceOrientation: function()
- {
- this._setDeviceOrientation(new WebInspector.OverridesSupport.DeviceOrientation(0, 0, 0), WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource.ResetButton);
- },
-
- /**
- * @param {?WebInspector.OverridesSupport.DeviceOrientation} deviceOrientation
- * @param {!WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource} modificationSource
- */
- _setDeviceOrientation: function(deviceOrientation, modificationSource)
- {
- if (!deviceOrientation)
- return;
-
- if (modificationSource != WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource.UserInput) {
- this._alphaElement.value = deviceOrientation.alpha;
- this._betaElement.value = deviceOrientation.beta;
- this._gammaElement.value = deviceOrientation.gamma;
- }
-
- if (modificationSource != WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource.UserDrag)
- this._setBoxOrientation(deviceOrientation);
-
- var value = deviceOrientation.toSetting();
- WebInspector.settings.deviceOrientationOverride.set(value);
- },
-
- /**
- * @param {!Element} parentElement
- * @param {string} id
- * @param {string} label
- * @param {string} defaultText
- * @return {!Element}
- */
- _createAxisInput: function(parentElement, id, label, defaultText)
- {
- var div = parentElement.createChild("div", "accelerometer-axis-input-container");
- div.appendChild(document.createTextNode(label));
- return this._createInput(div, id, defaultText, this._applyDeviceOrientationUserInput.bind(this), true);
- },
-
- /**
- * @param {!WebInspector.OverridesSupport.DeviceOrientation} deviceOrientation
- */
- _createDeviceOrientationOverrideElement: function(deviceOrientation)
- {
- var fieldsetElement = WebInspector.SettingsTab.createSettingFieldset(WebInspector.settings.overrideDeviceOrientation);
- fieldsetElement.id = "device-orientation-override-section";
- var tableElement = fieldsetElement.createChild("table");
- var rowElement = tableElement.createChild("tr");
- var cellElement = rowElement.createChild("td", "accelerometer-inputs-cell");
-
- this._alphaElement = this._createAxisInput(cellElement, "device-orientation-override-alpha", "\u03B1: ", String(deviceOrientation.alpha));
- this._betaElement = this._createAxisInput(cellElement, "device-orientation-override-beta", "\u03B2: ", String(deviceOrientation.beta));
- this._gammaElement = this._createAxisInput(cellElement, "device-orientation-override-gamma", "\u03B3: ", String(deviceOrientation.gamma));
-
- var resetButton = cellElement.createChild("button", "settings-tab-text-button accelerometer-reset-button");
- resetButton.textContent = WebInspector.UIString("Reset");
- resetButton.addEventListener("click", this._resetDeviceOrientation.bind(this), false);
-
- this._stageElement = rowElement.createChild("td","accelerometer-stage");
- this._boxElement = this._stageElement.createChild("section", "accelerometer-box");
-
- this._boxElement.createChild("section", "front");
- this._boxElement.createChild("section", "top");
- this._boxElement.createChild("section", "back");
- this._boxElement.createChild("section", "left");
- this._boxElement.createChild("section", "right");
- this._boxElement.createChild("section", "bottom");
-
- WebInspector.installDragHandle(this._stageElement, this._onBoxDragStart.bind(this), this._onBoxDrag.bind(this), this._onBoxDragEnd.bind(this), "move");
- this._setBoxOrientation(deviceOrientation);
- return fieldsetElement;
- },
-
- /**
- * @param {!WebInspector.OverridesSupport.DeviceOrientation} deviceOrientation
- */
- _setBoxOrientation: function(deviceOrientation)
- {
- var matrix = new WebKitCSSMatrix();
- this._boxMatrix = matrix.rotate(-deviceOrientation.beta, deviceOrientation.gamma, -deviceOrientation.alpha);
- this._boxElement.style.webkitTransform = this._boxMatrix.toString();
- },
-
- /**
- * @param {!MouseEvent} event
- * @return {boolean}
- */
- _onBoxDrag: function(event)
- {
- var mouseMoveVector = this._calculateRadiusVector(event.x, event.y);
- if (!mouseMoveVector)
- return true;
-
- event.consume(true);
- var axis = WebInspector.Geometry.crossProduct(this._mouseDownVector, mouseMoveVector);
- axis.normalize();
- var angle = WebInspector.Geometry.calculateAngle(this._mouseDownVector, mouseMoveVector);
- var matrix = new WebKitCSSMatrix();
- var rotationMatrix = matrix.rotateAxisAngle(axis.x, axis.y, axis.z, angle);
- this._currentMatrix = rotationMatrix.multiply(this._boxMatrix)
- this._boxElement.style.webkitTransform = this._currentMatrix;
- var eulerAngles = WebInspector.Geometry.EulerAngles.fromRotationMatrix(this._currentMatrix);
- var newOrientation = new WebInspector.OverridesSupport.DeviceOrientation(-eulerAngles.alpha, -eulerAngles.beta, eulerAngles.gamma);
- this._setDeviceOrientation(newOrientation, WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource.UserDrag);
- return false;
- },
-
- /**
- * @param {!MouseEvent} event
- * @return {boolean}
- */
- _onBoxDragStart: function(event)
- {
- if (!WebInspector.settings.overrideDeviceOrientation.get())
- return false;
-
- this._mouseDownVector = this._calculateRadiusVector(event.x, event.y);
-
- if (!this._mouseDownVector)
- return false;
-
- event.consume(true);
- return true;
- },
-
- _onBoxDragEnd: function()
- {
- this._boxMatrix = this._currentMatrix;
- },
-
- /**
- * @param {number} x
- * @param {number} y
- * @return {?WebInspector.Geometry.Vector}
- */
- _calculateRadiusVector: function(x, y)
- {
- var rect = this._stageElement.getBoundingClientRect();
- var radius = Math.max(rect.width, rect.height) / 2;
- var sphereX = (x - rect.left - rect.width / 2) / radius;
- var sphereY = (y - rect.top - rect.height / 2) / radius;
- var sqrSum = sphereX * sphereX + sphereY * sphereY;
- if (sqrSum > 0.5)
- return new WebInspector.Geometry.Vector(sphereX, sphereY, 0.5 / Math.sqrt(sqrSum));
-
- return new WebInspector.Geometry.Vector(sphereX, sphereY, Math.sqrt(1 - sqrSum));
- },
-
- __proto__ : WebInspector.OverridesView.Tab.prototype
-}
-
-/** @enum {string} */
-WebInspector.OverridesView.SensorsTab.DeviceOrientationModificationSource = {
- UserInput: "userInput",
- UserDrag: "userDrag",
- ResetButton: "resetButton"
-}