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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 { | 112 { |
113 ASSERT(m_node); | 113 ASSERT(m_node); |
114 ASSERT(m_nodeEventContexts.isEmpty()); | 114 ASSERT(m_nodeEventContexts.isEmpty()); |
115 m_node->document().updateDistributionForNodeIfNeeded(const_cast<Node*>(m_nod
e.get())); | 115 m_node->document().updateDistributionForNodeIfNeeded(const_cast<Node*>(m_nod
e.get())); |
116 | 116 |
117 Node* current = m_node; | 117 Node* current = m_node; |
118 addNodeEventContext(current); | 118 addNodeEventContext(current); |
119 if (!m_node->inDocument()) | 119 if (!m_node->inDocument()) |
120 return; | 120 return; |
121 while (current) { | 121 while (current) { |
| 122 if (m_event && current->keepEventInNode(m_event)) |
| 123 break; |
122 if (current->isShadowRoot() && m_event && determineDispatchBehavior(m_ev
ent, toShadowRoot(current), m_node) == StayInsideShadowDOM) | 124 if (current->isShadowRoot() && m_event && determineDispatchBehavior(m_ev
ent, toShadowRoot(current), m_node) == StayInsideShadowDOM) |
123 break; | 125 break; |
124 WillBeHeapVector<RawPtrWillBeMember<InsertionPoint>, 8> insertionPoints; | 126 WillBeHeapVector<RawPtrWillBeMember<InsertionPoint>, 8> insertionPoints; |
125 collectDestinationInsertionPoints(*current, insertionPoints); | 127 collectDestinationInsertionPoints(*current, insertionPoints); |
126 if (!insertionPoints.isEmpty()) { | 128 if (!insertionPoints.isEmpty()) { |
127 for (size_t i = 0; i < insertionPoints.size(); ++i) { | 129 for (size_t i = 0; i < insertionPoints.size(); ++i) { |
128 InsertionPoint* insertionPoint = insertionPoints[i]; | 130 InsertionPoint* insertionPoint = insertionPoints[i]; |
129 if (insertionPoint->isShadowInsertionPoint()) { | 131 if (insertionPoint->isShadowInsertionPoint()) { |
130 ShadowRoot* containingShadowRoot = insertionPoint->containin
gShadowRoot(); | 132 ShadowRoot* containingShadowRoot = insertionPoint->containin
gShadowRoot(); |
131 ASSERT(containingShadowRoot); | 133 ASSERT(containingShadowRoot); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 | 350 |
349 void EventPath::trace(Visitor* visitor) | 351 void EventPath::trace(Visitor* visitor) |
350 { | 352 { |
351 visitor->trace(m_nodeEventContexts); | 353 visitor->trace(m_nodeEventContexts); |
352 visitor->trace(m_node); | 354 visitor->trace(m_node); |
353 visitor->trace(m_event); | 355 visitor->trace(m_event); |
354 visitor->trace(m_treeScopeEventContexts); | 356 visitor->trace(m_treeScopeEventContexts); |
355 } | 357 } |
356 | 358 |
357 } // namespace | 359 } // namespace |
OLD | NEW |