예제 #1
0
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();
    }
}
예제 #2
0
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();
  }
}