Changeset 167778 in webkit
- Timestamp:
- Apr 24, 2014, 3:24:41 PM (12 years ago)
- Location:
- tags/Safari-538.31
- Files:
-
- 3 deleted
- 3 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/events/shadow-event-path-expected.txt (deleted)
-
LayoutTests/fast/events/shadow-event-path.html (deleted)
-
LayoutTests/platform/mac-wk2/fast/events/shadow-event-path-expected.txt (deleted)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/dom/EventDispatcher.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tags/Safari-538.31/LayoutTests/ChangeLog
r167732 r167778 165 165 ensure that they are explicitly different colors. 166 166 * fast/css/padding-margin-negative-border.html: 167 168 2014-04-22 Ryosuke Niwa <rniwa@webkit.org>169 170 REGRESSION (r157328): popover to check into flight ba.com dismisses instantly when focusing form171 https://bugs.webkit.org/show_bug.cgi?id=131949172 173 Reviewed by Darin Adler.174 175 Add a test that dumps the event target and the related target of every mouse event176 when dispatched inside an input element inside a details element.177 178 This catches the regression as well as other bugs I encountered while fixing the bug.179 180 We need a WK2 specific results because WK1 mac results contain an extra fake mouse move event.181 182 * fast/events/shadow-event-path-expected.txt: Added.183 * fast/events/shadow-event-path.html: Added.184 * platform/mac-wk2/fast/events/shadow-event-expected.txt: Added.185 167 186 168 2014-04-22 Ryosuke Niwa <rniwa@webkit.org> -
tags/Safari-538.31/Source/WebCore/ChangeLog
r167735 r167778 1 2014-04-24 Matthew Hanson <matthew_hanson@apple.com> 2 3 Rollout r167689. 4 5 2014-04-22 Ryosuke Niwa <rniwa@webkit.org> 6 7 Rollout r156635 since the old behavior was intentional. 8 9 * page/EventHandler.cpp: 10 (WebCore::EventHandler::selectCursor): 11 1 12 2014-04-23 Benjamin Poulain <bpoulain@apple.com> 2 13 -
tags/Safari-538.31/Source/WebCore/dom/EventDispatcher.cpp
r167689 r167778 91 91 void updateTouchLists(const TouchEvent&); 92 92 #endif 93 void setRelatedTarget( Node& origin,EventTarget&);93 void setRelatedTarget(EventTarget&); 94 94 95 95 bool hasEventListeners(const AtomicString& eventType) const; … … 149 149 } 150 150 151 if (&newTreeScope == &m_relatedNodeTreeScope) 152 m_relatedNodeInCurrentTreeScope = &m_relatedNode; 153 else if (m_relatedNodeInCurrentTreeScope) { 151 if (m_relatedNodeInCurrentTreeScope) { // relatedNode is under the current tree scope 154 152 ASSERT(m_currentTreeScope); 155 153 m_relatedNodeInCurrentTreeScope = &newTarget; 156 } else { 157 if (!m_currentTreeScope) { 158 TreeScope* newTreeScopeAncestor = &newTreeScope; 159 do { 160 m_relatedNodeInCurrentTreeScope = findHostOfTreeScopeInTargetTreeScope(m_relatedNodeTreeScope, *newTreeScopeAncestor); 161 newTreeScopeAncestor = newTreeScopeAncestor->parentTreeScope(); 162 if (newTreeScopeAncestor == &m_relatedNodeTreeScope) { 163 m_relatedNodeInCurrentTreeScope = &m_relatedNode; 164 break; 165 } 166 } while (newTreeScopeAncestor && !m_relatedNodeInCurrentTreeScope); 167 } 168 ASSERT(m_relatedNodeInCurrentTreeScope || findHostOfTreeScopeInTargetTreeScope(newTreeScope, m_relatedNodeTreeScope) 169 || &newTreeScope.documentScope() != &m_relatedNodeTreeScope.documentScope()); 170 } 154 } else if (&newTreeScope == &m_relatedNodeTreeScope) // relatedNode is in the current tree scope; 155 m_relatedNodeInCurrentTreeScope = &m_relatedNode; 156 // Otherwise, we haven't reached the tree scope that contains relatedNode yet. 171 157 172 158 m_currentTreeScope = &newTreeScope; 173 159 174 160 return m_relatedNodeInCurrentTreeScope; 175 }176 177 static Node* findHostOfTreeScopeInTargetTreeScope(const TreeScope& startingTreeScope, const TreeScope& targetScope)178 {179 ASSERT(&targetScope != &startingTreeScope);180 Node* previousHost = 0;181 for (const TreeScope* scope = &startingTreeScope; scope; scope = scope->parentTreeScope()) {182 if (scope == &targetScope) {183 ASSERT(previousHost);184 ASSERT_WITH_SECURITY_IMPLICATION(&previousHost->treeScope() == &targetScope);185 return previousHost;186 }187 if (scope->rootNode().isShadowRoot())188 previousHost = toShadowRoot(scope->rootNode()).hostElement();189 else190 ASSERT_WITH_SECURITY_IMPLICATION(!scope->parentTreeScope());191 }192 return 0;193 161 } 194 162 … … 338 306 339 307 if (EventTarget* relatedTarget = event->relatedTarget()) 340 eventPath.setRelatedTarget(* node, *relatedTarget);308 eventPath.setRelatedTarget(*relatedTarget); 341 309 #if ENABLE(TOUCH_EVENTS) && !PLATFORM(IOS) 342 310 if (event->isTouchEvent()) … … 485 453 #endif 486 454 487 void EventPath::setRelatedTarget( Node& origin,EventTarget& relatedTarget)455 void EventPath::setRelatedTarget(EventTarget& relatedTarget) 488 456 { 489 457 Node* relatedNode = relatedTarget.toNode(); … … 493 461 EventRelatedNodeResolver resolver(*relatedNode); 494 462 495 bool originIsRelatedTarget = &origin == relatedNode;496 Node& rootNodeInOriginTreeScope = origin.treeScope().rootNode();497 498 463 size_t eventPathSize = m_path.size(); 499 size_t i = 0; 500 while (i < eventPathSize) { 501 Node* contextNode = m_path[i]->node(); 502 Node* currentRelatedNode = resolver.moveToParentOrShadowHost(*contextNode); 503 if (!originIsRelatedTarget && m_path[i]->target() == currentRelatedNode) 504 break; 505 toMouseOrFocusEventContext(*m_path[i]).setRelatedTarget(currentRelatedNode); 506 i++; 507 if (originIsRelatedTarget && &rootNodeInOriginTreeScope == contextNode) 508 break; 509 } 510 m_path.shrink(i); 464 for (size_t i = 0; i < eventPathSize; i++) 465 toMouseOrFocusEventContext(*m_path[i]).setRelatedTarget(resolver.moveToParentOrShadowHost(*m_path[i]->node())); 511 466 } 512 467
Note:
See TracChangeset
for help on using the changeset viewer.