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 17namespace blink { 18 19class CustomElementMicrotaskQueueBase : public RefCountedWillBeGarbageCollectedFinalized<CustomElementMicrotaskQueueBase> { 20 WTF_MAKE_NONCOPYABLE(CustomElementMicrotaskQueueBase); 21public: 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 33protected: 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