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

Unified Diff: Source/web/WebViewImpl.cpp

Issue 23187005: [DevTools] Use device metrics emulation implemented in content. (Closed) Base URL: svn://svn.chromium.org/blink/trunk/
Patch Set: Reupload Created 7 years, 3 months 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
Index: Source/web/WebViewImpl.cpp
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp
index 9b391cec8c9f0540418c969ed2b2ad10b806c74f..fe61b41580036964ec1c7c469faa1c898418d8f4 100644
--- a/Source/web/WebViewImpl.cpp
+++ b/Source/web/WebViewImpl.cpp
@@ -399,6 +399,8 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
, m_contextMenuAllowed(false)
, m_doingDragAndDrop(false)
, m_ignoreInputEvents(false)
+ , m_emulatedDeviceScaleFactor(0)
+ , m_rootLayerScale(0)
aelias_OOO_until_Jul13 2013/10/01 08:08:51 Let's make rootLayerScale default to 1 instead.
dgozman 2013/10/01 15:26:34 Done.
, m_suppressNextKeypressEvent(false)
, m_imeAcceptEvents(true)
, m_operationsAllowed(WebDragOperationNone)
@@ -1712,13 +1714,11 @@ void WebViewImpl::resize(const WebSize& newSize)
WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate();
if (agentPrivate)
agentPrivate->webViewResized(newSize);
- if (!agentPrivate || !agentPrivate->metricsOverridden()) {
- WebFrameImpl* webFrame = mainFrameImpl();
- if (webFrame->frameView()) {
- webFrame->frameView()->resize(m_size);
- if (m_pinchViewports)
- m_pinchViewports->setViewportSize(m_size);
- }
+ WebFrameImpl* webFrame = mainFrameImpl();
+ if (webFrame->frameView()) {
+ webFrame->frameView()->resize(m_size);
+ if (m_pinchViewports)
+ m_pinchViewports->setViewportSize(m_size);
}
if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) {
@@ -2912,7 +2912,7 @@ void WebViewImpl::setDeviceScaleFactor(float scaleFactor)
page()->setDeviceScaleFactor(scaleFactor);
if (m_layerTreeView)
- m_layerTreeView->setDeviceScaleFactor(scaleFactor);
+ updateLayerTreeDeviceScaleFactor();
}
bool WebViewImpl::isFixedLayoutModeEnabled() const
@@ -3762,6 +3762,17 @@ void WebViewImpl::setIgnoreInputEvents(bool newValue)
m_ignoreInputEvents = newValue;
}
+void WebViewImpl::setDeviceEmulationParameters(bool enabled, float deviceScaleFactor, float rootLayerScale)
aelias_OOO_until_Jul13 2013/10/01 08:08:51 The other args are ignored when enabled = false wh
+{
+ m_emulatedDeviceScaleFactor = enabled ? deviceScaleFactor : 0;
+ m_rootLayerScale = enabled ? rootLayerScale : 0;
+ if (mainFrameImpl())
+ mainFrameImpl()->setInputEventsScaleFactorForEmulation(enabled ? rootLayerScale : 1);
+ if (page() && m_layerTreeView)
+ updateLayerTreeDeviceScaleFactor();
+ updateRootLayerTransform();
+}
+
void WebViewImpl::addPageOverlay(WebPageOverlay* overlay, int zOrder)
{
if (!m_pageOverlays)
@@ -3872,6 +3883,8 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer)
setIsAcceleratedCompositingActive(layer);
+ updateRootLayerTransform();
+
if (m_layerTreeView) {
if (m_rootLayer) {
m_layerTreeView->setRootLayer(*m_rootLayer);
@@ -3994,7 +4007,7 @@ void WebViewImpl::setIsAcceleratedCompositingActive(bool active)
bool visible = page()->visibilityState() == PageVisibilityStateVisible;
m_layerTreeView->setVisible(visible);
- m_layerTreeView->setDeviceScaleFactor(page()->deviceScaleFactor());
+ updateLayerTreeDeviceScaleFactor();
m_layerTreeView->setPageScaleFactorAndLimits(pageScaleFactor(), minimumPageScaleFactor(), maximumPageScaleFactor());
m_layerTreeView->setBackgroundColor(backgroundColor());
m_layerTreeView->setHasTransparentBackground(isTransparent());
@@ -4079,6 +4092,25 @@ void WebViewImpl::updateLayerTreeViewport()
m_layerTreeView->setPageScaleFactorAndLimits(pageScaleFactor(), minimumPageScaleFactor(), maximumPageScaleFactor());
}
+void WebViewImpl::updateLayerTreeDeviceScaleFactor()
+{
+ ASSERT(page());
+ ASSERT(m_layerTreeView);
+
+ float deviceScaleFactor = m_emulatedDeviceScaleFactor ? m_emulatedDeviceScaleFactor : page()->deviceScaleFactor();
+ m_layerTreeView->setDeviceScaleFactor(deviceScaleFactor);
+}
+
+void WebViewImpl::updateRootLayerTransform()
+{
+ if (m_rootGraphicsLayer) {
+ WebCore::TransformationMatrix transform;
+ if (m_rootLayerScale)
+ transform = transform.scale(m_rootLayerScale);
+ m_rootGraphicsLayer->setChildrenTransform(transform);
+ }
+}
+
void WebViewImpl::selectAutofillSuggestionAtIndex(unsigned listIndex)
{
if (m_autofillPopupClient && listIndex < m_autofillPopupClient->getSuggestionsCount())

Powered by Google App Engine
This is Rietveld 408576698