OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/dom/custom/CustomElementMicrotaskDispatcher.h" | 6 #include "core/dom/custom/CustomElementMicrotaskDispatcher.h" |
7 | 7 |
8 #include "core/dom/Microtask.h" | 8 #include "core/dom/Microtask.h" |
9 #include "core/dom/custom/CustomElementCallbackDispatcher.h" | |
10 #include "core/dom/custom/CustomElementCallbackQueue.h" | 9 #include "core/dom/custom/CustomElementCallbackQueue.h" |
11 #include "core/dom/custom/CustomElementMicrotaskImportStep.h" | 10 #include "core/dom/custom/CustomElementMicrotaskImportStep.h" |
| 11 #include "core/dom/custom/CustomElementProcessingStack.h" |
12 #include "core/dom/custom/CustomElementScheduler.h" | 12 #include "core/dom/custom/CustomElementScheduler.h" |
13 #include "wtf/MainThread.h" | 13 #include "wtf/MainThread.h" |
14 | 14 |
15 namespace blink { | 15 namespace blink { |
16 | 16 |
17 static const CustomElementCallbackQueue::ElementQueueId kMicrotaskQueueId = 0; | 17 static const CustomElementCallbackQueue::ElementQueueId kMicrotaskQueueId = 0; |
18 | 18 |
19 CustomElementMicrotaskDispatcher::CustomElementMicrotaskDispatcher() | 19 CustomElementMicrotaskDispatcher::CustomElementMicrotaskDispatcher() |
20 : m_hasScheduledMicrotask(false) | 20 : m_hasScheduledMicrotask(false) |
21 , m_phase(Quiescent) | 21 , m_phase(Quiescent) |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 void CustomElementMicrotaskDispatcher::doDispatch() | 59 void CustomElementMicrotaskDispatcher::doDispatch() |
60 { | 60 { |
61 ASSERT(isMainThread()); | 61 ASSERT(isMainThread()); |
62 | 62 |
63 ASSERT(m_phase == Quiescent && m_hasScheduledMicrotask); | 63 ASSERT(m_phase == Quiescent && m_hasScheduledMicrotask); |
64 m_hasScheduledMicrotask = false; | 64 m_hasScheduledMicrotask = false; |
65 | 65 |
66 // Finishing microtask work deletes all | 66 // Finishing microtask work deletes all |
67 // CustomElementCallbackQueues. Being in a callback delivery scope | 67 // CustomElementCallbackQueues. Being in a callback delivery scope |
68 // implies those queues could still be in use. | 68 // implies those queues could still be in use. |
69 ASSERT_WITH_SECURITY_IMPLICATION(!CustomElementCallbackDispatcher::inCallbac
kDeliveryScope()); | 69 ASSERT_WITH_SECURITY_IMPLICATION(!CustomElementProcessingStack::inCallbackDe
liveryScope()); |
70 | 70 |
71 m_phase = Resolving; | 71 m_phase = Resolving; |
72 | 72 |
73 m_phase = DispatchingCallbacks; | 73 m_phase = DispatchingCallbacks; |
74 for (WillBeHeapVector<RawPtrWillBeMember<CustomElementCallbackQueue> >::iter
ator it = m_elements.begin(); it != m_elements.end(); ++it) { | 74 for (WillBeHeapVector<RawPtrWillBeMember<CustomElementCallbackQueue> >::iter
ator it = m_elements.begin(); it != m_elements.end(); ++it) { |
75 // Created callback may enqueue an attached callback. | 75 // Created callback may enqueue an attached callback. |
76 CustomElementCallbackDispatcher::CallbackDeliveryScope scope; | 76 CustomElementProcessingStack::CallbackDeliveryScope scope; |
77 (*it)->processInElementQueue(kMicrotaskQueueId); | 77 (*it)->processInElementQueue(kMicrotaskQueueId); |
78 } | 78 } |
79 | 79 |
80 m_elements.clear(); | 80 m_elements.clear(); |
81 CustomElementScheduler::microtaskDispatcherDidFinish(); | 81 CustomElementScheduler::microtaskDispatcherDidFinish(); |
82 m_phase = Quiescent; | 82 m_phase = Quiescent; |
83 } | 83 } |
84 | 84 |
85 void CustomElementMicrotaskDispatcher::trace(Visitor* visitor) | 85 void CustomElementMicrotaskDispatcher::trace(Visitor* visitor) |
86 { | 86 { |
87 #if ENABLE(OILPAN) | 87 #if ENABLE(OILPAN) |
88 visitor->trace(m_elements); | 88 visitor->trace(m_elements); |
89 #endif | 89 #endif |
90 } | 90 } |
91 | 91 |
92 } // namespace blink | 92 } // namespace blink |
OLD | NEW |