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

Side by Side 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: wip Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Neither the name of Google Inc. nor the names of its 10 * * Neither the name of Google Inc. nor the names of its
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 251
252 void EventPath::adjustForRelatedTarget(Node& target, EventTarget* relatedTarget) 252 void EventPath::adjustForRelatedTarget(Node& target, EventTarget* relatedTarget)
253 { 253 {
254 if (!relatedTarget) 254 if (!relatedTarget)
255 return; 255 return;
256 Node* relatedNode = relatedTarget->toNode(); 256 Node* relatedNode = relatedTarget->toNode();
257 if (!relatedNode) 257 if (!relatedNode)
258 return; 258 return;
259 if (target.document() != relatedNode->document()) 259 if (target.document() != relatedNode->document())
260 return; 260 return;
261 if (!target.inShadowIncludingDocument() || !relatedNode->inShadowIncludingDo cument()) 261 retargetRelatedTarget(*relatedNode);
262 return; 262 shrinkForRelatedTarget(target, *relatedNode);
263 }
263 264
265 void EventPath::retargetRelatedTarget(const Node& relatedTargetNode)
266 {
264 RelatedTargetMap relatedNodeMap; 267 RelatedTargetMap relatedNodeMap;
265 buildRelatedNodeMap(*relatedNode, relatedNodeMap); 268 buildRelatedNodeMap(relatedTargetNode, relatedNodeMap);
266 269
267 for (const auto& treeScopeEventContext : m_treeScopeEventContexts) { 270 for (const auto& treeScopeEventContext : m_treeScopeEventContexts) {
271
tkent 2016/06/02 04:38:00 nit: This blank line doesn't look helpful to me.
hayato 2016/06/02 04:47:44 Done
268 EventTarget* adjustedRelatedTarget = findRelatedNode(treeScopeEventConte xt->treeScope(), relatedNodeMap); 272 EventTarget* adjustedRelatedTarget = findRelatedNode(treeScopeEventConte xt->treeScope(), relatedNodeMap);
269 ASSERT(adjustedRelatedTarget); 273 ASSERT(adjustedRelatedTarget);
270 treeScopeEventContext.get()->setRelatedTarget(adjustedRelatedTarget); 274 treeScopeEventContext.get()->setRelatedTarget(adjustedRelatedTarget);
271 } 275 }
272
273 shrinkIfNeeded(target, *relatedTarget);
274 } 276 }
275 277
276 void EventPath::shrinkIfNeeded(const Node& target, const EventTarget& relatedTar get) 278 void EventPath::shrinkForRelatedTarget(const Node& target, const Node& relatedTa rget)
277 { 279 {
278 // Synthetic mouse events can have a relatedTarget which is identical to the target. 280 if (!target.isInShadowTree() && !relatedTarget.isInShadowTree())
279 bool targetIsIdenticalToToRelatedTarget = (&target == &relatedTarget); 281 return;
280
281 for (size_t i = 0; i < size(); ++i) { 282 for (size_t i = 0; i < size(); ++i) {
282 if (targetIsIdenticalToToRelatedTarget) { 283 if (at(i).target() == at(i).relatedTarget()) {
283 if (target.treeScope().rootNode() == at(i).node()) {
284 shrink(i + 1);
285 break;
286 }
287 } else if (at(i).target() == at(i).relatedTarget()) {
288 // Event dispatching should be stopped here. 284 // Event dispatching should be stopped here.
289 shrink(i); 285 shrink(i);
290 break; 286 break;
291 } 287 }
292 } 288 }
293 } 289 }
294 290
295 void EventPath::adjustForTouchEvent(TouchEvent& touchEvent) 291 void EventPath::adjustForTouchEvent(TouchEvent& touchEvent)
296 { 292 {
297 HeapVector<Member<TouchList>> adjustedTouches; 293 HeapVector<Member<TouchList>> adjustedTouches;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 DEFINE_TRACE(EventPath) 363 DEFINE_TRACE(EventPath)
368 { 364 {
369 visitor->trace(m_nodeEventContexts); 365 visitor->trace(m_nodeEventContexts);
370 visitor->trace(m_node); 366 visitor->trace(m_node);
371 visitor->trace(m_event); 367 visitor->trace(m_event);
372 visitor->trace(m_treeScopeEventContexts); 368 visitor->trace(m_treeScopeEventContexts);
373 visitor->trace(m_windowEventContext); 369 visitor->trace(m_windowEventContext);
374 } 370 }
375 371
376 } // namespace blink 372 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698