| OLD | NEW |
| 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 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 } | 197 } |
| 198 treeScopeEventContext->adoptEventPath(nodes); | 198 treeScopeEventContext->adoptEventPath(nodes); |
| 199 } | 199 } |
| 200 } | 200 } |
| 201 | 201 |
| 202 TreeScopeEventContext* EventPath::ensureTreeScopeEventContext(Node* currentTarge
t, TreeScope* treeScope, TreeScopeEventContextMap& treeScopeEventContextMap) | 202 TreeScopeEventContext* EventPath::ensureTreeScopeEventContext(Node* currentTarge
t, TreeScope* treeScope, TreeScopeEventContextMap& treeScopeEventContextMap) |
| 203 { | 203 { |
| 204 if (!treeScope) | 204 if (!treeScope) |
| 205 return 0; | 205 return 0; |
| 206 TreeScopeEventContextMap::AddResult addResult = treeScopeEventContextMap.add
(treeScope, TreeScopeEventContext::create(*treeScope)); | 206 TreeScopeEventContextMap::AddResult addResult = treeScopeEventContextMap.add
(treeScope, TreeScopeEventContext::create(*treeScope)); |
| 207 TreeScopeEventContext* treeScopeEventContext = addResult.iterator->value.get
(); | 207 TreeScopeEventContext* treeScopeEventContext = addResult.storedValue->value.
get(); |
| 208 if (addResult.isNewEntry) { | 208 if (addResult.isNewEntry) { |
| 209 TreeScopeEventContext* parentTreeScopeEventContext = ensureTreeScopeEven
tContext(0, treeScope->olderShadowRootOrParentTreeScope(), treeScopeEventContext
Map); | 209 TreeScopeEventContext* parentTreeScopeEventContext = ensureTreeScopeEven
tContext(0, treeScope->olderShadowRootOrParentTreeScope(), treeScopeEventContext
Map); |
| 210 if (parentTreeScopeEventContext && parentTreeScopeEventContext->target()
) { | 210 if (parentTreeScopeEventContext && parentTreeScopeEventContext->target()
) { |
| 211 treeScopeEventContext->setTarget(parentTreeScopeEventContext->target
()); | 211 treeScopeEventContext->setTarget(parentTreeScopeEventContext->target
()); |
| 212 } else if (currentTarget) { | 212 } else if (currentTarget) { |
| 213 treeScopeEventContext->setTarget(eventTargetRespectingTargetRules(cu
rrentTarget)); | 213 treeScopeEventContext->setTarget(eventTargetRespectingTargetRules(cu
rrentTarget)); |
| 214 } | 214 } |
| 215 } else if (!treeScopeEventContext->target() && currentTarget) { | 215 } else if (!treeScopeEventContext->target() && currentTarget) { |
| 216 treeScopeEventContext->setTarget(eventTargetRespectingTargetRules(curren
tTarget)); | 216 treeScopeEventContext->setTarget(eventTargetRespectingTargetRules(curren
tTarget)); |
| 217 } | 217 } |
| 218 return treeScopeEventContext; | 218 return treeScopeEventContext; |
| 219 } | 219 } |
| 220 | 220 |
| 221 void EventPath::calculateAdjustedTargets() | 221 void EventPath::calculateAdjustedTargets() |
| 222 { | 222 { |
| 223 const TreeScope* lastTreeScope = 0; | 223 const TreeScope* lastTreeScope = 0; |
| 224 bool isSVGElement = at(0).node()->isSVGElement(); | 224 bool isSVGElement = at(0).node()->isSVGElement(); |
| 225 | 225 |
| 226 TreeScopeEventContextMap treeScopeEventContextMap; | 226 TreeScopeEventContextMap treeScopeEventContextMap; |
| 227 TreeScopeEventContext* lastTreeScopeEventContext = 0; | 227 TreeScopeEventContext* lastTreeScopeEventContext = 0; |
| 228 | 228 |
| 229 for (size_t i = 0; i < size(); ++i) { | 229 for (size_t i = 0; i < size(); ++i) { |
| 230 Node* currentNode = at(i).node(); | 230 Node* currentNode = at(i).node(); |
| 231 TreeScope& currentTreeScope = currentNode->treeScope(); | 231 TreeScope& currentTreeScope = currentNode->treeScope(); |
| 232 if (lastTreeScope != ¤tTreeScope) { | 232 if (lastTreeScope != ¤tTreeScope) { |
| 233 if (!isSVGElement) { | 233 if (!isSVGElement) { |
| 234 lastTreeScopeEventContext = ensureTreeScopeEventContext(currentN
ode, ¤tTreeScope, treeScopeEventContextMap); | 234 lastTreeScopeEventContext = ensureTreeScopeEventContext(currentN
ode, ¤tTreeScope, treeScopeEventContextMap); |
| 235 } else { | 235 } else { |
| 236 TreeScopeEventContextMap::AddResult addResult = treeScopeEventCo
ntextMap.add(¤tTreeScope, TreeScopeEventContext::create(currentTreeScope))
; | 236 TreeScopeEventContextMap::AddResult addResult = treeScopeEventCo
ntextMap.add(¤tTreeScope, TreeScopeEventContext::create(currentTreeScope))
; |
| 237 lastTreeScopeEventContext = addResult.iterator->value.get(); | 237 lastTreeScopeEventContext = addResult.storedValue->value.get(); |
| 238 if (addResult.isNewEntry) { | 238 if (addResult.isNewEntry) { |
| 239 // Don't adjust an event target for SVG. | 239 // Don't adjust an event target for SVG. |
| 240 lastTreeScopeEventContext->setTarget(eventTargetRespectingTa
rgetRules(at(0).node())); | 240 lastTreeScopeEventContext->setTarget(eventTargetRespectingTa
rgetRules(at(0).node())); |
| 241 } | 241 } |
| 242 } | 242 } |
| 243 } | 243 } |
| 244 ASSERT(lastTreeScopeEventContext); | 244 ASSERT(lastTreeScopeEventContext); |
| 245 at(i).setTreeScopeEventContext(lastTreeScopeEventContext); | 245 at(i).setTreeScopeEventContext(lastTreeScopeEventContext); |
| 246 lastTreeScope = ¤tTreeScope; | 246 lastTreeScope = ¤tTreeScope; |
| 247 } | 247 } |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 | 368 |
| 369 #ifndef NDEBUG | 369 #ifndef NDEBUG |
| 370 void EventPath::checkReachability(TreeScope& treeScope, TouchList& touchList) | 370 void EventPath::checkReachability(TreeScope& treeScope, TouchList& touchList) |
| 371 { | 371 { |
| 372 for (size_t i = 0; i < touchList.length(); ++i) | 372 for (size_t i = 0; i < touchList.length(); ++i) |
| 373 ASSERT(touchList.item(i)->target()->toNode()->treeScope().isInclusiveOld
erSiblingShadowRootOrAncestorTreeScopeOf(treeScope)); | 373 ASSERT(touchList.item(i)->target()->toNode()->treeScope().isInclusiveOld
erSiblingShadowRootOrAncestorTreeScopeOf(treeScope)); |
| 374 } | 374 } |
| 375 #endif | 375 #endif |
| 376 | 376 |
| 377 } // namespace | 377 } // namespace |
| OLD | NEW |