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 3 // found in the LICENSE file. 4 5 #ifndef CustomElementMicrotaskQueueBase_h 6 #define CustomElementMicrotaskQueueBase_h 7 8 #include "core/dom/custom/CustomElementMicrotaskStep.h" 9 #include "platform/heap/Handle.h" 10 #include "wtf/OwnPtr.h" 11 #include "wtf/PassOwnPtr.h" 12 #include "wtf/PassRefPtr.h" 13 #include "wtf/RefCounted.h" 14 #include "wtf/RefPtr.h" 15 #include "wtf/Vector.h" 16 17 namespace blink { 18 19 class CustomElementMicrotaskQueueBase : public RefCountedWillBeGarbageCollectedFinalized<CustomElementMicrotaskQueueBase> { 20 WTF_MAKE_NONCOPYABLE(CustomElementMicrotaskQueueBase); 21 public: 22 virtual ~CustomElementMicrotaskQueueBase() { } 23 24 bool isEmpty() const { return m_queue.isEmpty(); } 25 void dispatch(); 26 27 void trace(Visitor*); 28 29 #if !defined(NDEBUG) 30 void show(unsigned indent); 31 #endif 32 33 protected: 34 CustomElementMicrotaskQueueBase() : m_inDispatch(false) { } 35 virtual void doDispatch() = 0; 36 37 WillBeHeapVector<OwnPtrWillBeMember<CustomElementMicrotaskStep> > m_queue; 38 bool m_inDispatch; 39 }; 40 41 } 42 43 #endif // CustomElementMicrotaskQueueBase_h 44