void DevToolsEmulator::enableDeviceEmulation(const WebDeviceEmulationParams& params) { if (!m_deviceMetricsEnabled) { m_deviceMetricsEnabled = true; m_webViewImpl->setBackgroundColorOverride(Color::darkGray); m_webViewImpl->updateShowFPSCounterAndContinuousPainting(); } m_webViewImpl->page()->settings().setDeviceScaleAdjustment(calculateDeviceScaleAdjustment(params.viewSize.width, params.viewSize.height, params.deviceScaleFactor)); if (params.screenPosition == WebDeviceEmulationParams::Mobile) enableMobileEmulation(); else disableMobileEmulation(); m_webViewImpl->setCompositorDeviceScaleFactorOverride(params.deviceScaleFactor); m_webViewImpl->setRootLayerTransform(WebSize(params.offset.x, params.offset.y), params.scale); if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->document()) { document->styleResolverChanged(); document->mediaQueryAffectingValueChanged(); } }
void DevToolsEmulator::enableDeviceEmulation( const WebDeviceEmulationParams& params) { if (m_deviceMetricsEnabled && m_emulationParams.viewSize == params.viewSize && m_emulationParams.screenPosition == params.screenPosition && m_emulationParams.deviceScaleFactor == params.deviceScaleFactor && m_emulationParams.offset == params.offset && m_emulationParams.scale == params.scale) { return; } m_emulationParams = params; if (!m_deviceMetricsEnabled) { m_deviceMetricsEnabled = true; if (params.viewSize.width || params.viewSize.height) m_webViewImpl->setBackgroundColorOverride(Color::darkGray); } m_webViewImpl->page()->settings().setDeviceScaleAdjustment( calculateDeviceScaleAdjustment(params.viewSize.width, params.viewSize.height, params.deviceScaleFactor)); if (params.screenPosition == WebDeviceEmulationParams::Mobile) enableMobileEmulation(); else disableMobileEmulation(); m_webViewImpl->setCompositorDeviceScaleFactorOverride( params.deviceScaleFactor); updateRootLayerTransform(); // TODO(dgozman): mainFrameImpl() is null when it's remote. Figure out how // we end up with enabling emulation in this case. if (m_webViewImpl->mainFrameImpl()) { if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->document()) document->mediaQueryAffectingValueChanged(); } }