Title: [259278] trunk/Source/WebCore
Revision
259278
Author
simon.fra...@apple.com
Date
2020-03-30 20:35:24 -0700 (Mon, 30 Mar 2020)

Log Message

ScrollLatchingState should use WeakPtr<Element>
https://bugs.webkit.org/show_bug.cgi?id=209714

Reviewed by Darin Adler.

ScrollLatchingState shouldn't affect element lifetimes. Change it to use WeakPtr instead
of RefPtr<>.

* page/EventHandler.cpp:
(WebCore::EventHandler::defaultWheelEventHandler):
* page/mac/EventHandlerMac.mm:
(WebCore::EventHandler::platformPrepareForWheelEvents):
* page/scrolling/ScrollLatchingState.cpp:
(WebCore::ScrollLatchingState::setWheelEventElement):
(WebCore::ScrollLatchingState::setPreviousWheelScrolledElement):
(WebCore::ScrollLatchingState::setScrollableContainer):
* page/scrolling/ScrollLatchingState.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (259277 => 259278)


--- trunk/Source/WebCore/ChangeLog	2020-03-31 03:32:05 UTC (rev 259277)
+++ trunk/Source/WebCore/ChangeLog	2020-03-31 03:35:24 UTC (rev 259278)
@@ -1,3 +1,23 @@
+2020-03-28  Simon Fraser  <simon.fra...@apple.com>
+
+        ScrollLatchingState should use WeakPtr<Element>
+        https://bugs.webkit.org/show_bug.cgi?id=209714
+
+        Reviewed by Darin Adler.
+
+        ScrollLatchingState shouldn't affect element lifetimes. Change it to use WeakPtr instead
+        of RefPtr<>.
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::defaultWheelEventHandler):
+        * page/mac/EventHandlerMac.mm:
+        (WebCore::EventHandler::platformPrepareForWheelEvents):
+        * page/scrolling/ScrollLatchingState.cpp:
+        (WebCore::ScrollLatchingState::setWheelEventElement):
+        (WebCore::ScrollLatchingState::setPreviousWheelScrolledElement):
+        (WebCore::ScrollLatchingState::setScrollableContainer):
+        * page/scrolling/ScrollLatchingState.h:
+
 2020-03-30  Megan Gardner  <megan_gard...@apple.com>
 
         Update to new Data Detectors SPI

Modified: trunk/Source/WebCore/page/EventHandler.cpp (259277 => 259278)


--- trunk/Source/WebCore/page/EventHandler.cpp	2020-03-31 03:32:05 UTC (rev 259277)
+++ trunk/Source/WebCore/page/EventHandler.cpp	2020-03-31 03:35:24 UTC (rev 259278)
@@ -2917,16 +2917,15 @@
         filteredPlatformDelta.setHeight(platformWheelEvent->deltaY());
     }
 
+    RefPtr<Element> stopElement;
 #if ENABLE(WHEEL_EVENT_LATCHING)
     ScrollLatchingState* latchedState = m_frame.page() ? m_frame.page()->latchingState() : nullptr;
-    RefPtr<Element> stopElement = latchedState ? latchedState->previousWheelScrolledElement() : nullptr;
+    stopElement = latchedState ? latchedState->previousWheelScrolledElement() : nullptr;
 
     if (m_frame.page() && m_frame.page()->wheelEventDeltaFilter()->isFilteringDeltas()) {
         filteredPlatformDelta = m_frame.page()->wheelEventDeltaFilter()->filteredDelta();
         filteredVelocity = m_frame.page()->wheelEventDeltaFilter()->filteredVelocity();
     }
-#else
-    RefPtr<Element> stopElement;
 #endif
 
     if (handleWheelEventInAppropriateEnclosingBox(startNode, wheelEvent, stopElement, filteredPlatformDelta, filteredVelocity))
@@ -2934,7 +2933,7 @@
 
 #if ENABLE(WHEEL_EVENT_LATCHING)
     if (latchedState && !latchedState->wheelEventElement())
-        latchedState->setPreviousWheelScrolledElement(WTFMove(stopElement));
+        latchedState->setPreviousWheelScrolledElement(stopElement.get());
 #endif
 }
 

Modified: trunk/Source/WebCore/page/mac/EventHandlerMac.mm (259277 => 259278)


--- trunk/Source/WebCore/page/mac/EventHandlerMac.mm	2020-03-31 03:32:05 UTC (rev 259277)
+++ trunk/Source/WebCore/page/mac/EventHandlerMac.mm	2020-03-31 03:35:24 UTC (rev 259278)
@@ -984,7 +984,7 @@
                 latchingState.setStartedGestureAtScrollLimit(false);
                 latchingState.setWheelEventElement(wheelEventTarget.get());
                 latchingState.setFrame(&m_frame);
-                latchingState.setScrollableContainer(scrollableContainer.copyRef());
+                latchingState.setScrollableContainer(scrollableContainer.get());
                 latchingState.setWidgetIsLatched(result.isOverWidget());
                 page->pushNewLatchingState(WTFMove(latchingState));
 

Modified: trunk/Source/WebCore/page/scrolling/ScrollLatchingState.cpp (259277 => 259278)


--- trunk/Source/WebCore/page/scrolling/ScrollLatchingState.cpp	2020-03-31 03:32:05 UTC (rev 259277)
+++ trunk/Source/WebCore/page/scrolling/ScrollLatchingState.cpp	2020-03-31 03:35:24 UTC (rev 259278)
@@ -44,9 +44,9 @@
     m_previousWheelScrolledElement = nullptr;
 }
 
-void ScrollLatchingState::setWheelEventElement(RefPtr<Element>&& element)
+void ScrollLatchingState::setWheelEventElement(Element* element)
 {
-    m_wheelEventElement = WTFMove(element);
+    m_wheelEventElement = makeWeakPtr(element);
 }
 
 void ScrollLatchingState::setWidgetIsLatched(bool isOverWidget)
@@ -54,14 +54,14 @@
     m_widgetIsLatched = isOverWidget;
 }
 
-void ScrollLatchingState::setPreviousWheelScrolledElement(RefPtr<Element>&& element)
+void ScrollLatchingState::setPreviousWheelScrolledElement(Element* element)
 {
-    m_previousWheelScrolledElement = WTFMove(element);
+    m_previousWheelScrolledElement = makeWeakPtr(element);
 }
 
-void ScrollLatchingState::setScrollableContainer(RefPtr<ContainerNode>&& container)
+void ScrollLatchingState::setScrollableContainer(ContainerNode* container)
 {
-    m_scrollableContainer = WTFMove(container);
+    m_scrollableContainer = makeWeakPtr(container);
 }
 
 TextStream& operator<<(TextStream& ts, const ScrollLatchingState& state)

Modified: trunk/Source/WebCore/page/scrolling/ScrollLatchingState.h (259277 => 259278)


--- trunk/Source/WebCore/page/scrolling/ScrollLatchingState.h	2020-03-31 03:32:05 UTC (rev 259277)
+++ trunk/Source/WebCore/page/scrolling/ScrollLatchingState.h	2020-03-31 03:35:24 UTC (rev 259278)
@@ -25,7 +25,7 @@
 
 #pragma once
 
-#include <wtf/RefPtr.h>
+#include <wtf/WeakPtr.h>
 
 namespace WTF {
 class TextStream;
@@ -45,7 +45,8 @@
     void clear();
 
     Element* wheelEventElement() const { return m_wheelEventElement.get(); }
-    void setWheelEventElement(RefPtr<Element>&&);
+    void setWheelEventElement(Element*);
+
     Frame* frame() const { return m_frame; }
     void setFrame(Frame* frame) { m_frame = frame; }
 
@@ -53,17 +54,18 @@
     void setWidgetIsLatched(bool isOverWidget);
 
     Element* previousWheelScrolledElement() const { return m_previousWheelScrolledElement.get(); }
-    void setPreviousWheelScrolledElement(RefPtr<Element>&&);
+    void setPreviousWheelScrolledElement(Element*);
     
     ContainerNode* scrollableContainer() const { return m_scrollableContainer.get(); }
-    void setScrollableContainer(RefPtr<ContainerNode>&&);
+    void setScrollableContainer(ContainerNode*);
+
     bool startedGestureAtScrollLimit() const { return m_startedGestureAtScrollLimit; }
     void setStartedGestureAtScrollLimit(bool startedAtLimit) { m_startedGestureAtScrollLimit = startedAtLimit; }
 
 private:
-    RefPtr<Element> m_wheelEventElement;
-    RefPtr<Element> m_previousWheelScrolledElement;
-    RefPtr<ContainerNode> m_scrollableContainer;
+    WeakPtr<Element> m_wheelEventElement;
+    WeakPtr<Element> m_previousWheelScrolledElement;
+    WeakPtr<ContainerNode> m_scrollableContainer;
 
     Frame* m_frame { nullptr };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to