| Index: third_party/WebKit/Source/core/dom/custom/CustomElementReactionStackTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/custom/CustomElementReactionStackTest.cpp b/third_party/WebKit/Source/core/dom/custom/CustomElementReactionStackTest.cpp
|
| index 8290dbc9f07624b8917514cddc3787a229eb24ca..7edc0c93199395633a97ce696776aa603961b70c 100644
|
| --- a/third_party/WebKit/Source/core/dom/custom/CustomElementReactionStackTest.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/custom/CustomElementReactionStackTest.cpp
|
| @@ -111,4 +111,48 @@ TEST(CustomElementReactionStackTest, oneReactionQueuePerElement)
|
| EXPECT_EQ(log, std::vector<char>({'z'})) << "reactions should be run once";
|
| }
|
|
|
| +class EnqueueToStack : public Command {
|
| + WTF_MAKE_NONCOPYABLE(EnqueueToStack);
|
| +public:
|
| + EnqueueToStack(CustomElementReactionStack* stack, Element* element, CustomElementReaction* reaction)
|
| + : m_stack(stack)
|
| + , m_element(element)
|
| + , m_reaction(reaction)
|
| + {
|
| + }
|
| + ~EnqueueToStack() override = default;
|
| + DEFINE_INLINE_VIRTUAL_TRACE()
|
| + {
|
| + Command::trace(visitor);
|
| + visitor->trace(m_stack);
|
| + visitor->trace(m_element);
|
| + visitor->trace(m_reaction);
|
| + }
|
| + void run(Element*) override
|
| + {
|
| + m_stack->enqueue(m_element, m_reaction);
|
| + }
|
| +private:
|
| + Member<CustomElementReactionStack> m_stack;
|
| + Member<Element> m_element;
|
| + Member<CustomElementReaction> m_reaction;
|
| +};
|
| +
|
| +TEST(CustomElementReactionStackTest, enqueueFromReaction)
|
| +{
|
| + std::vector<char> log;
|
| +
|
| + Element* element = CreateElement("a");
|
| +
|
| + CustomElementReactionStack* stack = new CustomElementReactionStack();
|
| + stack->push();
|
| + stack->enqueue(element, new TestReaction({
|
| + new EnqueueToStack(stack, element,
|
| + new TestReaction({ new Log('a', log) }) )
|
| + }));
|
| + stack->popInvokingReactions();
|
| +
|
| + EXPECT_EQ(log, std::vector<char>({ 'a' })) << "enqueued reaction from another reaction should run in the same invoke";
|
| +}
|
| +
|
| } // namespace blink
|
|
|