Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1541)

Unified Diff: Source/devtools/front_end/sdk/OverridesSupport.js

Issue 330223004: [DevTools] Responsive design UI rework. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/devtools/front_end/responsiveDesignView.css ('k') | Source/devtools/front_end/ui/SettingsUI.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9d11541452e65ad9e4bd7ef96afaca2de2ab5efd..98b36915c03f2e5f10fcb7e4232649e30ad127c7 100644
--- a/Source/devtools/front_end/sdk/OverridesSupport.js
+++ b/Source/devtools/front_end/sdk/OverridesSupport.js
@@ -37,14 +37,13 @@
WebInspector.OverridesSupport = function(responsiveDesignAvailable)
{
WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.MainFrameNavigated, this._onMainFrameNavigated.bind(this), this);
- this._overrideDeviceResolution = false;
this._emulateViewportEnabled = false;
this._userAgent = "";
this._pageResizer = null;
this._initialized = false;
this._deviceMetricsThrottler = new WebInspector.Throttler(0);
- WebInspector.targetManager.observeTargets(this);
this._responsiveDesignAvailable = responsiveDesignAvailable;
+ WebInspector.targetManager.observeTargets(this);
}
WebInspector.OverridesSupport.Events = {
@@ -517,7 +516,6 @@ WebInspector.OverridesSupport.prototype = {
this._deviceMetricsChangedListenerMuted = true;
this._userAgentChangedListenerMuted = true;
this.settings.userAgent.set(userAgent);
- this.settings.overrideDeviceResolution.set(true);
this.settings.deviceWidth.set(metrics.width);
this.settings.deviceHeight.set(metrics.height);
this.settings.deviceScaleFactor.set(metrics.deviceScaleFactor);
@@ -525,6 +523,7 @@ WebInspector.OverridesSupport.prototype = {
this.settings.overrideUserAgent.set(true);
this.settings.emulateTouchEvents.set(true);
this.settings.emulateViewport.set(true);
+ this.settings.emulateDevice.set(true);
delete this._deviceMetricsChangedListenerMuted;
delete this._userAgentChangedListenerMuted;
@@ -534,11 +533,28 @@ WebInspector.OverridesSupport.prototype = {
}
},
+ /**
+ * @param {string} deviceMetrics
+ * @param {string} userAgent
+ * @return {boolean}
+ */
+ isEmulatingDevice: function(deviceMetrics, userAgent)
+ {
+ var metrics = WebInspector.OverridesSupport.DeviceMetrics.parseSetting(deviceMetrics);
+ return this.settings.userAgent.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.emulateTouchEvents.get()
+ && this.settings.emulateViewport.get();
+ },
+
resetEmulatedDevice: function()
{
this._deviceMetricsChangedListenerMuted = true;
this._userAgentChangedListenerMuted = true;
- this.settings.overrideDeviceResolution.set(false);
+ this.settings.emulateDevice.set(false);
this.settings.overrideUserAgent.set(false);
this.settings.emulateTouchEvents.set(false);
this.settings.emulateViewport.set(false);
@@ -570,8 +586,9 @@ WebInspector.OverridesSupport.prototype = {
this.settings.overrideUserAgent.addChangeListener(this._userAgentChanged, this);
this.settings.userAgent.addChangeListener(this._userAgentChanged, this);
+ this.settings.emulateDevice.addChangeListener(this._updateUserAgentAndTouchOnEmulateDeviceChanged, this);
- this.settings.overrideDeviceResolution.addChangeListener(this._deviceMetricsChanged, this);
+ this.settings.emulateDevice.addChangeListener(this._deviceMetricsChanged, this);
this.settings.deviceWidth.addChangeListener(this._deviceMetricsChanged, this);
this.settings.deviceHeight.addChangeListener(this._deviceMetricsChanged, this);
this.settings.deviceScaleFactor.addChangeListener(this._deviceMetricsChanged, this);
@@ -586,7 +603,9 @@ WebInspector.OverridesSupport.prototype = {
this.settings.overrideDeviceOrientation.addChangeListener(this._deviceOrientationChanged, this);
this.settings.deviceOrientationOverride.addChangeListener(this._deviceOrientationChanged, this);
+ this.settings.emulateDevice.addChangeListener(this._emulateTouchEventsChanged, this);
this.settings.emulateTouchEvents.addChangeListener(this._emulateTouchEventsChanged, this);
+ this.settings.emulateDevice.addChangeListener(this._updateUserAgentAndTouchOnEmulateDeviceChanged, this);
this.settings.overrideCSSMedia.addChangeListener(this._cssMediaChanged, this);
this.settings.emulatedCSSMedia.addChangeListener(this._cssMediaChanged, this);
@@ -603,13 +622,13 @@ WebInspector.OverridesSupport.prototype = {
if (this.settings.overrideGeolocation.get())
this._geolocationPositionChanged();
- if (this.settings.emulateTouchEvents.get())
+ if (this.settings.emulateTouchEvents.get() && (this.settings.emulateDevice.get() || !this._responsiveDesignAvailable))
this._emulateTouchEventsChanged();
if (this.settings.overrideCSSMedia.get())
this._cssMediaChanged();
- if (this.settings.overrideDeviceResolution.get() || this.settings.emulateViewport.get())
+ if (this.settings.emulateDevice.get())
this._deviceMetricsChanged();
if (this.settings.overrideUserAgent.get())
@@ -621,6 +640,15 @@ WebInspector.OverridesSupport.prototype = {
this._showRulersChanged();
},
+ _updateUserAgentAndTouchOnEmulateDeviceChanged: function()
+ {
+ var value = this.settings.emulateDevice.get();
+ if (this.settings.overrideUserAgent.get() !== value)
+ this.settings.overrideUserAgent.set(value);
+ if (this.settings.emulateTouchEvents.get() !== value && !this._responsiveDesignAvailable)
+ this.settings.emulateTouchEvents.set(value);
+ },
+
_userAgentChanged: function()
{
if (this._userAgentChangedListenerMuted)
@@ -660,17 +688,16 @@ WebInspector.OverridesSupport.prototype = {
if (this._deviceMetricsChangedListenerMuted)
return;
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) {
+ var emulateDevice = this.settings.emulateDevice.get();
+ if (responsiveDesignAvailableAndDisabled || !emulateDevice) {
this._deviceMetricsThrottler.schedule(clearDeviceMetricsOverride.bind(this));
- if (this._pageResizer && !emulationEnabled)
+ if (this._pageResizer && !emulateDevice)
this._pageResizer.update(0, 0, 0);
return;
}
- var dipWidth = overrideDeviceResolution ? this.settings.deviceWidth.get() : 0;
- var dipHeight = overrideDeviceResolution ? this.settings.deviceHeight.get() : 0;
+ var dipWidth = emulateDevice ? this.settings.deviceWidth.get() : 0;
+ var dipHeight = emulateDevice ? this.settings.deviceHeight.get() : 0;
// Disable override without checks.
if (this.isInspectingDevice())
@@ -728,11 +755,9 @@ WebInspector.OverridesSupport.prototype = {
return;
}
- var overrideDeviceResolution = this.settings.overrideDeviceResolution.get();
- var viewportEnabled = this.settings.emulateViewport.get();
- if (this._overrideDeviceResolution !== overrideDeviceResolution || this._emulateViewportEnabled !== viewportEnabled)
+ var viewportEnabled = this.settings.emulateDevice.get() && this.settings.emulateViewport.get();
+ if (this._emulateViewportEnabled !== viewportEnabled)
this._updateDeviceMetricsWarningMessage(WebInspector.UIString("You might need to reload the page for proper user agent spoofing and viewport rendering."));
- this._overrideDeviceResolution = overrideDeviceResolution;
this._emulateViewportEnabled = viewportEnabled;
this._deviceMetricsOverrideAppliedForTest();
this.maybeHasActiveOverridesChanged();
@@ -776,7 +801,7 @@ WebInspector.OverridesSupport.prototype = {
if (this.hasTouchInputs() && this.settings.emulateTouchEvents.get())
return;
- var emulateTouch = this.settings.emulateTouchEvents.get();
+ var emulateTouch = this.settings.emulateTouchEvents.get() && (this.settings.emulateDevice.get() || !this._responsiveDesignAvailable);
var targets = WebInspector.targetManager.targets();
for (var i = 0; i < targets.length; ++i)
targets[i].domModel.emulateTouchEventObjects(emulateTouch);
@@ -814,7 +839,7 @@ WebInspector.OverridesSupport.prototype = {
*/
showMetricsRulers: function()
{
- var rulersInPageResizer = this._pageResizer && this.settings.overrideDeviceResolution.get();
+ var rulersInPageResizer = this._pageResizer && this.settings.emulateDevice.get();
return WebInspector.settings.showMetricsRulers.get() && !rulersInPageResizer;
},
@@ -837,10 +862,10 @@ WebInspector.OverridesSupport.prototype = {
{
var hasActiveOverrides =
this.settings.overrideUserAgent.get() ||
- ((this.settings.overrideDeviceResolution.get() || this.settings.emulateViewport.get()) && !this.isInspectingDevice()) ||
+ (this.settings.emulateDevice.get() && !this.isInspectingDevice()) ||
this.settings.overrideGeolocation.get() ||
this.settings.overrideDeviceOrientation.get() ||
- (this.settings.emulateTouchEvents.get() && !this.hasTouchInputs()) ||
+ (this.settings.emulateTouchEvents.get() && this.settings.emulateDevice.get() && !this.hasTouchInputs()) ||
(this.settings.overrideCSSMedia.get() && !this.isInspectingDevice());
if (this._hasActiveOverrides !== hasActiveOverrides) {
this._hasActiveOverrides = hasActiveOverrides;
@@ -896,22 +921,22 @@ WebInspector.OverridesSupport.prototype = {
this.settings.overrideUserAgent = WebInspector.settings.createSetting("overrideUserAgent", false);
this.settings.userAgent = WebInspector.settings.createSetting("userAgent", "");
- this.settings.overrideDeviceResolution = WebInspector.settings.createSetting("overrideDeviceResolution", false);
+ this.settings.emulateDevice = WebInspector.settings.createSetting("emulateDevice", false);
this.settings.deviceWidth = WebInspector.settings.createSetting("deviceWidth", 800);
this.settings.deviceHeight = WebInspector.settings.createSetting("deviceHeight", 600);
this.settings.deviceScaleFactor = WebInspector.settings.createSetting("deviceScaleFactor", window.devicePixelRatio);
this.settings.deviceTextAutosizing = WebInspector.settings.createSetting("deviceTextAutosizing", true);
-
this.settings.deviceFitWindow = WebInspector.settings.createSetting("deviceFitWindow", true);
+ // FIXME: rename viewport to mobile everywhere in the code.
this.settings.emulateViewport = WebInspector.settings.createSetting("emulateViewport", false);
this.settings.emulateTouchEvents = WebInspector.settings.createSetting("emulateTouchEvents", false);
+
this.settings.overrideGeolocation = WebInspector.settings.createSetting("overrideGeolocation", false);
this.settings.geolocationOverride = WebInspector.settings.createSetting("geolocationOverride", "");
this.settings.overrideDeviceOrientation = WebInspector.settings.createSetting("overrideDeviceOrientation", false);
this.settings.deviceOrientationOverride = WebInspector.settings.createSetting("deviceOrientationOverride", "");
this.settings.overrideCSSMedia = WebInspector.settings.createSetting("overrideCSSMedia", false);
this.settings.emulatedCSSMedia = WebInspector.settings.createSetting("emulatedCSSMedia", "print");
- this.settings.emulatedDevice = WebInspector.settings.createSetting("emulatedDevice", "Google Nexus 5");
this.settings.emulateNetworkConditions = WebInspector.settings.createSetting("emulateNetworkConditions", false);
this.settings.networkConditionsDomains = WebInspector.settings.createSetting("networkConditionsDomains", "");
@@ -972,7 +997,7 @@ WebInspector.OverridesSupport.prototype = {
*/
_fontScaleFactor: function(width, height)
{
- if (!this.settings.overrideDeviceResolution.get())
+ if (!this.settings.emulateDevice.get())
return 1;
if (!width && !height)
return 1;
@@ -1007,6 +1032,9 @@ WebInspector.OverridesSupport.prototype = {
var devices = WebInspector.OverridesSupport._phones.concat(WebInspector.OverridesSupport._tablets);
devices.sort();
+
+ var selectDevice = [WebInspector.UIString("<Select device>"), "", ""];
+ devices = devices.concat([selectDevice]);
for (var i = 0; i < devices.length; ++i) {
var device = devices[i];
var option = new Option(device[0], device[0]);
@@ -1015,32 +1043,45 @@ WebInspector.OverridesSupport.prototype = {
deviceSelectElement.add(option);
}
- settingChanged();
- WebInspector.overridesSupport.settings.emulatedDevice.addChangeListener(settingChanged);
deviceSelectElement.addEventListener("change", deviceSelected, false);
+ var emulatedSettingChangedMuted = false;
+ WebInspector.overridesSupport.settings.deviceWidth.addChangeListener(emulatedSettingChanged);
+ WebInspector.overridesSupport.settings.deviceHeight.addChangeListener(emulatedSettingChanged);
+ WebInspector.overridesSupport.settings.deviceScaleFactor.addChangeListener(emulatedSettingChanged);
+ WebInspector.overridesSupport.settings.deviceTextAutosizing.addChangeListener(emulatedSettingChanged);
+ WebInspector.overridesSupport.settings.emulateViewport.addChangeListener(emulatedSettingChanged);
+ WebInspector.overridesSupport.settings.deviceFitWindow.addChangeListener(emulatedSettingChanged);
+ WebInspector.overridesSupport.settings.emulateTouchEvents.addChangeListener(emulatedSettingChanged);
+ WebInspector.overridesSupport.settings.overrideUserAgent.addChangeListener(emulatedSettingChanged);
+ WebInspector.overridesSupport.settings.userAgent.addChangeListener(emulatedSettingChanged);
+ emulatedSettingChanged();
+
function deviceSelected()
{
+ if (deviceSelectElement.selectedIndex === devices.length - 1)
+ return;
+
var option = deviceSelectElement.options[deviceSelectElement.selectedIndex];
- WebInspector.overridesSupport.settings.emulatedDevice.removeChangeListener(settingChanged);
- WebInspector.overridesSupport.settings.emulatedDevice.set(option.value);
- WebInspector.overridesSupport.settings.emulatedDevice.addChangeListener(settingChanged);
+ emulatedSettingChangedMuted = true;
+ WebInspector.overridesSupport.emulateDevice(option.metrics, option.userAgent);
+ emulatedSettingChangedMuted = false;
}
- function settingChanged()
+ function emulatedSettingChanged()
{
- var selectionRestored = false;
+ if (emulatedSettingChangedMuted)
+ return;
+
+ var index = devices.length - 1;
for (var i = 0; i < devices.length; ++i) {
- var device = devices[i];
- if (WebInspector.overridesSupport.settings.emulatedDevice.get() === device[0]) {
- deviceSelectElement.selectedIndex = i;
- selectionRestored = true;
+ var option = deviceSelectElement.options[i];
+ if (WebInspector.overridesSupport.isEmulatingDevice(option.metrics, option.userAgent)) {
+ index = i;
break;
}
}
-
- if (!selectionRestored)
- deviceSelectElement.selectedIndex = devices.length - 1;
+ deviceSelectElement.selectedIndex = index;
}
return deviceSelectElement;
« no previous file with comments | « Source/devtools/front_end/responsiveDesignView.css ('k') | Source/devtools/front_end/ui/SettingsUI.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698