Chromium Code Reviews| 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(); |
| } |