| 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 #include "web/DevToolsEmulator.h" | 5 #include "web/DevToolsEmulator.h" |
| 6 | 6 |
| 7 #include "core/frame/FrameHost.h" | 7 #include "core/frame/FrameHost.h" |
| 8 #include "core/frame/FrameView.h" | 8 #include "core/frame/FrameView.h" |
| 9 #include "core/frame/Settings.h" | 9 #include "core/frame/Settings.h" |
| 10 #include "core/frame/VisualViewport.h" | 10 #include "core/frame/VisualViewport.h" |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 if (params.screenPosition == WebDeviceEmulationParams::Mobile) | 216 if (params.screenPosition == WebDeviceEmulationParams::Mobile) |
| 217 enableMobileEmulation(); | 217 enableMobileEmulation(); |
| 218 else | 218 else |
| 219 disableMobileEmulation(); | 219 disableMobileEmulation(); |
| 220 | 220 |
| 221 m_webViewImpl->setCompositorDeviceScaleFactorOverride(params.deviceScaleFact
or); | 221 m_webViewImpl->setCompositorDeviceScaleFactorOverride(params.deviceScaleFact
or); |
| 222 m_webViewImpl->setRootLayerTransform(WebSize(params.offset.x, params.offset.
y), params.scale); | 222 m_webViewImpl->setRootLayerTransform(WebSize(params.offset.x, params.offset.
y), params.scale); |
| 223 // TODO(dgozman): mainFrameImpl() is null when it's remote. Figure out how | 223 // TODO(dgozman): mainFrameImpl() is null when it's remote. Figure out how |
| 224 // we end up with enabling emulation in this case. | 224 // we end up with enabling emulation in this case. |
| 225 if (m_webViewImpl->mainFrameImpl()) { | 225 if (m_webViewImpl->mainFrameImpl()) { |
| 226 m_webViewImpl->mainFrameImpl()->frameView()->layout(); |
| 226 if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->docume
nt()) | 227 if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->docume
nt()) |
| 227 document->mediaQueryAffectingValueChanged(); | 228 document->mediaQueryAffectingValueChanged(); |
| 228 } | 229 } |
| 229 } | 230 } |
| 230 | 231 |
| 231 void DevToolsEmulator::disableDeviceEmulation() | 232 void DevToolsEmulator::disableDeviceEmulation() |
| 232 { | 233 { |
| 233 if (!m_deviceMetricsEnabled) | 234 if (!m_deviceMetricsEnabled) |
| 234 return; | 235 return; |
| 235 | 236 |
| 236 m_deviceMetricsEnabled = false; | 237 m_deviceMetricsEnabled = false; |
| 237 m_webViewImpl->setBackgroundColorOverride(Color::transparent); | 238 m_webViewImpl->setBackgroundColorOverride(Color::transparent); |
| 238 m_webViewImpl->page()->settings().setDeviceScaleAdjustment(m_embedderDeviceS
caleAdjustment); | 239 m_webViewImpl->page()->settings().setDeviceScaleAdjustment(m_embedderDeviceS
caleAdjustment); |
| 239 disableMobileEmulation(); | 240 disableMobileEmulation(); |
| 240 m_webViewImpl->setCompositorDeviceScaleFactorOverride(0.f); | 241 m_webViewImpl->setCompositorDeviceScaleFactorOverride(0.f); |
| 241 m_webViewImpl->setRootLayerTransform(WebSize(0.f, 0.f), 1.f); | 242 m_webViewImpl->setRootLayerTransform(WebSize(0.f, 0.f), 1.f); |
| 242 m_webViewImpl->setPageScaleFactor(1.f); | 243 m_webViewImpl->resetScaleStateImmediately(); |
| 243 // mainFrameImpl() could be null during cleanup or remote <-> local swap. | 244 // mainFrameImpl() could be null during cleanup or remote <-> local swap. |
| 244 if (m_webViewImpl->mainFrameImpl()) { | 245 if (m_webViewImpl->mainFrameImpl()) { |
| 246 m_webViewImpl->mainFrameImpl()->frameView()->layout(); |
| 245 if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->docume
nt()) | 247 if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->docume
nt()) |
| 246 document->mediaQueryAffectingValueChanged(); | 248 document->mediaQueryAffectingValueChanged(); |
| 247 } | 249 } |
| 248 } | 250 } |
| 249 | 251 |
| 250 bool DevToolsEmulator::resizeIsDeviceSizeChange() | 252 bool DevToolsEmulator::resizeIsDeviceSizeChange() |
| 251 { | 253 { |
| 252 return m_deviceMetricsEnabled && m_emulateMobileEnabled; | 254 return m_deviceMetricsEnabled && m_emulateMobileEnabled; |
| 253 } | 255 } |
| 254 | 256 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 275 m_webViewImpl->page()->settings().setAvailablePointerTypes(PointerTypeCoarse
); | 277 m_webViewImpl->page()->settings().setAvailablePointerTypes(PointerTypeCoarse
); |
| 276 m_webViewImpl->page()->settings().setPrimaryPointerType(PointerTypeCoarse); | 278 m_webViewImpl->page()->settings().setPrimaryPointerType(PointerTypeCoarse); |
| 277 m_webViewImpl->page()->settings().setAvailableHoverTypes(HoverTypeOnDemand); | 279 m_webViewImpl->page()->settings().setAvailableHoverTypes(HoverTypeOnDemand); |
| 278 m_webViewImpl->page()->settings().setPrimaryHoverType(HoverTypeOnDemand); | 280 m_webViewImpl->page()->settings().setPrimaryHoverType(HoverTypeOnDemand); |
| 279 m_webViewImpl->page()->settings().setResizeIsDeviceSizeChange(true); | 281 m_webViewImpl->page()->settings().setResizeIsDeviceSizeChange(true); |
| 280 m_webViewImpl->setZoomFactorOverride(1); | 282 m_webViewImpl->setZoomFactorOverride(1); |
| 281 | 283 |
| 282 m_originalDefaultMinimumPageScaleFactor = m_webViewImpl->defaultMinimumPageS
caleFactor(); | 284 m_originalDefaultMinimumPageScaleFactor = m_webViewImpl->defaultMinimumPageS
caleFactor(); |
| 283 m_originalDefaultMaximumPageScaleFactor = m_webViewImpl->defaultMaximumPageS
caleFactor(); | 285 m_originalDefaultMaximumPageScaleFactor = m_webViewImpl->defaultMaximumPageS
caleFactor(); |
| 284 m_webViewImpl->setDefaultPageScaleLimits(0.25f, 5); | 286 m_webViewImpl->setDefaultPageScaleLimits(0.25f, 5); |
| 285 // TODO(dgozman): mainFrameImpl() is null when it's remote. Figure out how | |
| 286 // we end up with enabling emulation in this case. | |
| 287 if (m_webViewImpl->mainFrameImpl()) | |
| 288 m_webViewImpl->mainFrameImpl()->frameView()->layout(); | |
| 289 } | 287 } |
| 290 | 288 |
| 291 void DevToolsEmulator::disableMobileEmulation() | 289 void DevToolsEmulator::disableMobileEmulation() |
| 292 { | 290 { |
| 293 if (!m_emulateMobileEnabled) | 291 if (!m_emulateMobileEnabled) |
| 294 return; | 292 return; |
| 295 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(m_isOverlayScrollbarsEna
bled); | 293 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(m_isOverlayScrollbarsEna
bled); |
| 296 RuntimeEnabledFeatures::setOrientationEventEnabled(m_isOrientationEventEnabl
ed); | 294 RuntimeEnabledFeatures::setOrientationEventEnabled(m_isOrientationEventEnabl
ed); |
| 297 RuntimeEnabledFeatures::setMobileLayoutThemeEnabled(m_isMobileLayoutThemeEna
bled); | 295 RuntimeEnabledFeatures::setMobileLayoutThemeEnabled(m_isMobileLayoutThemeEna
bled); |
| 298 ComputedStyle::invalidateInitialStyle(); | 296 ComputedStyle::invalidateInitialStyle(); |
| 299 m_webViewImpl->page()->settings().setViewportEnabled(false); | 297 m_webViewImpl->page()->settings().setViewportEnabled(false); |
| 300 m_webViewImpl->page()->settings().setViewportMetaEnabled(false); | 298 m_webViewImpl->page()->settings().setViewportMetaEnabled(false); |
| 301 m_webViewImpl->page()->frameHost().visualViewport().initializeScrollbars(); | 299 m_webViewImpl->page()->frameHost().visualViewport().initializeScrollbars(); |
| 302 m_webViewImpl->settings()->setShrinksViewportContentToFit(false); | 300 m_webViewImpl->settings()->setShrinksViewportContentToFit(false); |
| 303 m_webViewImpl->page()->settings().setTextAutosizingEnabled(m_embedderTextAut
osizingEnabled); | 301 m_webViewImpl->page()->settings().setTextAutosizingEnabled(m_embedderTextAut
osizingEnabled); |
| 304 m_webViewImpl->page()->settings().setPreferCompositingToLCDTextEnabled(m_emb
edderPreferCompositingToLCDTextEnabled); | 302 m_webViewImpl->page()->settings().setPreferCompositingToLCDTextEnabled(m_emb
edderPreferCompositingToLCDTextEnabled); |
| 305 m_webViewImpl->page()->settings().setViewportStyle(m_embedderViewportStyle); | 303 m_webViewImpl->page()->settings().setViewportStyle(m_embedderViewportStyle); |
| 306 m_webViewImpl->page()->settings().setPluginsEnabled(m_embedderPluginsEnabled
); | 304 m_webViewImpl->page()->settings().setPluginsEnabled(m_embedderPluginsEnabled
); |
| 307 m_webViewImpl->page()->settings().setAvailablePointerTypes(m_embedderAvailab
lePointerTypes); | 305 m_webViewImpl->page()->settings().setAvailablePointerTypes(m_embedderAvailab
lePointerTypes); |
| 308 m_webViewImpl->page()->settings().setPrimaryPointerType(m_embedderPrimaryPoi
nterType); | 306 m_webViewImpl->page()->settings().setPrimaryPointerType(m_embedderPrimaryPoi
nterType); |
| 309 m_webViewImpl->page()->settings().setAvailableHoverTypes(m_embedderAvailable
HoverTypes); | 307 m_webViewImpl->page()->settings().setAvailableHoverTypes(m_embedderAvailable
HoverTypes); |
| 310 m_webViewImpl->page()->settings().setPrimaryHoverType(m_embedderPrimaryHover
Type); | 308 m_webViewImpl->page()->settings().setPrimaryHoverType(m_embedderPrimaryHover
Type); |
| 311 m_webViewImpl->page()->settings().setResizeIsDeviceSizeChange(false); | 309 m_webViewImpl->page()->settings().setResizeIsDeviceSizeChange(false); |
| 312 m_webViewImpl->setZoomFactorOverride(0); | 310 m_webViewImpl->setZoomFactorOverride(0); |
| 313 m_emulateMobileEnabled = false; | 311 m_emulateMobileEnabled = false; |
| 314 m_webViewImpl->setDefaultPageScaleLimits( | 312 m_webViewImpl->setDefaultPageScaleLimits( |
| 315 m_originalDefaultMinimumPageScaleFactor, | 313 m_originalDefaultMinimumPageScaleFactor, |
| 316 m_originalDefaultMaximumPageScaleFactor); | 314 m_originalDefaultMaximumPageScaleFactor); |
| 317 // mainFrameImpl() could be null during cleanup or remote <-> local swap. | |
| 318 if (m_webViewImpl->mainFrameImpl()) | |
| 319 m_webViewImpl->mainFrameImpl()->frameView()->layout(); | |
| 320 } | 315 } |
| 321 | 316 |
| 322 void DevToolsEmulator::setTouchEventEmulationEnabled(bool enabled) | 317 void DevToolsEmulator::setTouchEventEmulationEnabled(bool enabled) |
| 323 { | 318 { |
| 324 if (m_touchEventEmulationEnabled == enabled) | 319 if (m_touchEventEmulationEnabled == enabled) |
| 325 return; | 320 return; |
| 326 if (!m_touchEventEmulationEnabled) { | 321 if (!m_touchEventEmulationEnabled) { |
| 327 m_originalTouchEnabled = RuntimeEnabledFeatures::touchEnabled(); | 322 m_originalTouchEnabled = RuntimeEnabledFeatures::touchEnabled(); |
| 328 m_originalDeviceSupportsMouse = m_webViewImpl->page()->settings().device
SupportsMouse(); | 323 m_originalDeviceSupportsMouse = m_webViewImpl->page()->settings().device
SupportsMouse(); |
| 329 m_originalDeviceSupportsTouch = m_webViewImpl->page()->settings().device
SupportsTouch(); | 324 m_originalDeviceSupportsTouch = m_webViewImpl->page()->settings().device
SupportsTouch(); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 m_lastPinchAnchorCss.reset(); | 377 m_lastPinchAnchorCss.reset(); |
| 383 m_lastPinchAnchorDip.reset(); | 378 m_lastPinchAnchorDip.reset(); |
| 384 } | 379 } |
| 385 return true; | 380 return true; |
| 386 } | 381 } |
| 387 | 382 |
| 388 return false; | 383 return false; |
| 389 } | 384 } |
| 390 | 385 |
| 391 } // namespace blink | 386 } // namespace blink |
| OLD | NEW |