Index: Source/web/WebDevToolsAgentImpl.cpp |
diff --git a/Source/web/WebDevToolsAgentImpl.cpp b/Source/web/WebDevToolsAgentImpl.cpp |
index ef1d5a17680f91e66abd1066b08f537b9b6a8fa3..4eef66fc6b9ba96457e5ec52b9b99ad9afe950f2 100644 |
--- a/Source/web/WebDevToolsAgentImpl.cpp |
+++ b/Source/web/WebDevToolsAgentImpl.cpp |
@@ -198,8 +198,9 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl( |
, m_attached(false) |
, m_generatingEvent(false) |
, m_deviceMetricsEnabled(false) |
+ , m_emulateViewportEnabled(false) |
+ , m_originalViewportEnabled(false) |
, m_isOverlayScrollbarsEnabled(false) |
- , m_isCSSViewportEnabled(false) |
{ |
ASSERT(m_hostId > 0); |
ClientMessageLoopAdapter::ensureClientMessageLoopCreated(m_client); |
@@ -314,19 +315,14 @@ bool WebDevToolsAgentImpl::handleInputEvent(WebCore::Page* page, const WebInputE |
return false; |
} |
-void WebDevToolsAgentImpl::overrideDeviceMetrics(int width, int height, float deviceScaleFactor, bool fitWindow) |
+void WebDevToolsAgentImpl::overrideDeviceMetrics(int width, int height, float deviceScaleFactor, bool emulateViewport, bool fitWindow) |
{ |
if (!width && !height) { |
if (m_deviceMetricsEnabled) { |
m_deviceMetricsEnabled = false; |
m_webViewImpl->setBackgroundColorOverride(Color::transparent); |
RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(m_isOverlayScrollbarsEnabled); |
- |
- RuntimeEnabledFeatures::setCSSViewportEnabled(m_isCSSViewportEnabled); |
- m_webViewImpl->settings()->setViewportEnabled(false); |
- m_webViewImpl->setIgnoreViewportTagScaleLimits(false); |
- m_webViewImpl->setPageScaleFactorLimits(1, 1); |
- |
+ disableViewportEmulation(); |
m_client->disableDeviceEmulation(); |
} |
} else { |
@@ -335,17 +331,38 @@ void WebDevToolsAgentImpl::overrideDeviceMetrics(int width, int height, float de |
m_webViewImpl->setBackgroundColorOverride(Color::darkGray); |
m_isOverlayScrollbarsEnabled = RuntimeEnabledFeatures::overlayScrollbarsEnabled(); |
RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(true); |
- |
- m_isCSSViewportEnabled = RuntimeEnabledFeatures::cssViewportEnabled(); |
- RuntimeEnabledFeatures::setCSSViewportEnabled(true); |
- m_webViewImpl->settings()->setViewportEnabled(true); |
- m_webViewImpl->setIgnoreViewportTagScaleLimits(true); |
- m_webViewImpl->setPageScaleFactorLimits(-1, -1); |
} |
+ if (emulateViewport) |
+ enableViewportEmulation(); |
+ else |
+ disableViewportEmulation(); |
m_client->enableDeviceEmulation(IntSize(width, height), IntRect(0, 0, width, height), deviceScaleFactor, fitWindow); |
} |
} |
+void WebDevToolsAgentImpl::enableViewportEmulation() |
+{ |
+ if (m_emulateViewportEnabled) |
+ return; |
+ m_emulateViewportEnabled = true; |
+ m_originalViewportEnabled = RuntimeEnabledFeatures::cssViewportEnabled(); |
+ RuntimeEnabledFeatures::setCSSViewportEnabled(true); |
+ m_webViewImpl->settings()->setViewportEnabled(true); |
+ m_webViewImpl->setIgnoreViewportTagScaleLimits(true); |
+ m_webViewImpl->setPageScaleFactorLimits(-1, -1); |
+} |
+ |
+void WebDevToolsAgentImpl::disableViewportEmulation() |
+{ |
+ if (!m_emulateViewportEnabled) |
+ return; |
+ RuntimeEnabledFeatures::setCSSViewportEnabled(m_originalViewportEnabled); |
+ m_webViewImpl->settings()->setViewportEnabled(false); |
+ m_webViewImpl->setIgnoreViewportTagScaleLimits(false); |
+ m_webViewImpl->setPageScaleFactorLimits(1, 1); |
+ m_emulateViewportEnabled = false; |
+} |
+ |
void WebDevToolsAgentImpl::getAllocatedObjects(HashSet<const void*>& set) |
{ |
class CountingVisitor : public WebDevToolsAgentClient::AllocatedObjectVisitor { |