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 | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 24 matching lines...) Expand all Loading... |
35 #include "platform/heap/Handle.h" | 35 #include "platform/heap/Handle.h" |
36 #include "wtf/OwnPtr.h" | 36 #include "wtf/OwnPtr.h" |
37 #include "wtf/PassOwnPtr.h" | 37 #include "wtf/PassOwnPtr.h" |
38 #include "wtf/PassRefPtr.h" | 38 #include "wtf/PassRefPtr.h" |
39 #include "wtf/RefCounted.h" | 39 #include "wtf/RefCounted.h" |
40 #include "wtf/RefPtr.h" | 40 #include "wtf/RefPtr.h" |
41 #include "wtf/Vector.h" | 41 #include "wtf/Vector.h" |
42 | 42 |
43 namespace WebCore { | 43 namespace WebCore { |
44 | 44 |
45 class CustomElementMicrotaskQueue FINAL : public RefCountedWillBeGarbageCollecte
dFinalized<CustomElementMicrotaskQueue> { | 45 class CustomElementMicrotaskQueueBase : public RefCountedWillBeGarbageCollectedF
inalized<CustomElementMicrotaskQueueBase> { |
46 WTF_MAKE_NONCOPYABLE(CustomElementMicrotaskQueue); | 46 WTF_MAKE_NONCOPYABLE(CustomElementMicrotaskQueueBase); |
47 public: | 47 public: |
48 static PassRefPtrWillBeRawPtr<CustomElementMicrotaskQueue> create() | 48 virtual ~CustomElementMicrotaskQueueBase() { } |
49 { | |
50 return adoptRefWillBeNoop(new CustomElementMicrotaskQueue()); | |
51 } | |
52 | 49 |
53 bool isEmpty() const { return m_queue.isEmpty(); } | 50 bool isEmpty() const { return m_queue.isEmpty(); } |
54 void enqueue(PassOwnPtrWillBeRawPtr<CustomElementMicrotaskStep>); | 51 void dispatch(); |
55 | |
56 typedef CustomElementMicrotaskStep::Result Result; | |
57 Result dispatch(); | |
58 bool needsProcessOrStop() const; | |
59 | 52 |
60 void trace(Visitor*); | 53 void trace(Visitor*); |
61 | 54 |
62 #if !defined(NDEBUG) | 55 #if !defined(NDEBUG) |
63 void show(unsigned indent); | 56 void show(unsigned indent); |
64 #endif | 57 #endif |
| 58 |
| 59 protected: |
| 60 CustomElementMicrotaskQueueBase() { } |
| 61 virtual void doDispatch() = 0; |
| 62 |
| 63 WillBeHeapVector<OwnPtrWillBeMember<CustomElementMicrotaskStep> > m_queue; |
| 64 }; |
| 65 |
| 66 class CustomElementMicrotaskQueue : public CustomElementMicrotaskQueueBase { |
| 67 public: |
| 68 static PassRefPtrWillBeRawPtr<CustomElementMicrotaskQueue> create() { return
adoptRefWillBeNoop(new CustomElementMicrotaskQueue()); } |
| 69 |
| 70 void enqueue(PassOwnPtr<CustomElementMicrotaskStep>); |
| 71 |
65 private: | 72 private: |
66 CustomElementMicrotaskQueue() { } | 73 CustomElementMicrotaskQueue() { } |
67 | 74 virtual void doDispatch(); |
68 WillBeHeapVector<OwnPtrWillBeMember<CustomElementMicrotaskStep> > m_queue; | |
69 }; | 75 }; |
70 | 76 |
71 } | 77 } |
72 | 78 |
73 #endif // CustomElementMicrotaskQueue_h | 79 #endif // CustomElementMicrotaskQueue_h |
OLD | NEW |