| Index: third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeModel.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeModel.js b/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeModel.js
|
| index 159c0021e77efc43b329244a35c9fe0f3176fd87..0aac6591b4aec0215c715c3e5d5322f5855ac812 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeModel.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/emulation/DeviceModeModel.js
|
| @@ -51,10 +51,6 @@ WebInspector.DeviceModeModel = function(updateCallback)
|
| this._device = null;
|
| /** @type {?WebInspector.EmulatedDevice.Mode} */
|
| this._mode = null;
|
| - /** @type {boolean} */
|
| - this._touchEnabled = false;
|
| - /** @type {string} */
|
| - this._touchConfiguration = "";
|
| /** @type {number} */
|
| this._fitScale = 1;
|
|
|
| @@ -105,7 +101,6 @@ WebInspector.DeviceModeModel.deviceScaleFactorValidator = function(value)
|
| return false;
|
| }
|
|
|
| -WebInspector.DeviceModeModel._touchEventsScriptIdSymbol = Symbol("DeviceModeModel.touchEventsScriptIdSymbol");
|
| WebInspector.DeviceModeModel._defaultMobileUserAgent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36";
|
| WebInspector.DeviceModeModel.defaultMobileScaleFactor = 2;
|
|
|
| @@ -337,15 +332,10 @@ WebInspector.DeviceModeModel.prototype = {
|
| {
|
| if (!this._target) {
|
| this._target = target;
|
| - var domModel = WebInspector.DOMModel.fromTarget(this._target);
|
| - if (domModel)
|
| - domModel.addEventListener(WebInspector.DOMModel.Events.InspectModeWillBeToggled, this._reapplyTouch, this);
|
| if (this._onTargetAvailable) {
|
| var callback = this._onTargetAvailable;
|
| this._onTargetAvailable = null;
|
| callback();
|
| - } else {
|
| - this._reapplyTouch();
|
| }
|
| }
|
| },
|
| @@ -356,12 +346,8 @@ WebInspector.DeviceModeModel.prototype = {
|
| */
|
| targetRemoved: function(target)
|
| {
|
| - if (this._target === target) {
|
| - var domModel = WebInspector.DOMModel.fromTarget(this._target);
|
| - if (domModel)
|
| - domModel.removeEventListener(WebInspector.DOMModel.Events.InspectModeWillBeToggled, this._reapplyTouch, this);
|
| + if (this._target === target)
|
| this._target = null;
|
| - }
|
| },
|
|
|
| _scaleSettingChanged: function()
|
| @@ -422,11 +408,13 @@ WebInspector.DeviceModeModel.prototype = {
|
| this._appliedUserAgentType = this._device.touch() ? WebInspector.DeviceModeModel.UA.DesktopTouch : WebInspector.DeviceModeModel.UA.Desktop;
|
| this._applyDeviceMetrics(new Size(orientation.width, orientation.height), this._mode.insets, this._scaleSetting.get(), this._device.deviceScaleFactor, this._device.mobile(), this._mode.orientation == WebInspector.EmulatedDevice.Horizontal ? "landscapePrimary" : "portraitPrimary", resetPageScaleFactor);
|
| this._applyUserAgent(this._device.userAgent);
|
| + this._applyTouch(this._device.touch(), this._device.mobile());
|
| } else if (this._type === WebInspector.DeviceModeModel.Type.None) {
|
| this._fitScale = this._calculateFitScale(this._availableSize.width, this._availableSize.height);
|
| this._appliedUserAgentType = WebInspector.DeviceModeModel.UA.Desktop;
|
| this._applyDeviceMetrics(this._availableSize, new Insets(0, 0, 0, 0), 1, 0, false, "", resetPageScaleFactor);
|
| this._applyUserAgent("");
|
| + this._applyTouch(false, false);
|
| } else if (this._type === WebInspector.DeviceModeModel.Type.Responsive) {
|
| var screenWidth = this._widthSetting.get();
|
| if (!screenWidth || screenWidth > this._preferredScaledWidth())
|
| @@ -440,8 +428,8 @@ WebInspector.DeviceModeModel.prototype = {
|
| this._appliedUserAgentType = this._uaSetting.get();
|
| this._applyDeviceMetrics(new Size(screenWidth, screenHeight), new Insets(0, 0, 0, 0), this._scaleSetting.get(), this._deviceScaleFactorSetting.get() || defaultDeviceScaleFactor, mobile, screenHeight >= screenWidth ? "portraitPrimary" : "landscapePrimary", resetPageScaleFactor);
|
| this._applyUserAgent(mobile ? WebInspector.DeviceModeModel._defaultMobileUserAgent : "");
|
| + this._applyTouch(this._uaSetting.get() === WebInspector.DeviceModeModel.UA.DesktopTouch || this._uaSetting.get() === WebInspector.DeviceModeModel.UA.Mobile, this._uaSetting.get() === WebInspector.DeviceModeModel.UA.Mobile);
|
| }
|
| - this._reapplyTouch();
|
| this._updateCallback.call(null);
|
| },
|
|
|
| @@ -466,23 +454,6 @@ WebInspector.DeviceModeModel.prototype = {
|
| this.setWidth(width);
|
| },
|
|
|
| - _reapplyTouch: function()
|
| - {
|
| - var domModel = this._target ? WebInspector.DOMModel.fromTarget(this._target) : null;
|
| - var inspectModeEnabled = domModel ? domModel.inspectModeEnabled() : false;
|
| - if (inspectModeEnabled) {
|
| - this._applyTouch(false, false);
|
| - return;
|
| - }
|
| -
|
| - if (this._type === WebInspector.DeviceModeModel.Type.Device)
|
| - this._applyTouch(this._device.touch(), this._device.mobile());
|
| - else if (this._type === WebInspector.DeviceModeModel.Type.None)
|
| - this._applyTouch(false, false);
|
| - else if (this._type === WebInspector.DeviceModeModel.Type.Responsive)
|
| - this._applyTouch(this._uaSetting.get() === WebInspector.DeviceModeModel.UA.DesktopTouch || this._uaSetting.get() === WebInspector.DeviceModeModel.UA.Mobile, this._uaSetting.get() === WebInspector.DeviceModeModel.UA.Mobile);
|
| - },
|
| -
|
| /**
|
| * @param {string} userAgent
|
| */
|
| @@ -570,52 +541,12 @@ WebInspector.DeviceModeModel.prototype = {
|
| // Used for sniffing in tests.
|
| },
|
|
|
| + /**
|
| + * @param {boolean} touchEnabled
|
| + * @param {boolean} mobile
|
| + */
|
| _applyTouch: function(touchEnabled, mobile)
|
| {
|
| - var configuration = mobile ? "mobile" : "desktop";
|
| - if (!this._target || (this._touchEnabled === touchEnabled && this._touchConfiguration === configuration))
|
| - return;
|
| -
|
| - var target = this._target;
|
| -
|
| - /**
|
| - * @suppressGlobalPropertiesCheck
|
| - */
|
| - const injectedFunction = function() {
|
| - const touchEvents = ["ontouchstart", "ontouchend", "ontouchmove", "ontouchcancel"];
|
| - var recepients = [window.__proto__, document.__proto__];
|
| - for (var i = 0; i < touchEvents.length; ++i) {
|
| - for (var j = 0; j < recepients.length; ++j) {
|
| - if (!(touchEvents[i] in recepients[j]))
|
| - Object.defineProperty(recepients[j], touchEvents[i], { value: null, writable: true, configurable: true, enumerable: true });
|
| - }
|
| - }
|
| - };
|
| -
|
| - var symbol = WebInspector.DeviceModeModel._touchEventsScriptIdSymbol;
|
| -
|
| - if (typeof target[symbol] !== "undefined") {
|
| - target.pageAgent().removeScriptToEvaluateOnLoad(target[symbol]);
|
| - delete target[symbol];
|
| - }
|
| -
|
| - if (touchEnabled)
|
| - target.pageAgent().addScriptToEvaluateOnLoad("(" + injectedFunction.toString() + ")()", scriptAddedCallback);
|
| -
|
| - /**
|
| - * @param {?Protocol.Error} error
|
| - * @param {string} scriptId
|
| - */
|
| - function scriptAddedCallback(error, scriptId)
|
| - {
|
| - if (error)
|
| - delete target[symbol];
|
| - else
|
| - target[symbol] = scriptId;
|
| - }
|
| -
|
| - target.emulationAgent().setTouchEmulationEnabled(touchEnabled, configuration);
|
| - this._touchEnabled = touchEnabled;
|
| - this._touchConfiguration = configuration;
|
| + WebInspector.MultitargetTouchModel.instance().setTouchEnabled(touchEnabled, mobile);
|
| }
|
| }
|
|
|