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