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 823e27824fea526391aa5ac8d8fb2e7015c068c3..a545b7dea41aa6ce14b93a108bd80aa92655d2fa 100644 |
--- a/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp |
+++ b/third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp |
@@ -69,6 +69,8 @@ using blink::WebRect; |
using blink::WebScrollbarLayer; |
using blink::WebVector; |
+namespace blink { |
+ |
namespace { |
WebLayer* toWebLayer(blink::GraphicsLayer* layer) |
@@ -76,9 +78,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) |
{ |
@@ -679,7 +689,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())) { |
+ scrollLayer->setTouchEventListenerProperties(webEventListenerProperties(EventHandlerRegistry::TouchEvent, EventHandlerRegistry::TouchEventPassive, m_page)); |
+ } |
+} |
+ |
+void ScrollingCoordinator::updateWheelEventListenerProperties() |
{ |
ASSERT(isMainThread()); |
ASSERT(m_page); |
@@ -687,8 +709,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)); |
} |
} |
@@ -964,7 +985,8 @@ void ScrollingCoordinator::frameViewRootLayerDidChange(FrameView* frameView) |
return; |
notifyLayoutUpdated(); |
- updateHaveWheelEventHandlers(); |
+ updateTouchEventListenerProperties(); |
+ updateWheelEventListenerProperties(); |
updateHaveScrollEventHandlers(); |
} |