Changeset 242675 in webkit
- Timestamp:
- Mar 9, 2019, 4:09:05 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 6 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/events/touch/ios/content-observation/visibility-change-after-touch-end-expected.txt (added)
-
LayoutTests/fast/events/touch/ios/content-observation/visibility-change-after-touch-end.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/page/ios/ContentChangeObserver.cpp (modified) (2 diffs)
-
Source/WebCore/page/ios/ContentChangeObserver.h (modified) (5 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r242665 r242675 1 2019-03-09 Zalan Bujtas <zalan@apple.com> 2 3 [ContentChangeObserver] Start observing for content change between touchEnd and mouseMoved start 4 https://bugs.webkit.org/show_bug.cgi?id=195510 5 <rdar://problem/48735695> 6 7 Reviewed by Simon Fraser. 8 9 * fast/events/touch/ios/content-observation/visibility-change-after-touch-end-expected.txt: Added. 10 * fast/events/touch/ios/content-observation/visibility-change-after-touch-end.html: Added. 11 1 12 2019-03-08 Ryan Haddad <ryanhaddad@apple.com> 2 13 -
trunk/Source/WebCore/ChangeLog
r242670 r242675 1 2019-03-09 Zalan Bujtas <zalan@apple.com> 2 3 [ContentChangeObserver] Start observing for content change between touchEnd and mouseMoved start 4 https://bugs.webkit.org/show_bug.cgi?id=195510 5 <rdar://problem/48735695> 6 7 Reviewed by Simon Fraser. 8 9 This patch covers the observation of async changes triggered by touchStart/touchEnd (animations, timers, style recalcs). 10 11 Test: fast/events/touch/ios/content-observation/visibility-change-after-touch-end.html 12 13 * page/ios/ContentChangeObserver.cpp: 14 (WebCore::ContentChangeObserver::didCancelTouchEvent): 15 (WebCore::ContentChangeObserver::adjustObservedState): 16 * page/ios/ContentChangeObserver.h: 17 (WebCore::ContentChangeObserver::setIsInBetweenTouchEndAndMouseMoved): 18 (WebCore::ContentChangeObserver::isInBetweenTouchEndAndMouseMoved const): 19 (WebCore::ContentChangeObserver::isObservingContentChanges const): 20 1 21 2019-03-08 Simon Fraser <simon.fraser@apple.com> 2 22 -
trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp
r242661 r242675 89 89 } 90 90 91 void ContentChangeObserver::willNotProceedWithClick() 92 { 93 LOG(ContentObservation, "willNotProceedWithClick: click will not happen."); 94 setIsBetweenTouchEndAndMouseMoved(false); 95 // FIXME: Add support for preventDefault() and long press. 96 } 97 91 98 void ContentChangeObserver::domTimerExecuteDidStart(const DOMTimer& timer) 92 99 { … … 248 255 setHasNoChangeState(); 249 256 clearObservedDOMTimers(); 250 m_isMouseMovedPrecededByTouch = true;251 257 setShouldObserveDOMTimerScheduling(true); 252 258 break; 253 259 case Event::EndedTouchStartEventDispatching: 254 260 setShouldObserveDOMTimerScheduling(false); 261 setIsBetweenTouchEndAndMouseMoved(true); 255 262 break; 256 263 case Event::StartedMouseMovedEventDispatching: 257 264 ASSERT(!m_document.hasPendingStyleRecalc()); 258 if (! m_isMouseMovedPrecededByTouch) {265 if (!isBetweenTouchEndAndMouseMoved()) { 259 266 setHasNoChangeState(); 260 267 clearObservedDOMTimers(); 261 268 } 269 setIsBetweenTouchEndAndMouseMoved(false); 262 270 setShouldObserveDOMTimerScheduling(true); 263 m_isMouseMovedPrecededByTouch = false;264 271 break; 265 272 case Event::EndedMouseMovedEventDispatching: -
trunk/Source/WebCore/page/ios/ContentChangeObserver.h
r242661 r242675 50 50 void didInstallDOMTimer(const DOMTimer&, Seconds timeout, bool singleShot); 51 51 void didRemoveDOMTimer(const DOMTimer&); 52 WEBCORE_EXPORT void willNotProceedWithClick(); 52 53 void didSuspendActiveDOMObjects(); 53 54 void willDetachPage(); … … 124 125 bool isWaitingForStyleRecalc() const { return m_isWaitingForStyleRecalc; } 125 126 126 bool isObservingContentChanges() const { return m_mouseMovedEventIsBeingDispatched || m_touchEventIsBeingDispatched || m_observedDomTimerIsBeingExecuted || m_isInObservedStyleRecalc || m_contentObservationTimer.isActive(); }127 bool isObservingContentChanges() const; 127 128 128 129 void cancelPendingActivities(); … … 135 136 bool hasObservedDOMTimer() const { return !m_DOMTimerList.isEmpty(); } 136 137 bool hasDeterminateState() const; 138 139 void setIsBetweenTouchEndAndMouseMoved(bool isBetween) { m_isBetweenTouchEndAndMouseMoved = isBetween; } 140 bool isBetweenTouchEndAndMouseMoved() const { return m_isBetweenTouchEndAndMouseMoved; } 137 141 138 142 bool hasPendingActivity() const { return hasObservedDOMTimer() || m_document.hasPendingStyleRecalc() || isObservationTimeWindowActive(); } … … 169 173 bool m_isObservingDOMTimerScheduling { false }; 170 174 bool m_observedDomTimerIsBeingExecuted { false }; 171 bool m_isMouseMovedPrecededByTouch { false };172 175 bool m_mouseMovedEventIsBeingDispatched { false }; 176 bool m_isBetweenTouchEndAndMouseMoved { false }; 173 177 }; 174 178 … … 189 193 } 190 194 191 } 195 inline bool ContentChangeObserver::isObservingContentChanges() const 196 { 197 return m_touchEventIsBeingDispatched 198 || m_isBetweenTouchEndAndMouseMoved 199 || m_mouseMovedEventIsBeingDispatched 200 || m_observedDomTimerIsBeingExecuted 201 || m_isInObservedStyleRecalc 202 || m_contentObservationTimer.isActive(); 203 } 204 } 205 192 206 #endif -
trunk/Source/WebKit/ChangeLog
r242666 r242675 1 2019-03-09 Zalan Bujtas <zalan@apple.com> 2 3 [ContentChangeObserver] Start observing for content change between touchEnd and mouseMoved start 4 https://bugs.webkit.org/show_bug.cgi?id=195510 5 <rdar://problem/48735695> 6 7 Reviewed by Simon Fraser. 8 9 * WebProcess/WebPage/ios/WebPageIOS.mm: 10 (WebKit::WebPage::cancelPotentialTapInFrame): 11 1 12 2019-03-08 Chris Dumez <cdumez@apple.com> 2 13 -
trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
r242628 r242675 866 866 { 867 867 if (m_potentialTapNode) { 868 Frame* potentialTapFrame = m_potentialTapNode->document().frame(); 868 m_potentialTapNode->document().contentChangeObserver().willNotProceedWithClick(); 869 auto* potentialTapFrame = m_potentialTapNode->document().frame(); 869 870 if (potentialTapFrame && !potentialTapFrame->tree().isDescendantOf(frame.coreFrame())) 870 871 return;
Note:
See TracChangeset
for help on using the changeset viewer.