| 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 29 matching lines...) Expand all Loading... |
| 40 this._touchEnabled = false; | 40 this._touchEnabled = false; |
| 41 /** @type {string} */ | 41 /** @type {string} */ |
| 42 this._touchConfiguration = ""; | 42 this._touchConfiguration = ""; |
| 43 /** @type {string} */ | 43 /** @type {string} */ |
| 44 this._screenOrientation = ""; | 44 this._screenOrientation = ""; |
| 45 /** @type {number} */ | 45 /** @type {number} */ |
| 46 this._fitScale = 1; | 46 this._fitScale = 1; |
| 47 | 47 |
| 48 /** @type {?WebInspector.Target} */ | 48 /** @type {?WebInspector.Target} */ |
| 49 this._target = null; | 49 this._target = null; |
| 50 /** @type {?function()} */ |
| 51 this._onTargetAvailable = null; |
| 50 WebInspector.targetManager.observeTargets(this, WebInspector.Target.Type.Pag
e); | 52 WebInspector.targetManager.observeTargets(this, WebInspector.Target.Type.Pag
e); |
| 51 } | 53 } |
| 52 | 54 |
| 53 /** @enum {string} */ | 55 /** @enum {string} */ |
| 54 WebInspector.DeviceModeModel.Type = { | 56 WebInspector.DeviceModeModel.Type = { |
| 55 None: "None", | 57 None: "None", |
| 56 Responsive: "Responsive", | 58 Responsive: "Responsive", |
| 57 Device: "Device" | 59 Device: "Device" |
| 58 } | 60 } |
| 59 | 61 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 this._calculateAndEmulate(false); | 95 this._calculateAndEmulate(false); |
| 94 }, | 96 }, |
| 95 | 97 |
| 96 /** | 98 /** |
| 97 * @param {!WebInspector.DeviceModeModel.Type} type | 99 * @param {!WebInspector.DeviceModeModel.Type} type |
| 98 * @param {?WebInspector.EmulatedDevice} device | 100 * @param {?WebInspector.EmulatedDevice} device |
| 99 * @param {?WebInspector.EmulatedDevice.Mode} mode | 101 * @param {?WebInspector.EmulatedDevice.Mode} mode |
| 100 */ | 102 */ |
| 101 emulate: function(type, device, mode) | 103 emulate: function(type, device, mode) |
| 102 { | 104 { |
| 105 var resetScrollAndPageScale = this._type !== type || this._device !== de
vice || this._mode !== mode; |
| 103 this._type = type; | 106 this._type = type; |
| 104 | 107 |
| 105 if (type === WebInspector.DeviceModeModel.Type.Device) { | 108 if (type === WebInspector.DeviceModeModel.Type.Device) { |
| 106 console.assert(device && mode, "Must pass device and mode for device
emulation"); | 109 console.assert(device && mode, "Must pass device and mode for device
emulation"); |
| 107 this._device = device; | 110 this._device = device; |
| 108 this._mode = mode; | 111 this._mode = mode; |
| 109 } else { | 112 } else { |
| 110 this._device = null; | 113 this._device = null; |
| 111 this._mode = null; | 114 this._mode = null; |
| 112 } | 115 } |
| 113 | 116 |
| 114 if (type !== WebInspector.DeviceModeModel.Type.None) | 117 if (type !== WebInspector.DeviceModeModel.Type.None) |
| 115 WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action
.DeviceModeEnabled); | 118 WebInspector.userMetrics.actionTaken(WebInspector.UserMetrics.Action
.DeviceModeEnabled); |
| 116 this._calculateAndEmulate(true); | 119 this._calculateAndEmulate(resetScrollAndPageScale); |
| 117 }, | 120 }, |
| 118 | 121 |
| 119 /** | 122 /** |
| 120 * @return {?WebInspector.EmulatedDevice} | 123 * @return {?WebInspector.EmulatedDevice} |
| 121 */ | 124 */ |
| 122 device: function() | 125 device: function() |
| 123 { | 126 { |
| 124 return this._device; | 127 return this._device; |
| 125 }, | 128 }, |
| 126 | 129 |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 /** | 264 /** |
| 262 * @override | 265 * @override |
| 263 * @param {!WebInspector.Target} target | 266 * @param {!WebInspector.Target} target |
| 264 */ | 267 */ |
| 265 targetAdded: function(target) | 268 targetAdded: function(target) |
| 266 { | 269 { |
| 267 if (!this._target) { | 270 if (!this._target) { |
| 268 this._target = target; | 271 this._target = target; |
| 269 var domModel = WebInspector.DOMModel.fromTarget(this._target); | 272 var domModel = WebInspector.DOMModel.fromTarget(this._target); |
| 270 domModel.addEventListener(WebInspector.DOMModel.Events.InspectModeWi
llBeToggled, this._inspectModeWillBeToggled, this); | 273 domModel.addEventListener(WebInspector.DOMModel.Events.InspectModeWi
llBeToggled, this._inspectModeWillBeToggled, this); |
| 274 if (this._onTargetAvailable) { |
| 275 var callback = this._onTargetAvailable; |
| 276 this._onTargetAvailable = null; |
| 277 callback(); |
| 278 } |
| 271 } | 279 } |
| 272 }, | 280 }, |
| 273 | 281 |
| 274 /** | 282 /** |
| 275 * @param {!WebInspector.Event} event | 283 * @param {!WebInspector.Event} event |
| 276 */ | 284 */ |
| 277 _inspectModeWillBeToggled: function(event) | 285 _inspectModeWillBeToggled: function(event) |
| 278 { | 286 { |
| 279 var inspectModeEnabled = /** @type {boolean} */ (event.data); | 287 var inspectModeEnabled = /** @type {boolean} */ (event.data); |
| 280 if (inspectModeEnabled) { | 288 if (inspectModeEnabled) { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 _deviceScaleFactorSettingChanged: function() | 331 _deviceScaleFactorSettingChanged: function() |
| 324 { | 332 { |
| 325 this._calculateAndEmulate(false); | 333 this._calculateAndEmulate(false); |
| 326 }, | 334 }, |
| 327 | 335 |
| 328 /** | 336 /** |
| 329 * @param {boolean} resetScrollAndPageScale | 337 * @param {boolean} resetScrollAndPageScale |
| 330 */ | 338 */ |
| 331 _calculateAndEmulate: function(resetScrollAndPageScale) | 339 _calculateAndEmulate: function(resetScrollAndPageScale) |
| 332 { | 340 { |
| 341 if (!this._target) { |
| 342 this._onTargetAvailable = this._calculateAndEmulate.bind(this, reset
ScrollAndPageScale); |
| 343 return; |
| 344 } |
| 345 |
| 333 if (this._type === WebInspector.DeviceModeModel.Type.Device) { | 346 if (this._type === WebInspector.DeviceModeModel.Type.Device) { |
| 334 var orientation = this._device.orientationByName(this._mode.orientat
ion); | 347 var orientation = this._device.orientationByName(this._mode.orientat
ion); |
| 335 var screenWidth = orientation.width; | 348 this._calculateFitScale(orientation.width, orientation.height); |
| 336 var screenHeight = orientation.height; | 349 this._applyDeviceMetrics(new Size(orientation.width, orientation.hei
ght), this._mode.insets, this._scaleSetting.get(), this._device.deviceScaleFacto
r, this._device.mobile(), resetScrollAndPageScale); |
| 337 this._applyDeviceMetrics(new Size(screenWidth, screenHeight), this._
mode.insets, this._scaleSetting.get(), this._device.deviceScaleFactor, this._dev
ice.mobile(), resetScrollAndPageScale); | |
| 338 this._applyUserAgent(this._device.userAgent); | 350 this._applyUserAgent(this._device.userAgent); |
| 339 this._applyTouch(this._device.touch(), this._device.mobile()); | 351 this._applyTouch(this._device.touch(), this._device.mobile()); |
| 340 this._applyScreenOrientation(this._mode.orientation == WebInspector.
EmulatedDevice.Horizontal ? "landscapePrimary" : "portraitPrimary"); | 352 this._applyScreenOrientation(this._mode.orientation == WebInspector.
EmulatedDevice.Horizontal ? "landscapePrimary" : "portraitPrimary"); |
| 341 } else if (this._type === WebInspector.DeviceModeModel.Type.None) { | 353 } else if (this._type === WebInspector.DeviceModeModel.Type.None) { |
| 354 this._calculateFitScale(this._availableSize.width, this._availableSi
ze.height); |
| 342 this._applyDeviceMetrics(this._availableSize, new Insets(0, 0, 0, 0)
, 1, 0, false, resetScrollAndPageScale); | 355 this._applyDeviceMetrics(this._availableSize, new Insets(0, 0, 0, 0)
, 1, 0, false, resetScrollAndPageScale); |
| 343 this._applyUserAgent(""); | 356 this._applyUserAgent(""); |
| 344 this._applyTouch(false, false); | 357 this._applyTouch(false, false); |
| 345 this._applyScreenOrientation(""); | 358 this._applyScreenOrientation(""); |
| 346 } else if (this._type === WebInspector.DeviceModeModel.Type.Responsive)
{ | 359 } else if (this._type === WebInspector.DeviceModeModel.Type.Responsive)
{ |
| 347 var screenWidth = this._widthSetting.get() || this._preferredSize.wi
dth / (this._scaleSetting.get() || 1); | 360 var screenWidth = this._widthSetting.get() || this._preferredSize.wi
dth / (this._scaleSetting.get() || 1); |
| 348 var screenHeight = this._heightSetting.get() || this._preferredSize.
height / (this._scaleSetting.get() || 1); | 361 var screenHeight = this._heightSetting.get() || this._preferredSize.
height / (this._scaleSetting.get() || 1); |
| 349 var mobile = this._uaSetting.get() === WebInspector.DeviceModeModel.
UA.Mobile; | 362 var mobile = this._uaSetting.get() === WebInspector.DeviceModeModel.
UA.Mobile; |
| 350 var defaultDeviceScaleFactor = mobile ? WebInspector.DeviceModeModel
._defaultMobileScaleFactor : 0; | 363 var defaultDeviceScaleFactor = mobile ? WebInspector.DeviceModeModel
._defaultMobileScaleFactor : 0; |
| 364 this._calculateFitScale(this._widthSetting.get(), this._heightSettin
g.get()); |
| 351 this._applyDeviceMetrics(new Size(screenWidth, screenHeight), new In
sets(0, 0, 0, 0), this._scaleSetting.get(), this._deviceScaleFactorSetting.get()
|| defaultDeviceScaleFactor, mobile, resetScrollAndPageScale); | 365 this._applyDeviceMetrics(new Size(screenWidth, screenHeight), new In
sets(0, 0, 0, 0), this._scaleSetting.get(), this._deviceScaleFactorSetting.get()
|| defaultDeviceScaleFactor, mobile, resetScrollAndPageScale); |
| 352 this._applyUserAgent(mobile ? WebInspector.DeviceModeModel._defaultM
obileUserAgent : ""); | 366 this._applyUserAgent(mobile ? WebInspector.DeviceModeModel._defaultM
obileUserAgent : ""); |
| 353 this._applyTouch(this._uaSetting.get() !== WebInspector.DeviceModeMo
del.UA.Desktop, mobile); | 367 this._applyTouch(this._uaSetting.get() !== WebInspector.DeviceModeMo
del.UA.Desktop, mobile); |
| 354 this._applyScreenOrientation(screenHeight >= screenWidth ? "portrait
Primary" : "landscapePrimary"); | 368 this._applyScreenOrientation(screenHeight >= screenWidth ? "portrait
Primary" : "landscapePrimary"); |
| 355 } | 369 } |
| 356 this._updateCallback.call(null); | 370 this._updateCallback.call(null); |
| 357 }, | 371 }, |
| 358 | 372 |
| 359 /** | 373 /** |
| 360 * @param {number} screenWidth | 374 * @param {number} screenWidth |
| 361 * @param {number} screenHeight | 375 * @param {number} screenHeight |
| 362 * @return {number} | |
| 363 */ | 376 */ |
| 364 _calculateFitScale: function(screenWidth, screenHeight) | 377 _calculateFitScale: function(screenWidth, screenHeight) |
| 365 { | 378 { |
| 366 var scale = Math.min(screenWidth ? this._preferredSize.width / screenWid
th: 1, screenHeight ? this._preferredSize.height / screenHeight : 1); | 379 var scale = Math.min(screenWidth ? this._preferredSize.width / screenWid
th: 1, screenHeight ? this._preferredSize.height / screenHeight : 1); |
| 367 return Math.min(scale, 1); | 380 this._fitScale = Math.min(scale, 1); |
| 368 }, | 381 }, |
| 369 | 382 |
| 370 /** | 383 /** |
| 371 * @param {string} userAgent | 384 * @param {string} userAgent |
| 372 */ | 385 */ |
| 373 _applyUserAgent: function(userAgent) | 386 _applyUserAgent: function(userAgent) |
| 374 { | 387 { |
| 375 WebInspector.multitargetNetworkManager.setUserAgentOverride(userAgent); | 388 WebInspector.multitargetNetworkManager.setUserAgentOverride(userAgent); |
| 376 }, | 389 }, |
| 377 | 390 |
| 378 /** | 391 /** |
| 379 * @param {!Size} screenSize | 392 * @param {!Size} screenSize |
| 380 * @param {!Insets} insets | 393 * @param {!Insets} insets |
| 381 * @param {number} scale | 394 * @param {number} scale |
| 382 * @param {number} deviceScaleFactor | 395 * @param {number} deviceScaleFactor |
| 383 * @param {boolean} mobile | 396 * @param {boolean} mobile |
| 384 * @param {boolean} resetScrollAndPageScale | 397 * @param {boolean} resetScrollAndPageScale |
| 385 */ | 398 */ |
| 386 _applyDeviceMetrics: function(screenSize, insets, scale, deviceScaleFactor,
mobile, resetScrollAndPageScale) | 399 _applyDeviceMetrics: function(screenSize, insets, scale, deviceScaleFactor,
mobile, resetScrollAndPageScale) |
| 387 { | 400 { |
| 388 screenSize.width = Math.max(1, Math.floor(screenSize.width)); | 401 screenSize.width = Math.max(1, Math.floor(screenSize.width)); |
| 389 screenSize.height = Math.max(1, Math.floor(screenSize.height)); | 402 screenSize.height = Math.max(1, Math.floor(screenSize.height)); |
| 390 this._fitScale = this._calculateFitScale(screenSize.width, screenSize.he
ight); | |
| 391 | 403 |
| 392 var pageWidth = screenSize.width - insets.left - insets.right; | 404 var pageWidth = screenSize.width - insets.left - insets.right; |
| 393 var pageHeight = screenSize.height - insets.top - insets.bottom; | 405 var pageHeight = screenSize.height - insets.top - insets.bottom; |
| 394 var positionX = insets.left; | 406 var positionX = insets.left; |
| 395 var positionY = insets.top; | 407 var positionY = insets.top; |
| 396 | 408 |
| 397 this._appliedDeviceSize = screenSize; | 409 this._appliedDeviceSize = screenSize; |
| 398 this._screenRect = new WebInspector.Rect( | 410 this._screenRect = new WebInspector.Rect( |
| 399 Math.max(0, (this._availableSize.width - screenSize.width * scale) /
2), | 411 Math.max(0, (this._availableSize.width - screenSize.width * scale) /
2), |
| 400 0, | 412 0, |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 if (!this._target || orientation === this._screenOrientation) | 510 if (!this._target || orientation === this._screenOrientation) |
| 499 return; | 511 return; |
| 500 | 512 |
| 501 this._screenOrientation = orientation; | 513 this._screenOrientation = orientation; |
| 502 if (!this._screenOrientation) | 514 if (!this._screenOrientation) |
| 503 this._target.screenOrientationAgent().clearScreenOrientationOverride
(); | 515 this._target.screenOrientationAgent().clearScreenOrientationOverride
(); |
| 504 else | 516 else |
| 505 this._target.screenOrientationAgent().setScreenOrientationOverride(t
his._screenOrientation === "landscapePrimary" ? 90 : 0, /** @type {!ScreenOrient
ationAgent.OrientationType} */ (this._screenOrientation)); | 517 this._target.screenOrientationAgent().setScreenOrientationOverride(t
his._screenOrientation === "landscapePrimary" ? 90 : 0, /** @type {!ScreenOrient
ationAgent.OrientationType} */ (this._screenOrientation)); |
| 506 } | 518 } |
| 507 } | 519 } |
| OLD | NEW |