Commit b31af602 authored by dgozman@chromium.org's avatar dgozman@chromium.org

[DevTools] Move user agent override to responsive design toolbar.

This also made toolbar expandable to accomodate controls for rarely used features.

BUG=327641

Review URL: https://codereview.chromium.org/317153002

git-svn-id: svn://svn.chromium.org/blink/trunk@175663 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 31378e15
{
"statusbarButtonGlyphs.svg": "b1dc69ee4412a4aaa0945f5327b5d22b",
"breakpoint.svg": "69cd92d807259c022791112809b97799",
"responsiveDesign.svg": "bc00a0a7fb0a47453929f94c9a4e003c",
"settingsListRemove.svg": "ce9e7c5c5cdaef28e6ee51d9478d5485",
"breakpointConditional.svg": "4cf90210b2af2ed84db2f60b07bcde28"
}
\ No newline at end of file
{
"statusbarButtonGlyphs.svg": "b1dc69ee4412a4aaa0945f5327b5d22b",
"breakpoint.svg": "69cd92d807259c022791112809b97799",
"responsiveDesign.svg": "bc00a0a7fb0a47453929f94c9a4e003c",
"settingsListRemove.svg": "ce9e7c5c5cdaef28e6ee51d9478d5485",
"breakpointConditional.svg": "4cf90210b2af2ed84db2f60b07bcde28"
}
\ No newline at end of file
......@@ -334,6 +334,18 @@ Element.prototype.removeChildren = function()
this.textContent = "";
}
Element.prototype.appendChildren = function(children)
{
for (var i = 0; i < children.length; ++i)
this.appendChild(children[i]);
}
Element.prototype.setChildren = function(children)
{
this.removeChildren();
this.appendChildren(children);
}
Element.prototype.isInsertionCaretInside = function()
{
var selection = window.getSelection();
......
......@@ -90,7 +90,9 @@ WebInspector.Settings = function()
this.pauseOnExceptionEnabled = this.createSetting("pauseOnExceptionEnabled", false);
this.pauseOnCaughtException = this.createSetting("pauseOnCaughtException", false);
this.enableAsyncStackTraces = this.createSetting("enableAsyncStackTraces", false);
this.responsiveDesignMode = this.createSetting("responsiveDesignMode", false);
this.responsiveDesign = {};
this.responsiveDesign.enabled = this.createSetting("responsiveDesign.enabled", false);
}
WebInspector.Settings.prototype = {
......
......@@ -48,7 +48,8 @@ WebInspector.OverridesView = function()
new WebInspector.OverridesView.DeviceTab().appendAsTab(this._tabbedPane);
new WebInspector.OverridesView.ViewportTab().appendAsTab(this._tabbedPane);
}
new WebInspector.OverridesView.UserAgentTab().appendAsTab(this._tabbedPane);
if (!WebInspector.overridesSupport.responsiveDesignAvailable())
new WebInspector.OverridesView.UserAgentTab().appendAsTab(this._tabbedPane);
new WebInspector.OverridesView.SensorsTab().appendAsTab(this._tabbedPane);
this._lastSelectedTabSetting = WebInspector.settings.createSetting("lastSelectedEmulateTab", "device");
......@@ -352,143 +353,20 @@ WebInspector.OverridesView.UserAgentTab = function()
this.element.appendChild(this._createUserAgentSelectRowElement());
}
WebInspector.OverridesView.UserAgentTab._userAgents = [
["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"],
["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"],
["BlackBerry \u2014 BB10", "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+"],
["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+"],
["Chrome 31 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"],
["Chrome 31 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36"],
["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"],
["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"],
["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"],
["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 4 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.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 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"],
["Internet Explorer 10", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"],
["Internet Explorer 7", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"],
["Internet Explorer 8", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"],
["Internet Explorer 9", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"],
["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"],
["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"],
["MeeGo \u2014 Nokia N9", "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13"],
["Opera 18 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"],
["Opera 18 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"],
["Opera 12 \u2014 Mac", "Opera/9.80 (Macintosh; Intel Mac OS X 10.9.1) Presto/2.12.388 Version/12.16"],
["Opera 12 \u2014 Windows", "Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.16"],
["Silk \u2014 Kindle Fire (Desktop view)", "Mozilla/5.0 (Linux; U; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true"],
["Silk \u2014 Kindle Fire (Mobile view)", "Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Mobile Safari/535.19 Silk-Accelerated=true"],
];
WebInspector.OverridesView.UserAgentTab.prototype = {
/**
* @return {!Element}
*/
_createUserAgentSelectRowElement: function()
{
var userAgent = WebInspector.overridesSupport.settings.userAgent.get();
var userAgents = WebInspector.OverridesView.UserAgentTab._userAgents.concat([[WebInspector.UIString("Other"), "Other"]]);
var fieldsetElement = WebInspector.SettingsUI.createSettingFieldset(WebInspector.overridesSupport.settings.overrideUserAgent);
this._selectElement = fieldsetElement.createChild("select");
var userAgentSelectAndInput = WebInspector.overridesSupport.createUserAgentSelectAndInput(document);
fieldsetElement.appendChild(userAgentSelectAndInput.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]);
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.overridesSupport.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.overridesSupport.settings.userAgent.get() !== this._otherUserAgentElement.value)
WebInspector.overridesSupport.settings.userAgent.set(this._otherUserAgentElement.value);
}
fieldsetElement.appendChild(userAgentSelectAndInput.input);
return fieldsetElement;
},
/**
* @param {boolean=} isUserGesture
*/
_userAgentChanged: function(isUserGesture)
{
var value = this._selectElement.options[this._selectElement.selectedIndex].value;
if (value !== "Other") {
WebInspector.overridesSupport.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.overridesSupport.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;
}
},
__proto__: WebInspector.OverridesView.Tab.prototype
}
......
......@@ -92,6 +92,10 @@ fieldset[disabled] label:hover input {
background-color: white;
}
.overflow-hidden {
overflow: hidden;
}
.nowrap,
.nowrap-below,
.nowrap-below div,
......
......@@ -15,20 +15,20 @@ WebInspector.AdvancedApp = function()
return;
this._toggleResponsiveDesignButton = new WebInspector.StatusBarButton(WebInspector.UIString("Responsive design mode."), "responsive-design-status-bar-item");
this._toggleResponsiveDesignButton.toggled = WebInspector.settings.responsiveDesignMode.get();
this._toggleResponsiveDesignButton.toggled = WebInspector.settings.responsiveDesign.enabled.get();
this._toggleResponsiveDesignButton.addEventListener("click", this._toggleResponsiveDesign, this);
WebInspector.settings.responsiveDesignMode.addChangeListener(this._responsiveDesignModeChanged, this);
WebInspector.settings.responsiveDesign.enabled.addChangeListener(this._responsiveDesignEnabledChanged, this);
};
WebInspector.AdvancedApp.prototype = {
_toggleResponsiveDesign: function()
{
WebInspector.settings.responsiveDesignMode.set(!this._toggleResponsiveDesignButton.toggled);
WebInspector.settings.responsiveDesign.enabled.set(!this._toggleResponsiveDesignButton.toggled);
},
_responsiveDesignModeChanged: function()
_responsiveDesignEnabledChanged: function()
{
this._toggleResponsiveDesignButton.toggled = WebInspector.settings.responsiveDesignMode.get();
this._toggleResponsiveDesignButton.toggled = WebInspector.settings.responsiveDesign.enabled.get();
},
createRootView: function()
......
......@@ -229,6 +229,10 @@ button.overrides-swap {
padding: 3px;
}
.overrides-view input[readonly] {
background-color: rgb(235, 235, 228);
}
.overrides-view .overrides-footer {
flex: none;
padding: 0 0 1px 3px;
......
......@@ -9,13 +9,6 @@
position: relative;
}
.responsive-design-reset-button {
position: absolute;
left: 0;
top: 0;
background-color: rgb(54, 54, 54);
}
.responsive-design-reset-button:hover {
box-shadow: inset 0 0 5px rgba(255, 255, 255, 0.5);
}
......@@ -77,9 +70,12 @@
}
.responsive-design-toolbar {
display: flex;
flex: none;
background-color: rgb(64, 64, 64);
color: rgb(180, 180, 180);
overflow: hidden;
border: 1px solid rgb(163, 163, 163);
}
.responsive-design-toolbar fieldset,
......@@ -91,16 +87,39 @@
}
.responsive-design-toolbar .responsive-design-section {
display: inline-flex;
display: flex;
flex: 1 0 auto;
flex-direction: row;
height: 24px;
border: 1px solid rgb(163, 163, 163);
border-left: none;
margin-top: -1px;
white-space: nowrap;
align-items: center;
justify-content: flex-start;
padding-right: 3px;
}
.responsive-design-toolbar .responsive-design-section.vbox {
height: auto;
padding: 0;
}
.responsive-design-toolbar .responsive-design-composite-section {
align-items: stretch;
flex: none;
}
.responsive-design-toolbar .responsive-design-composite-section.vbox:not(.solid) > :not(:nth-child(1)) {
border-top: 1px solid rgb(163, 163, 163);
}
.responsive-design-toolbar .responsive-design-composite-section.hbox:not(.solid) > :not(:nth-child(1)) {
border-left: 1px solid rgb(163, 163, 163);
}
.responsive-design-toolbar > .responsive-design-composite-section {
border-right: 1px solid rgb(163, 163, 163);
}
.responsive-design-toolbar .field-error-message {
display: none;
}
......@@ -111,10 +130,16 @@
background-color: transparent;
border: none;
margin: 0;
padding: 3px 0;
padding-bottom: 4px;
}
.responsive-design-toolbar input[type='text']:not(.numeric) {
width: 100%;
margin-left: 7px;
}
.responsive-design-toolbar input:disabled,
.responsive-design-toolbar input[readonly],
.responsive-design-toolbar button:disabled {
opacity: 0.7;
}
......@@ -155,6 +180,9 @@
border: 0;
margin-left: 10px;
line-height: 16px;
}
body.platform-mac .responsive-design-toolbar select {
position: relative;
top: 1px;
}
......@@ -166,7 +194,7 @@
.responsive-design-icon {
background-color: rgb(180, 180, 180);
-webkit-mask-image: url(Images/responsiveDesign.png);
-webkit-mask-size: 48px 16px;
-webkit-mask-size: 64px 16px;
display: inline-block;
width: 16px;
height: 16px;
......@@ -218,11 +246,37 @@
opacity: 0.8;
}
.responsive-design-expand {
height: 19px;
min-width: 70px;
background: rgb(64, 64, 64);
display: flex;
align-items: center;
justify-content: center;
margin: 3px;
}
.responsive-design-expand:hover,
.responsive-design-expand:active {
background: linear-gradient(to top, rgb(102, 102, 102), rgb(64, 64, 64));
}
.responsive-design-icon-expand {
-webkit-mask-position: -48px 0;
top: 0 !important;
margin-right: 2px;
}
.responsive-design-expand.expanded .responsive-design-icon-expand {
transform: rotate(180deg);
}
.responsive-design-warning {
background-color: rgb(64, 64, 64);
color: rgb(180, 180, 180);
height: 19px;
padding: 2px;
white-space: nowrap;
}
.responsive-design-warning::before {
......
......@@ -411,6 +411,39 @@ WebInspector.OverridesSupport._tablets = [
"1024x600x1"],
];
WebInspector.OverridesSupport._userAgents = [
["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"],
["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"],
["BlackBerry \u2014 BB10", "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.1+ (KHTML, like Gecko) Version/10.0.0.1337 Mobile Safari/537.1+"],
["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+"],
["Chrome 31 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"],
["Chrome 31 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36"],
["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"],
["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"],
["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"],
["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 4 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.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 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"],
["Internet Explorer 10", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"],
["Internet Explorer 7", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"],
["Internet Explorer 8", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"],
["Internet Explorer 9", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"],
["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"],
["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"],
["MeeGo \u2014 Nokia N9", "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13"],
["Opera 18 \u2014 Mac", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"],
["Opera 18 \u2014 Windows", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"],
["Opera 12 \u2014 Mac", "Opera/9.80 (Macintosh; Intel Mac OS X 10.9.1) Presto/2.12.388 Version/12.16"],
["Opera 12 \u2014 Windows", "Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.16"],
["Silk \u2014 Kindle Fire (Desktop view)", "Mozilla/5.0 (Linux; U; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true"],
["Silk \u2014 Kindle Fire (Mobile view)", "Mozilla/5.0 (Linux; U; Android 4.2.2; en-us; KFTHWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Mobile Safari/535.19 Silk-Accelerated=true"],
];
WebInspector.OverridesSupport.prototype = {
/**
* @return {boolean}
......@@ -512,7 +545,7 @@ WebInspector.OverridesSupport.prototype = {
this.settings.deviceTextAutosizing.addChangeListener(this._deviceMetricsChanged, this);
this.settings.emulateViewport.addChangeListener(this._deviceMetricsChanged, this);
this.settings.deviceFitWindow.addChangeListener(this._deviceMetricsChanged, this);
WebInspector.settings.responsiveDesignMode.addChangeListener(this._deviceMetricsChanged, this);
WebInspector.settings.responsiveDesign.enabled.addChangeListener(this._deviceMetricsChanged, this);
this.settings.overrideGeolocation.addChangeListener(this._geolocationPositionChanged, this);
this.settings.geolocationOverride.addChangeListener(this._geolocationPositionChanged, this);
......@@ -581,7 +614,7 @@ WebInspector.OverridesSupport.prototype = {
if (this._deviceMetricsChangedListenerMuted)
return;
var responsiveDesignAvailableAndDisabled = this._responsiveDesignAvailable && (!WebInspector.settings.responsiveDesignMode.get() || !this._pageResizer);
var responsiveDesignAvailableAndDisabled = this._responsiveDesignAvailable && (!WebInspector.settings.responsiveDesign.enabled.get() || !this._pageResizer);
var overrideDeviceResolution = this.settings.overrideDeviceResolution.get();
var emulationEnabled = overrideDeviceResolution || this.settings.emulateViewport.get();
if (responsiveDesignAvailableAndDisabled || !emulationEnabled) {
......@@ -955,6 +988,101 @@ WebInspector.OverridesSupport.prototype = {
return deviceSelectElement;
},
/**
* @param {!Document} document
* @return {{select: !Element, input: !Element}}
*/
createUserAgentSelectAndInput: function(document)
{
var overrideUserAgentSetting = WebInspector.overridesSupport.settings.overrideUserAgent;
var userAgentSetting = WebInspector.overridesSupport.settings.userAgent;
var userAgents = WebInspector.OverridesSupport._userAgents.concat([[WebInspector.UIString("Other"), "Other"]]);
var userAgentSelectElement = document.createElement("select");
for (var i = 0; i < userAgents.length; ++i)
userAgentSelectElement.add(new Option(userAgents[i][0], userAgents[i][1]));
userAgentSelectElement.selectedIndex = 0;
var otherUserAgentElement = document.createElement("input");
otherUserAgentElement.type = "text";
otherUserAgentElement.value = userAgentSetting.get();
otherUserAgentElement.title = userAgentSetting.get();
settingChanged();
userAgentSetting.addChangeListener(settingChanged);
userAgentSelectElement.addEventListener("change", userAgentSelected, false);
otherUserAgentElement.addEventListener("dblclick", textDoubleClicked, true);
otherUserAgentElement.addEventListener("blur", textChanged, false);
otherUserAgentElement.addEventListener("keydown", textKeyDown, false);
function userAgentSelected()
{
var value = userAgentSelectElement.options[userAgentSelectElement.selectedIndex].value;
if (value !== "Other") {
userAgentSetting.removeChangeListener(settingChanged);
userAgentSetting.set(value);
userAgentSetting.addChangeListener(settingChanged);
otherUserAgentElement.value = value;
otherUserAgentElement.title = value;
otherUserAgentElement.readOnly = true;
} else {
otherUserAgentElement.readOnly = !overrideUserAgentSetting.get();
otherUserAgentElement.focus();
}
overrideUserAgentSetting.set(true);
}
function settingChanged()
{
var value = userAgentSetting.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.readOnly = !overrideUserAgentSetting.get() || 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()
{
if (userAgentSetting.get() !== otherUserAgentElement.value)
userAgentSetting.set(otherUserAgentElement.value);
}
overrideUserAgentSetting.addChangeListener(overrideUserAgentChanged);
function overrideUserAgentChanged()
{
otherUserAgentElement.readOnly = !overrideUserAgentSetting.get() || (userAgentSelectElement.options[userAgentSelectElement.selectedIndex].value !== "Other");
}
return { select: userAgentSelectElement, input: otherUserAgentElement };
},
__proto__: WebInspector.Object.prototype
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment