Index: Source/devtools/front_end/sdk/OverridesSupport.js |
diff --git a/Source/devtools/front_end/sdk/OverridesSupport.js b/Source/devtools/front_end/sdk/OverridesSupport.js |
index fffd2695a91d44a9bd2e83aac3b6685232d3e576..37d94275425767971262cf8700061cbbf6d8073f 100644 |
--- a/Source/devtools/front_end/sdk/OverridesSupport.js |
+++ b/Source/devtools/front_end/sdk/OverridesSupport.js |
@@ -82,40 +82,30 @@ WebInspector.OverridesSupport.PageResizer.prototype = { |
}; |
/** |
+ * @param {string} description |
+ * @param {string} userAgent |
* @constructor |
- * @param {number} width |
- * @param {number} height |
- * @param {number} deviceScaleFactor |
- * @param {boolean} textAutosizing |
*/ |
-WebInspector.OverridesSupport.DeviceMetrics = function(width, height, deviceScaleFactor, textAutosizing) |
+WebInspector.OverridesSupport.Device = function(description, userAgent) |
{ |
- this.width = width; |
- this.height = height; |
- this.deviceScaleFactor = deviceScaleFactor; |
- this.textAutosizing = textAutosizing; |
-} |
- |
-/** |
- * @return {!WebInspector.OverridesSupport.DeviceMetrics} |
- */ |
-WebInspector.OverridesSupport.DeviceMetrics.parseSetting = function(value) |
-{ |
- var width = screen.width; |
- var height = screen.height; |
- var deviceScaleFactor = 1; |
- var textAutosizing = true; |
- if (value) { |
- var splitMetrics = value.split("x"); |
- if (splitMetrics.length >= 3) { |
- width = parseInt(splitMetrics[0], 10); |
- height = parseInt(splitMetrics[1], 10); |
- deviceScaleFactor = parseFloat(splitMetrics[2]); |
- if (splitMetrics.length == 4) |
- textAutosizing = splitMetrics[3] == 1; |
- } |
+ this.width = 800; |
+ this.height = 600; |
+ this.deviceScaleFactor = 1; |
+ this.textAutosizing = true; |
+ this.userAgent = userAgent; |
+ this.touch = true; |
+ this.viewport = true; |
+ |
+ var splitMetrics = description.split("x"); |
+ if (splitMetrics.length >= 3) { |
+ this.width = parseInt(splitMetrics[0], 10); |
+ this.height = parseInt(splitMetrics[1], 10); |
+ this.deviceScaleFactor = parseFloat(splitMetrics[2]); |
} |
- return new WebInspector.OverridesSupport.DeviceMetrics(width, height, deviceScaleFactor, textAutosizing); |
+ if (splitMetrics.length >= 4) |
+ this.touch = splitMetrics[3] == 1; |
+ if (splitMetrics.length >= 5) |
+ this.viewport = splitMetrics[4] == 1; |
} |
/** |
@@ -296,10 +286,13 @@ WebInspector.OverridesSupport.networkDomainsValidator = function(value) |
return value.split(",").every(test) ? "" : WebInspector.UIString("Value must be a comma-separated list of domains"); |
} |
+// Second element is user agent value. |
// Third element lists device metrics separated by 'x': |
// - screen width, |
// - screen height, |
// - device scale factor, |
+// - touch (true by default if not present), |
+// - viewport (true by default if not present). |
WebInspector.OverridesSupport._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", |
@@ -429,6 +422,21 @@ WebInspector.OverridesSupport._tablets = [ |
"1024x600x1"], |
]; |
+WebInspector.OverridesSupport._desktops = [ |
+ ["Chromebook Pixel", |
+ "Mozilla/5.0 (X11; CrOS x86_64 3912.23.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36", |
+ "1280x950x2x1x0"], |
+ ["Apple MacBook Pro", |
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36", |
+ "1280x800x1x0x0"], |
+ ["Apple MacBook Pro Retina", |
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36", |
+ "1440x900x2x0x0"], |
+ ["Apple MacBook Air", |
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.46 Safari/537.36", |
+ "1366x768x1x0x0"], |
+]; |
+ |
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"], |
@@ -507,21 +515,19 @@ WebInspector.OverridesSupport.prototype = { |
}, |
/** |
- * @param {string} deviceMetrics |
- * @param {string} userAgent |
+ * @param {!WebInspector.OverridesSupport.Device} device |
*/ |
- emulateDevice: function(deviceMetrics, userAgent) |
+ emulateDevice: function(device) |
{ |
- var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(deviceMetrics); |
this._deviceMetricsChangedListenerMuted = true; |
this._userAgentChangedListenerMuted = true; |
- this.settings.deviceUserAgent.set(userAgent); |
- this.settings.deviceWidth.set(metrics.width); |
- this.settings.deviceHeight.set(metrics.height); |
- this.settings.deviceScaleFactor.set(metrics.deviceScaleFactor); |
- this.settings.deviceTextAutosizing.set(metrics.textAutosizing); |
- this.settings.deviceTouch.set(true); |
- this.settings.emulateViewport.set(true); |
+ this.settings.deviceUserAgent.set(device.userAgent); |
+ this.settings.deviceWidth.set(device.width); |
+ this.settings.deviceHeight.set(device.height); |
+ this.settings.deviceScaleFactor.set(device.deviceScaleFactor); |
+ this.settings.deviceTextAutosizing.set(device.textAutosizing); |
+ this.settings.deviceTouch.set(device.touch); |
+ this.settings.emulateViewport.set(device.viewport); |
this.settings.emulateDevice.set(true); |
delete this._deviceMetricsChangedListenerMuted; |
delete this._userAgentChangedListenerMuted; |
@@ -552,20 +558,18 @@ WebInspector.OverridesSupport.prototype = { |
}, |
/** |
- * @param {string} deviceMetrics |
- * @param {string} userAgent |
+ * @param {!WebInspector.OverridesSupport.Device} device |
* @return {boolean} |
*/ |
- isEmulatingDevice: function(deviceMetrics, userAgent) |
+ isEmulatingDevice: function(device) |
{ |
- var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(deviceMetrics); |
- return this.settings.deviceUserAgent.get() === userAgent |
- && this.settings.deviceWidth.get() === metrics.width |
- && this.settings.deviceHeight.get() === metrics.height |
- && this.settings.deviceScaleFactor.get() === metrics.deviceScaleFactor |
- && this.settings.deviceTextAutosizing.get() === metrics.textAutosizing |
- && this.settings.deviceTouch.get() |
- && this.settings.emulateViewport.get(); |
+ return this.settings.deviceUserAgent.get() === device.userAgent |
+ && this.settings.deviceWidth.get() === device.width |
+ && this.settings.deviceHeight.get() === device.height |
+ && this.settings.deviceScaleFactor.get() === device.deviceScaleFactor |
+ && this.settings.deviceTextAutosizing.get() === device.textAutosizing |
+ && this.settings.deviceTouch.get() === device.touch |
+ && this.settings.emulateViewport.get() === device.viewport; |
}, |
applyInitialOverrides: function() |
@@ -1069,7 +1073,7 @@ WebInspector.OverridesSupport.prototype = { |
var deviceSelectElement = document.createElement("select"); |
deviceSelectElement.disabled = WebInspector.overridesSupport.isInspectingDevice(); |
- var devices = WebInspector.OverridesSupport._phones.concat(WebInspector.OverridesSupport._tablets); |
+ var devices = WebInspector.OverridesSupport._phones.concat(WebInspector.OverridesSupport._tablets).concat(WebInspector.OverridesSupport._desktops); |
devices.sort(); |
var selectDevice = [WebInspector.UIString("<Select device>"), "", ""]; |
@@ -1077,8 +1081,7 @@ WebInspector.OverridesSupport.prototype = { |
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]; |
+ option.device = new WebInspector.OverridesSupport.Device(device[2], device[1]); |
deviceSelectElement.add(option); |
} |
@@ -1102,7 +1105,7 @@ WebInspector.OverridesSupport.prototype = { |
var option = deviceSelectElement.options[deviceSelectElement.selectedIndex]; |
emulatedSettingChangedMuted = true; |
- WebInspector.overridesSupport.emulateDevice(option.metrics, option.userAgent); |
+ WebInspector.overridesSupport.emulateDevice(option.device); |
emulatedSettingChangedMuted = false; |
} |
@@ -1114,7 +1117,7 @@ WebInspector.OverridesSupport.prototype = { |
var index = devices.length - 1; |
for (var i = 0; i < devices.length; ++i) { |
var option = deviceSelectElement.options[i]; |
- if (WebInspector.overridesSupport.isEmulatingDevice(option.metrics, option.userAgent)) { |
+ if (WebInspector.overridesSupport.isEmulatingDevice(option.device)) { |
index = i; |
break; |
} |