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

Unified Diff: Source/core/dom/custom/CustomElementMicrotaskQueue.cpp

Issue 288323004: HTML Imports: Get rid of needsProcessOrStop() from dom/custom/ (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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: Source/core/dom/custom/CustomElementMicrotaskQueue.cpp
diff --git a/Source/core/dom/custom/CustomElementMicrotaskQueue.cpp b/Source/core/dom/custom/CustomElementMicrotaskQueue.cpp
index df29d66591525af4cd3722a2125ab77112376179..8417305ccff53d9a7d328bba011673cb65c9eb7e 100644
--- a/Source/core/dom/custom/CustomElementMicrotaskQueue.cpp
+++ b/Source/core/dom/custom/CustomElementMicrotaskQueue.cpp
@@ -38,9 +38,9 @@ namespace WebCore {
class MicrotaskQueueInvocationScope {
public:
#if defined(NDEBUG)
- explicit MicrotaskQueueInvocationScope(CustomElementMicrotaskQueue*) { }
+ explicit MicrotaskQueueInvocationScope(CustomElementMicrotaskQueueBase*) { }
#else
- explicit MicrotaskQueueInvocationScope(CustomElementMicrotaskQueue* queue)
+ explicit MicrotaskQueueInvocationScope(CustomElementMicrotaskQueueBase* queue)
: m_parent(s_top)
, m_queue(queue)
{
@@ -65,7 +65,7 @@ private:
}
MicrotaskQueueInvocationScope* m_parent;
- CustomElementMicrotaskQueue* m_queue;
+ CustomElementMicrotaskQueueBase* m_queue;
static MicrotaskQueueInvocationScope* s_top;
#endif
@@ -75,51 +75,19 @@ private:
MicrotaskQueueInvocationScope* MicrotaskQueueInvocationScope::s_top = 0;
#endif
-void CustomElementMicrotaskQueue::enqueue(PassOwnPtrWillBeRawPtr<CustomElementMicrotaskStep> step)
-{
- m_queue.append(step);
-}
-
-CustomElementMicrotaskStep::Result CustomElementMicrotaskQueue::dispatch()
+void CustomElementMicrotaskQueueBase::dispatch()
{
MicrotaskQueueInvocationScope scope(this);
- WillBeHeapVector<OwnPtrWillBeMember<CustomElementMicrotaskStep> > remaining;
- Result accumulatedResult = CustomElementMicrotaskStep::ContinueWithRemoving;
-
- unsigned i;
- for (i = 0; i < m_queue.size(); ++i) {
- Result result = m_queue[i]->process();
- accumulatedResult = CustomElementMicrotaskStep::Result(result | accumulatedResult);
- if (result & CustomElementMicrotaskStep::ShouldRemain)
- remaining.append(m_queue[i].release());
- if (result & CustomElementMicrotaskStep::ShouldStop)
- break;
- }
-
- for (++i; i < m_queue.size(); ++i)
- remaining.append(m_queue[i].release());
- m_queue.swap(remaining);
-
- return accumulatedResult;
+ doDispatch();
}
-bool CustomElementMicrotaskQueue::needsProcessOrStop() const
-{
- for (size_t i = 0; i < m_queue.size(); ++i) {
- if (m_queue[i]->needsProcessOrStop())
- return true;
- }
-
- return false;
-}
-
-void CustomElementMicrotaskQueue::trace(Visitor* visitor)
+void CustomElementMicrotaskQueueBase::trace(Visitor* visitor)
{
visitor->trace(m_queue);
}
#if !defined(NDEBUG)
-void CustomElementMicrotaskQueue::show(unsigned indent)
+void CustomElementMicrotaskQueueBase::show(unsigned indent)
{
for (unsigned q = 0; q < m_queue.size(); ++q) {
if (m_queue[q])
@@ -130,4 +98,21 @@ void CustomElementMicrotaskQueue::show(unsigned indent)
}
#endif
+void CustomElementMicrotaskQueue::enqueue(PassOwnPtr<CustomElementMicrotaskStep> step)
+{
+ m_queue.append(step);
+}
+
+void CustomElementMicrotaskQueue::doDispatch()
+{
+ unsigned i;
+
+ for (i = 0; i < m_queue.size(); ++i) {
+ if (CustomElementMicrotaskStep::Processing == m_queue[i]->process())
+ break;
+ }
+
+ m_queue.remove(0, i);
+}
+
} // namespace WebCore
« no previous file with comments | « Source/core/dom/custom/CustomElementMicrotaskQueue.h ('k') | Source/core/dom/custom/CustomElementMicrotaskResolutionStep.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698