Index: third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp |
diff --git a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp |
index 84744848cfe370946fd1b638d8113ee47e8be747..3ae5cce9ffc833090085a7affc06387863f5e0c3 100644 |
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp |
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp |
@@ -70,6 +70,8 @@ using blink::WebRect; |
using blink::WebScrollbarLayer; |
using blink::WebVector; |
+namespace blink { |
+ |
namespace { |
WebLayer* toWebLayer(blink::GraphicsLayer* layer) |
@@ -77,9 +79,17 @@ WebLayer* toWebLayer(blink::GraphicsLayer* layer) |
return layer ? layer->platformLayer() : nullptr; |
} |
-} // namespace |
+WebEventListenerProperties webEventListenerProperties(EventHandlerRegistry::EventHandlerClass blockingClass, EventHandlerRegistry::EventHandlerClass passiveClass, Page* page) |
+{ |
+ WebEventListenerProperties result = WebEventListenerProperties::Nothing; |
+ if (page->frameHost().eventHandlerRegistry().hasEventHandlers(blockingClass)) |
+ result |= WebEventListenerProperties::Blocking; |
+ if (page->frameHost().eventHandlerRegistry().hasEventHandlers(passiveClass)) |
+ result |= WebEventListenerProperties::Passive; |
+ return result; |
+} |
-namespace blink { |
+} // namespace |
PassOwnPtrWillBeRawPtr<ScrollingCoordinator> ScrollingCoordinator::create(Page* page) |
{ |
@@ -680,7 +690,19 @@ void ScrollingCoordinator::willDestroyLayer(PaintLayer* layer) |
m_layersWithTouchRects.remove(layer); |
} |
-void ScrollingCoordinator::updateHaveWheelEventHandlers() |
+void ScrollingCoordinator::updateTouchEventListenerProperties() |
+{ |
+ ASSERT(isMainThread()); |
+ ASSERT(m_page); |
+ if (!m_page->mainFrame()->isLocalFrame() || !m_page->deprecatedLocalMainFrame()->view()) |
+ return; |
+ |
+ if (WebLayer* scrollLayer = toWebLayer(m_page->deprecatedLocalMainFrame()->view()->layerForScrolling())) { |
aelias_OOO_until_Jul13
2016/01/26 19:16:33
Hmm, on the Blink side we only ever set it on the
dtapuska
2016/01/29 21:46:41
Done.
|
+ scrollLayer->setTouchEventListenerProperties(webEventListenerProperties(EventHandlerRegistry::TouchEvent, EventHandlerRegistry::TouchEventPassive, m_page)); |
+ } |
+} |
+ |
+void ScrollingCoordinator::updateWheelEventListenerProperties() |
{ |
ASSERT(isMainThread()); |
ASSERT(m_page); |
@@ -688,8 +710,7 @@ void ScrollingCoordinator::updateHaveWheelEventHandlers() |
return; |
if (WebLayer* scrollLayer = toWebLayer(m_page->deprecatedLocalMainFrame()->view()->layerForScrolling())) { |
- bool haveHandlers = m_page->frameHost().eventHandlerRegistry().hasEventHandlers(EventHandlerRegistry::WheelEvent); |
- scrollLayer->setHaveWheelEventHandlers(haveHandlers); |
+ scrollLayer->setWheelEventListenerProperties(webEventListenerProperties(EventHandlerRegistry::WheelEvent, EventHandlerRegistry::WheelEventPassive, m_page)); |
} |
} |
@@ -960,7 +981,8 @@ void ScrollingCoordinator::frameViewRootLayerDidChange(FrameView* frameView) |
return; |
notifyGeometryChanged(); |
- updateHaveWheelEventHandlers(); |
+ updateTouchEventListenerProperties(); |
+ updateWheelEventListenerProperties(); |
updateHaveScrollEventHandlers(); |
} |