| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @constructor | 6 * @constructor |
| 7 * @param {function()} updateCallback | 7 * @param {function()} updateCallback |
| 8 * @implements {WebInspector.TargetManager.Observer} | 8 * @implements {WebInspector.TargetManager.Observer} |
| 9 */ | 9 */ |
| 10 WebInspector.DeviceModeModel = function(updateCallback) | 10 WebInspector.DeviceModeModel = function(updateCallback) |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 /** @type {!WebInspector.DeviceModeModel.Type} */ | 48 /** @type {!WebInspector.DeviceModeModel.Type} */ |
| 49 this._type = WebInspector.DeviceModeModel.Type.None; | 49 this._type = WebInspector.DeviceModeModel.Type.None; |
| 50 /** @type {?WebInspector.EmulatedDevice} */ | 50 /** @type {?WebInspector.EmulatedDevice} */ |
| 51 this._device = null; | 51 this._device = null; |
| 52 /** @type {?WebInspector.EmulatedDevice.Mode} */ | 52 /** @type {?WebInspector.EmulatedDevice.Mode} */ |
| 53 this._mode = null; | 53 this._mode = null; |
| 54 /** @type {boolean} */ | 54 /** @type {boolean} */ |
| 55 this._touchEnabled = false; | 55 this._touchEnabled = false; |
| 56 /** @type {string} */ | 56 /** @type {string} */ |
| 57 this._touchConfiguration = ""; | 57 this._touchConfiguration = ""; |
| 58 /** @type {string} */ | |
| 59 this._screenOrientation = ""; | |
| 60 /** @type {number} */ | 58 /** @type {number} */ |
| 61 this._fitScale = 1; | 59 this._fitScale = 1; |
| 62 | 60 |
| 63 /** @type {?WebInspector.Target} */ | 61 /** @type {?WebInspector.Target} */ |
| 64 this._target = null; | 62 this._target = null; |
| 65 /** @type {?function()} */ | 63 /** @type {?function()} */ |
| 66 this._onTargetAvailable = null; | 64 this._onTargetAvailable = null; |
| 67 WebInspector.targetManager.observeTargets(this, WebInspector.Target.Type.Pag
e); | 65 WebInspector.targetManager.observeTargets(this, WebInspector.Target.Type.Pag
e); |
| 68 } | 66 } |
| 69 | 67 |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 if (!this._target) | 413 if (!this._target) |
| 416 this._onTargetAvailable = this._calculateAndEmulate.bind(this, reset
PageScaleFactor); | 414 this._onTargetAvailable = this._calculateAndEmulate.bind(this, reset
PageScaleFactor); |
| 417 | 415 |
| 418 if (this._type === WebInspector.DeviceModeModel.Type.Device) { | 416 if (this._type === WebInspector.DeviceModeModel.Type.Device) { |
| 419 var orientation = this._device.orientationByName(this._mode.orientat
ion); | 417 var orientation = this._device.orientationByName(this._mode.orientat
ion); |
| 420 this._fitScale = this._calculateFitScale(orientation.width, orientat
ion.height); | 418 this._fitScale = this._calculateFitScale(orientation.width, orientat
ion.height); |
| 421 if (this._device.mobile()) | 419 if (this._device.mobile()) |
| 422 this._appliedUserAgentType = this._device.touch() ? WebInspector
.DeviceModeModel.UA.Mobile : WebInspector.DeviceModeModel.UA.MobileNoTouch; | 420 this._appliedUserAgentType = this._device.touch() ? WebInspector
.DeviceModeModel.UA.Mobile : WebInspector.DeviceModeModel.UA.MobileNoTouch; |
| 423 else | 421 else |
| 424 this._appliedUserAgentType = this._device.touch() ? WebInspector
.DeviceModeModel.UA.DesktopTouch : WebInspector.DeviceModeModel.UA.Desktop; | 422 this._appliedUserAgentType = this._device.touch() ? WebInspector
.DeviceModeModel.UA.DesktopTouch : WebInspector.DeviceModeModel.UA.Desktop; |
| 425 this._applyDeviceMetrics(new Size(orientation.width, orientation.hei
ght), this._mode.insets, this._scaleSetting.get(), this._device.deviceScaleFacto
r, this._device.mobile(), resetPageScaleFactor); | 423 this._applyDeviceMetrics(new Size(orientation.width, orientation.hei
ght), this._mode.insets, this._scaleSetting.get(), this._device.deviceScaleFacto
r, this._device.mobile(), this._mode.orientation == WebInspector.EmulatedDevice.
Horizontal ? "landscapePrimary" : "portraitPrimary", resetPageScaleFactor); |
| 426 this._applyUserAgent(this._device.userAgent); | 424 this._applyUserAgent(this._device.userAgent); |
| 427 this._applyScreenOrientation(this._mode.orientation == WebInspector.
EmulatedDevice.Horizontal ? "landscapePrimary" : "portraitPrimary"); | |
| 428 } else if (this._type === WebInspector.DeviceModeModel.Type.None) { | 425 } else if (this._type === WebInspector.DeviceModeModel.Type.None) { |
| 429 this._fitScale = this._calculateFitScale(this._availableSize.width,
this._availableSize.height); | 426 this._fitScale = this._calculateFitScale(this._availableSize.width,
this._availableSize.height); |
| 430 this._appliedUserAgentType = WebInspector.DeviceModeModel.UA.Desktop
; | 427 this._appliedUserAgentType = WebInspector.DeviceModeModel.UA.Desktop
; |
| 431 this._applyDeviceMetrics(this._availableSize, new Insets(0, 0, 0, 0)
, 1, 0, false, resetPageScaleFactor); | 428 this._applyDeviceMetrics(this._availableSize, new Insets(0, 0, 0, 0)
, 1, 0, false, "", resetPageScaleFactor); |
| 432 this._applyUserAgent(""); | 429 this._applyUserAgent(""); |
| 433 this._applyScreenOrientation(""); | |
| 434 } else if (this._type === WebInspector.DeviceModeModel.Type.Responsive)
{ | 430 } else if (this._type === WebInspector.DeviceModeModel.Type.Responsive)
{ |
| 435 var screenWidth = this._widthSetting.get(); | 431 var screenWidth = this._widthSetting.get(); |
| 436 if (!screenWidth || screenWidth > this._preferredScaledWidth()) | 432 if (!screenWidth || screenWidth > this._preferredScaledWidth()) |
| 437 screenWidth = this._preferredScaledWidth(); | 433 screenWidth = this._preferredScaledWidth(); |
| 438 var screenHeight = this._heightSetting.get(); | 434 var screenHeight = this._heightSetting.get(); |
| 439 if (!screenHeight || screenHeight > this._preferredScaledHeight()) | 435 if (!screenHeight || screenHeight > this._preferredScaledHeight()) |
| 440 screenHeight = this._preferredScaledHeight(); | 436 screenHeight = this._preferredScaledHeight(); |
| 441 var mobile = this._uaSetting.get() === WebInspector.DeviceModeModel.
UA.Mobile || this._uaSetting.get() === WebInspector.DeviceModeModel.UA.MobileNoT
ouch; | 437 var mobile = this._uaSetting.get() === WebInspector.DeviceModeModel.
UA.Mobile || this._uaSetting.get() === WebInspector.DeviceModeModel.UA.MobileNoT
ouch; |
| 442 var defaultDeviceScaleFactor = mobile ? WebInspector.DeviceModeModel
.defaultMobileScaleFactor : 0; | 438 var defaultDeviceScaleFactor = mobile ? WebInspector.DeviceModeModel
.defaultMobileScaleFactor : 0; |
| 443 this._fitScale = this._calculateFitScale(this._widthSetting.get(), t
his._heightSetting.get()); | 439 this._fitScale = this._calculateFitScale(this._widthSetting.get(), t
his._heightSetting.get()); |
| 444 this._appliedUserAgentType = this._uaSetting.get(); | 440 this._appliedUserAgentType = this._uaSetting.get(); |
| 445 this._applyDeviceMetrics(new Size(screenWidth, screenHeight), new In
sets(0, 0, 0, 0), this._scaleSetting.get(), this._deviceScaleFactorSetting.get()
|| defaultDeviceScaleFactor, mobile, resetPageScaleFactor); | 441 this._applyDeviceMetrics(new Size(screenWidth, screenHeight), new In
sets(0, 0, 0, 0), this._scaleSetting.get(), this._deviceScaleFactorSetting.get()
|| defaultDeviceScaleFactor, mobile, screenHeight >= screenWidth ? "portraitPri
mary" : "landscapePrimary", resetPageScaleFactor); |
| 446 this._applyUserAgent(mobile ? WebInspector.DeviceModeModel._defaultM
obileUserAgent : ""); | 442 this._applyUserAgent(mobile ? WebInspector.DeviceModeModel._defaultM
obileUserAgent : ""); |
| 447 this._applyScreenOrientation(screenHeight >= screenWidth ? "portrait
Primary" : "landscapePrimary"); | |
| 448 } | 443 } |
| 449 this._reapplyTouch(); | 444 this._reapplyTouch(); |
| 450 this._updateCallback.call(null); | 445 this._updateCallback.call(null); |
| 451 }, | 446 }, |
| 452 | 447 |
| 453 /** | 448 /** |
| 454 * @param {number} screenWidth | 449 * @param {number} screenWidth |
| 455 * @param {number} screenHeight | 450 * @param {number} screenHeight |
| 456 * @return {number} | 451 * @return {number} |
| 457 */ | 452 */ |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 { | 490 { |
| 496 WebInspector.multitargetNetworkManager.setUserAgentOverride(userAgent); | 491 WebInspector.multitargetNetworkManager.setUserAgentOverride(userAgent); |
| 497 }, | 492 }, |
| 498 | 493 |
| 499 /** | 494 /** |
| 500 * @param {!Size} screenSize | 495 * @param {!Size} screenSize |
| 501 * @param {!Insets} insets | 496 * @param {!Insets} insets |
| 502 * @param {number} scale | 497 * @param {number} scale |
| 503 * @param {number} deviceScaleFactor | 498 * @param {number} deviceScaleFactor |
| 504 * @param {boolean} mobile | 499 * @param {boolean} mobile |
| 500 * @param {string} screenOrientation |
| 505 * @param {boolean} resetPageScaleFactor | 501 * @param {boolean} resetPageScaleFactor |
| 506 */ | 502 */ |
| 507 _applyDeviceMetrics: function(screenSize, insets, scale, deviceScaleFactor,
mobile, resetPageScaleFactor) | 503 _applyDeviceMetrics: function(screenSize, insets, scale, deviceScaleFactor,
mobile, screenOrientation, resetPageScaleFactor) |
| 508 { | 504 { |
| 509 screenSize.width = Math.max(1, Math.floor(screenSize.width)); | 505 screenSize.width = Math.max(1, Math.floor(screenSize.width)); |
| 510 screenSize.height = Math.max(1, Math.floor(screenSize.height)); | 506 screenSize.height = Math.max(1, Math.floor(screenSize.height)); |
| 511 | 507 |
| 512 var pageWidth = screenSize.width - insets.left - insets.right; | 508 var pageWidth = screenSize.width - insets.left - insets.right; |
| 513 var pageHeight = screenSize.height - insets.top - insets.bottom; | 509 var pageHeight = screenSize.height - insets.top - insets.bottom; |
| 514 var positionX = insets.left; | 510 var positionX = insets.left; |
| 515 var positionY = insets.top; | 511 var positionY = insets.top; |
| 512 var screenOrientationAngle = screenOrientation === "landscapePrimary" ?
90 : 0; |
| 516 | 513 |
| 517 this._appliedDeviceSize = screenSize; | 514 this._appliedDeviceSize = screenSize; |
| 518 this._appliedDeviceScaleFactor = deviceScaleFactor || window.devicePixel
Ratio; | 515 this._appliedDeviceScaleFactor = deviceScaleFactor || window.devicePixel
Ratio; |
| 519 this._screenRect = new WebInspector.Rect( | 516 this._screenRect = new WebInspector.Rect( |
| 520 Math.max(0, (this._availableSize.width - screenSize.width * scale) /
2), | 517 Math.max(0, (this._availableSize.width - screenSize.width * scale) /
2), |
| 521 0, | 518 0, |
| 522 screenSize.width * scale, | 519 screenSize.width * scale, |
| 523 screenSize.height * scale); | 520 screenSize.height * scale); |
| 524 this._visiblePageRect = new WebInspector.Rect( | 521 this._visiblePageRect = new WebInspector.Rect( |
| 525 positionX * scale, | 522 positionX * scale, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 543 | 540 |
| 544 /** | 541 /** |
| 545 * @this {WebInspector.DeviceModeModel} | 542 * @this {WebInspector.DeviceModeModel} |
| 546 * @return {!Promise.<?>} | 543 * @return {!Promise.<?>} |
| 547 */ | 544 */ |
| 548 function setDeviceMetricsOverride() | 545 function setDeviceMetricsOverride() |
| 549 { | 546 { |
| 550 if (!this._target) | 547 if (!this._target) |
| 551 return Promise.resolve(); | 548 return Promise.resolve(); |
| 552 | 549 |
| 553 var clear = !pageWidth && !pageHeight && !mobile && !deviceScaleFact
or && scale === 1; | 550 var clear = !pageWidth && !pageHeight && !mobile && !deviceScaleFact
or && scale === 1 && !screenOrientation; |
| 554 var allPromises = []; | 551 var allPromises = []; |
| 555 if (resetPageScaleFactor) | 552 if (resetPageScaleFactor) |
| 556 allPromises.push(this._target.emulationAgent().resetPageScaleFac
tor()); | 553 allPromises.push(this._target.emulationAgent().resetPageScaleFac
tor()); |
| 557 var setDevicePromise = clear ? | 554 var setDevicePromise; |
| 558 this._target.emulationAgent().clearDeviceMetricsOverride(this._d
eviceMetricsOverrideAppliedForTest.bind(this)) : | 555 if (clear) { |
| 559 this._target.emulationAgent().setDeviceMetricsOverride(pageWidth
, pageHeight, deviceScaleFactor, mobile, false, scale, 0, 0, screenSize.width, s
creenSize.height, positionX, positionY, this._deviceMetricsOverrideAppliedForTes
t.bind(this)); | 556 setDevicePromise = this._target.emulationAgent().clearDeviceMetr
icsOverride(this._deviceMetricsOverrideAppliedForTest.bind(this)); |
| 557 } else { |
| 558 var params = {width: pageWidth, height: pageHeight, deviceScaleF
actor: deviceScaleFactor, mobile: mobile, fitWindow: false, scale: scale, screen
Width: screenSize.width, screenHeight: screenSize.height, positionX: positionX,
positionY: positionY}; |
| 559 if (screenOrientation) |
| 560 params.screenOrientation = {type: screenOrientation, angle:
screenOrientationAngle}; |
| 561 setDevicePromise = this._target.emulationAgent().invoke_setDevic
eMetricsOverride(params, this._deviceMetricsOverrideAppliedForTest.bind(this)); |
| 562 } |
| 560 allPromises.push(setDevicePromise); | 563 allPromises.push(setDevicePromise); |
| 561 return Promise.all(allPromises); | 564 return Promise.all(allPromises); |
| 562 } | 565 } |
| 563 }, | 566 }, |
| 564 | 567 |
| 565 _deviceMetricsOverrideAppliedForTest: function() | 568 _deviceMetricsOverrideAppliedForTest: function() |
| 566 { | 569 { |
| 567 // Used for sniffing in tests. | 570 // Used for sniffing in tests. |
| 568 }, | 571 }, |
| 569 | 572 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 607 { | 610 { |
| 608 if (error) | 611 if (error) |
| 609 delete target[symbol]; | 612 delete target[symbol]; |
| 610 else | 613 else |
| 611 target[symbol] = scriptId; | 614 target[symbol] = scriptId; |
| 612 } | 615 } |
| 613 | 616 |
| 614 target.emulationAgent().setTouchEmulationEnabled(touchEnabled, configura
tion); | 617 target.emulationAgent().setTouchEmulationEnabled(touchEnabled, configura
tion); |
| 615 this._touchEnabled = touchEnabled; | 618 this._touchEnabled = touchEnabled; |
| 616 this._touchConfiguration = configuration; | 619 this._touchConfiguration = configuration; |
| 617 }, | |
| 618 | |
| 619 /** | |
| 620 * @param {string} orientation | |
| 621 */ | |
| 622 _applyScreenOrientation: function(orientation) | |
| 623 { | |
| 624 if (!this._target || orientation === this._screenOrientation) | |
| 625 return; | |
| 626 | |
| 627 this._screenOrientation = orientation; | |
| 628 if (!this._screenOrientation) | |
| 629 this._target.screenOrientationAgent().clearScreenOrientationOverride
(); | |
| 630 else | |
| 631 this._target.screenOrientationAgent().setScreenOrientationOverride(t
his._screenOrientation === "landscapePrimary" ? 90 : 0, /** @type {!ScreenOrient
ationAgent.OrientationType} */ (this._screenOrientation)); | |
| 632 } | 620 } |
| 633 } | 621 } |
| OLD | NEW |