summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/Source/web/PageOverlay.cpp
diff options
context:
space:
mode:
authorrbyers@chromium.org <rbyers@chromium.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538>2013-08-14 02:40:03 +0000
committerrbyers@chromium.org <rbyers@chromium.org@bbb929c8-8fbe-4397-9dbb-9b2b20218538>2013-08-14 02:40:03 +0000
commiteba009db08615f3c53dd4500857f8bbeb0dbc41d (patch)
treefa56413164a0056c2655aea7f88bdefed75ec6f7 /third_party/WebKit/Source/web/PageOverlay.cpp
parent9dd0b9198bd961d06b3ec8962e9b60dad7bf4ff1 (diff)
downloadchromium_src-eba009db08615f3c53dd4500857f8bbeb0dbc41d.zip
chromium_src-eba009db08615f3c53dd4500857f8bbeb0dbc41d.tar.gz
chromium_src-eba009db08615f3c53dd4500857f8bbeb0dbc41d.tar.bz2
Disable touch hit testing on overlay layers
The compositor hit testing doesn't know how to deal with layers that may be transparent to events, so for now we need to assume any touch on an overlay needs to be handled on the main thread. This is exactly analogous to an earlier issue http://crbug.com/173547 where overlay layers needed to be marked as non-fast-scrolling. BUG=178281 Review URL: https://chromiumcodereview.appspot.com/22674007 git-svn-id: svn://svn.chromium.org/blink/trunk@156067 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Diffstat (limited to 'third_party/WebKit/Source/web/PageOverlay.cpp')
-rw-r--r--third_party/WebKit/Source/web/PageOverlay.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/third_party/WebKit/Source/web/PageOverlay.cpp b/third_party/WebKit/Source/web/PageOverlay.cpp
index c0e7911..9166835 100644
--- a/third_party/WebKit/Source/web/PageOverlay.cpp
+++ b/third_party/WebKit/Source/web/PageOverlay.cpp
@@ -110,6 +110,15 @@ void PageOverlay::update()
m_layer = GraphicsLayer::create(m_viewImpl->graphicsLayerFactory(), m_layerClient.get());
m_layer->setName("WebViewImpl page overlay content");
m_layer->setDrawsContent(true);
+
+ // Compositor hit-testing does not know how to deal with layers that may be
+ // transparent to events (see http://crbug.com/269598). So require
+ // scrolling and touches on this layer to go to the main thread.
+ WebLayer* platformLayer = m_layer->platformLayer();
+ platformLayer->setShouldScrollOnMainThread(true);
+ WebVector<WebRect> webRects(static_cast<size_t>(1));
+ webRects[0] = WebRect(0, 0, INT_MAX, INT_MAX);
+ platformLayer->setTouchEventHandlerRegion(webRects);
}
FloatSize size(m_viewImpl->size());
@@ -122,9 +131,6 @@ void PageOverlay::update()
m_viewImpl->setOverlayLayer(m_layer.get());
m_layer->setNeedsDisplay();
-
- WebLayer* platformLayer = m_layer->platformLayer();
- platformLayer->setShouldScrollOnMainThread(true);
}
void PageOverlay::paintWebFrame(GraphicsContext& gc)