Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(841)

Unified Diff: third_party/WebKit/Source/core/events/EventPath.cpp

Issue 2030513002: Remove Event.relatedTargetScoped and update event path calculation for relatedTarget (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/events/EventPath.cpp
diff --git a/third_party/WebKit/Source/core/events/EventPath.cpp b/third_party/WebKit/Source/core/events/EventPath.cpp
index feb2f0976cd1f1e997177f04c0de2e9a5521e01b..91eb910123dbf79a5181116ccee8aea8c401d926 100644
--- a/third_party/WebKit/Source/core/events/EventPath.cpp
+++ b/third_party/WebKit/Source/core/events/EventPath.cpp
@@ -258,33 +258,28 @@ void EventPath::adjustForRelatedTarget(Node& target, EventTarget* relatedTarget)
return;
if (target.document() != relatedNode->document())
return;
- if (!target.inShadowIncludingDocument() || !relatedNode->inShadowIncludingDocument())
- return;
+ retargetRelatedTarget(*relatedNode);
+ shrinkForRelatedTarget(target, *relatedNode);
+}
+void EventPath::retargetRelatedTarget(const Node& relatedTargetNode)
+{
RelatedTargetMap relatedNodeMap;
- buildRelatedNodeMap(*relatedNode, relatedNodeMap);
+ buildRelatedNodeMap(relatedTargetNode, relatedNodeMap);
for (const auto& treeScopeEventContext : m_treeScopeEventContexts) {
EventTarget* adjustedRelatedTarget = findRelatedNode(treeScopeEventContext->treeScope(), relatedNodeMap);
ASSERT(adjustedRelatedTarget);
treeScopeEventContext.get()->setRelatedTarget(adjustedRelatedTarget);
}
-
- shrinkIfNeeded(target, *relatedTarget);
}
-void EventPath::shrinkIfNeeded(const Node& target, const EventTarget& relatedTarget)
+void EventPath::shrinkForRelatedTarget(const Node& target, const Node& relatedTarget)
{
- // Synthetic mouse events can have a relatedTarget which is identical to the target.
- bool targetIsIdenticalToToRelatedTarget = (&target == &relatedTarget);
-
+ if (!target.isInShadowTree() && !relatedTarget.isInShadowTree())
+ return;
for (size_t i = 0; i < size(); ++i) {
- if (targetIsIdenticalToToRelatedTarget) {
- if (target.treeScope().rootNode() == at(i).node()) {
- shrink(i + 1);
- break;
- }
- } else if (at(i).target() == at(i).relatedTarget()) {
+ if (at(i).target() == at(i).relatedTarget()) {
// Event dispatching should be stopped here.
shrink(i);
break;

Powered by Google App Engine
This is Rietveld 408576698