Changeset 247200 in webkit
- Timestamp:
- Jul 7, 2019 7:52:17 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r247193 r247200 1 2019-07-07 Zalan Bujtas <zalan@apple.com> 2 3 [ContentChangeObserver] Difficult to control videos on iqiyi.com as the actions are mouse hover 4 https://bugs.webkit.org/show_bug.cgi?id=199542 5 <rdar://problem/51886813> 6 7 Reviewed by Simon Fraser. 8 9 * fast/events/touch/ios/content-observation/tap-on-1px-height-content-expected.txt: Added. 10 * fast/events/touch/ios/content-observation/tap-on-1px-height-content.html: Added. 11 * fast/events/touch/ios/content-observation/tap-on-1px-width-content-expected.txt: Added. 12 * fast/events/touch/ios/content-observation/tap-on-1px-width-content.html: Added. 13 1 14 2019-07-06 Cathie Chen <cathiechen@igalia.com> 2 15 -
trunk/Source/WebCore/ChangeLog
r247199 r247200 1 2019-07-07 Zalan Bujtas <zalan@apple.com> 2 3 [ContentChangeObserver] Difficult to control videos on iqiyi.com as the actions are mouse hover 4 https://bugs.webkit.org/show_bug.cgi?id=199542 5 <rdar://problem/51886813> 6 7 Reviewed by Simon Fraser. 8 9 Decouple isVisuallyHidden and isConsideredVisible. Just because an element is not visually hidden (1px wide content) 10 it is not necessarily qualified to be visible in the context of hover heuristic (e.g. iqiyi.com brings up a 1px wide 11 clickable element when hovering over the scrubber. This element is clearly not designed to be actionable.) 12 13 Tests: fast/events/touch/ios/content-observation/tap-on-1px-height-content.html 14 fast/events/touch/ios/content-observation/tap-on-1px-width-content.html 15 16 * dom/Node.cpp: 17 (WebCore::Node::defaultEventHandler): 18 * page/ios/ContentChangeObserver.cpp: 19 (WebCore::ContentChangeObserver::isVisuallyHidden): 20 (WebCore::ContentChangeObserver::isConsideredVisible): 21 (WebCore::ContentChangeObserver::didAddTransition): 22 (WebCore::ContentChangeObserver::didFinishTransition): 23 (WebCore::ContentChangeObserver::willDestroyRenderer): 24 (WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope): 25 (WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope): 26 (WebCore::ContentChangeObserver::isConsideredHidden): Deleted. 27 * page/ios/ContentChangeObserver.h: 28 1 29 2019-07-07 Zalan Bujtas <zalan@apple.com> 2 30 -
trunk/Source/WebCore/dom/Node.cpp
r247015 r247200 2459 2459 if (is<Element>(*this) && eventType == eventNames().touchstartEvent) { 2460 2460 auto& contentChangeObserver = document().contentChangeObserver(); 2461 if (ContentChangeObserver::is ConsideredHidden(*this))2461 if (ContentChangeObserver::isVisuallyHidden(*this)) 2462 2462 contentChangeObserver.setHiddenTouchTarget(downcast<Element>(*this)); 2463 2463 else -
trunk/Source/WebCore/page/ios/ContentChangeObserver.cpp
r247147 r247200 44 44 static const Seconds maximumDelayForTransitions { 300_ms }; 45 45 46 bool ContentChangeObserver::is ConsideredHidden(const Node& node)46 bool ContentChangeObserver::isVisuallyHidden(const Node& node) 47 47 { 48 48 if (!node.renderStyle()) … … 90 90 } 91 91 return false; 92 } 93 94 bool ContentChangeObserver::isConsideredVisible(const Node& node) 95 { 96 if (isVisuallyHidden(node)) 97 return false; 98 99 auto& style = *node.renderStyle(); 100 auto width = style.logicalWidth(); 101 // 1px width or height content is not considered visible. 102 if (width.isFixed() && width.value() <= 1) 103 return false; 104 105 auto height = style.logicalHeight(); 106 if (height.isFixed() && height.value() <= 1) 107 return false; 108 109 return true; 92 110 } 93 111 … … 176 194 if (transitionEnd > maximumDelayForTransitions) 177 195 return; 178 if (!is ConsideredHidden(element))196 if (!isVisuallyHidden(element)) 179 197 return; 180 198 // In case of multiple transitions, the first tranistion wins (and it has to produce a visible content change in order to show up as hover). … … 199 217 if (!weakThis || !targetElement) 200 218 return; 201 if (is ConsideredHidden(*targetElement)) {219 if (isVisuallyHidden(*targetElement)) { 202 220 weakThis->adjustObservedState(Event::EndedTransitionButFinalStyleIsNotDefiniteYet); 203 221 return; … … 363 381 LOG_WITH_STREAM(ContentObservation, stream << "willDestroyRenderer element: " << &element); 364 382 365 if (!is ConsideredHidden(element))383 if (!isVisuallyHidden(element)) 366 384 m_elementsWithDestroyedVisibleRenderer.add(&element); 367 385 } … … 559 577 { 560 578 if (m_contentChangeObserver.shouldObserveVisibilityChangeForElement(element)) 561 m_wasHidden = is ConsideredHidden(m_element);579 m_wasHidden = isVisuallyHidden(m_element); 562 580 } 563 581 … … 565 583 { 566 584 auto changedFromHiddenToVisible = [&] { 567 return m_wasHidden && !isConsideredHidden(m_element);585 return m_wasHidden && isConsideredVisible(m_element); 568 586 }; 569 587 -
trunk/Source/WebCore/page/ios/ContentChangeObserver.h
r247147 r247200 50 50 WEBCORE_EXPORT void startContentObservationForDuration(Seconds duration); 51 51 WKContentChange observedContentChange() const { return m_observedContentState; } 52 WEBCORE_EXPORT static bool isConsideredHidden(const Node&); 52 WEBCORE_EXPORT static bool isConsideredVisible(const Node&); 53 static bool isVisuallyHidden(const Node&); 53 54 54 55 void didInstallDOMTimer(const DOMTimer&, Seconds timeout, bool singleShot); -
trunk/Source/WebKit/ChangeLog
r247197 r247200 1 2019-07-07 Zalan Bujtas <zalan@apple.com> 2 3 [ContentChangeObserver] Difficult to control videos on iqiyi.com as the actions are mouse hover 4 https://bugs.webkit.org/show_bug.cgi?id=199542 5 <rdar://problem/51886813> 6 7 Reviewed by Simon Fraser. 8 9 * WebProcess/WebPage/ios/WebPageIOS.mm: 10 (WebKit::WebPage::handleSyntheticClick): 11 1 12 2019-07-06 Antoine Quint <graouts@apple.com> 2 13 -
trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm
r247180 r247200 670 670 auto& respondingDocument = nodeRespondingToClick.document(); 671 671 auto& contentChangeObserver = respondingDocument.contentChangeObserver(); 672 auto targetNodeWentFromHiddenToVisible = contentChangeObserver.hiddenTouchTarget() == &nodeRespondingToClick && !ContentChangeObserver::isConsideredHidden(nodeRespondingToClick);672 auto targetNodeWentFromHiddenToVisible = contentChangeObserver.hiddenTouchTarget() == &nodeRespondingToClick && ContentChangeObserver::isConsideredVisible(nodeRespondingToClick); 673 673 { 674 674 LOG_WITH_STREAM(ContentObservation, stream << "handleSyntheticClick: node(" << &nodeRespondingToClick << ") " << location);
Note: See TracChangeset
for help on using the changeset viewer.