Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1934)

Unified Diff: Source/web/WebDevToolsAgentImpl.cpp

Issue 45363004: DevTools: explicitly control support for viewport meta tag so that desktop emulation was possible (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Review comments addressed. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/web/WebDevToolsAgentImpl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 {
« no previous file with comments | « Source/web/WebDevToolsAgentImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698