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

Unified Diff: third_party/WebKit/Source/core/page/scrolling/ScrollingCoordinator.cpp

Issue 1577263004: Communicate whether passive event listeners exist to cc. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_wheel_passive_listeners
Patch Set: Rebase Created 4 years, 11 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: 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();
}

Powered by Google App Engine
This is Rietveld 408576698