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

Unified Diff: Source/WebKit/chromium/src/WebViewImpl.cpp

Issue 16799005: Insert pinch zoom virtual viewport layers to graphics layer tree. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add new viewport layers above overflowControlsHost. Created 7 years, 6 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/WebKit/chromium/src/WebViewImpl.cpp
diff --git a/Source/WebKit/chromium/src/WebViewImpl.cpp b/Source/WebKit/chromium/src/WebViewImpl.cpp
index 8792a6f93b56771340581b347dc000a3592e0af4..c06dc5eb065e23798ca1021a9eebd7365dffbb3d 100644
--- a/Source/WebKit/chromium/src/WebViewImpl.cpp
+++ b/Source/WebKit/chromium/src/WebViewImpl.cpp
@@ -57,6 +57,7 @@
#include "HTMLNames.h"
#include "LinkHighlight.h"
#include "PageWidgetDelegate.h"
+#include "PinchViewports.h"
#include "PopupContainer.h"
#include "PrerendererClientImpl.h"
#include "SpeechInputClientImpl.h"
@@ -1611,8 +1612,11 @@ void WebViewImpl::resize(const WebSize& newSize)
agentPrivate->webViewResized(newSize);
if (!agentPrivate || !agentPrivate->metricsOverridden()) {
WebFrameImpl* webFrame = mainFrameImpl();
- if (webFrame->frameView())
+ if (webFrame->frameView()) {
webFrame->frameView()->resize(m_size);
+ if (m_pinchViewports)
+ m_pinchViewports->setViewportSize(FloatSize(m_size.width, m_size.height));
+ }
}
if (settings()->viewportEnabled()) {
@@ -3806,11 +3810,28 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer)
{
suppressInvalidations(true);
- m_rootGraphicsLayer = layer;
- m_rootLayer = layer ? layer->platformLayer() : 0;
+ if (page()->settings()->pinchVirtualViewportEnabled() && !m_pinchViewports)
+ m_pinchViewports = PinchViewports::create(this);
+
+ if (m_pinchViewports) {
+ m_pinchViewports->setOverflowControlsHostLayer(layer);
+ if (layer) {
+ m_rootGraphicsLayer = m_pinchViewports->rootGraphicsLayer();
+ m_rootLayer = m_pinchViewports->rootGraphicsLayer()->platformLayer();
+ } else {
+ m_rootGraphicsLayer = 0;
+ m_rootLayer = 0;
+ }
+ } else {
+ m_rootGraphicsLayer = layer;
+ m_rootLayer = layer ? layer->platformLayer() : 0;
+ }
+
setIsAcceleratedCompositingActive(layer);
+ // FIXME: We also need to tell the layer tree about the pinchViewport layers
+ // in a follow-on CL.
if (m_layerTreeView) {
if (m_rootLayer)
m_layerTreeView->setRootLayer(*m_rootLayer);
@@ -3845,6 +3866,13 @@ WebCore::GraphicsLayerFactory* WebViewImpl::graphicsLayerFactory() const
return m_graphicsLayerFactory.get();
}
+WebCore::RenderLayerCompositor* WebViewImpl::compositor() const
+{
+ Document* document = page()->mainFrame()->document();
enne (OOO) 2013/06/13 22:45:07 Can any of these things be NULL?
wjmaclean 2013/06/14 15:54:16 Yes, we should put in checks. I'm not sure what th
+ RenderView* renderView = document->renderView();
+ return renderView->compositor();
+}
+
void WebViewImpl::registerForAnimations(WebLayer* layer)
{
if (m_layerTreeView)

Powered by Google App Engine
This is Rietveld 408576698