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

Side by Side Diff: third_party/WebKit/Source/core/dom/custom/CustomElementReactionQueueTest.cpp

Issue 2456773002: Clear the custom element's reaction queue if upgrade fails. (Closed)
Patch Set: Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/dom/custom/CustomElementReactionQueue.h" 5 #include "core/dom/custom/CustomElementReactionQueue.h"
6 6
7 #include "core/dom/custom/CustomElementReaction.h" 7 #include "core/dom/custom/CustomElementReaction.h"
8 #include "core/dom/custom/CustomElementReactionTestHelpers.h" 8 #include "core/dom/custom/CustomElementReactionTestHelpers.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "wtf/Functional.h"
10 #include <initializer_list> 11 #include <initializer_list>
11 #include <vector> 12 #include <vector>
12 13
13 namespace blink { 14 namespace blink {
14 15
15 TEST(CustomElementReactionQueueTest, invokeReactions_one) { 16 TEST(CustomElementReactionQueueTest, invokeReactions_one) {
16 std::vector<char> log; 17 std::vector<char> log;
17 CustomElementReactionQueue* queue = new CustomElementReactionQueue(); 18 CustomElementReactionQueue* queue = new CustomElementReactionQueue();
18 queue->add(new TestReaction({new Log('a', log)})); 19 queue->add(new TestReaction({new Log('a', log)}));
19 queue->invokeReactions(nullptr); 20 queue->invokeReactions(nullptr);
(...skipping 26 matching lines...) Expand all
46 CustomElementReaction* first = 47 CustomElementReaction* first =
47 new TestReaction({new Log('a', log), new Enqueue(queue, second), 48 new TestReaction({new Log('a', log), new Enqueue(queue, second),
48 new Recurse(queue)}); // Non-empty recursion 49 new Recurse(queue)}); // Non-empty recursion
49 50
50 queue->add(first); 51 queue->add(first);
51 queue->invokeReactions(nullptr); 52 queue->invokeReactions(nullptr);
52 EXPECT_EQ(log, std::vector<char>({'a', 'b', 'c'})) 53 EXPECT_EQ(log, std::vector<char>({'a', 'b', 'c'}))
53 << "the reactions should have been invoked"; 54 << "the reactions should have been invoked";
54 } 55 }
55 56
57 TEST(CustomElementReactionQueueTest, clear_duringInvoke) {
58 std::vector<char> log;
59 CustomElementReactionQueue* queue = new CustomElementReactionQueue();
60
61 queue->add(new TestReaction({new Log('a', log)}));
62 queue->add(new TestReaction({new Call(WTF::bind(
63 [](CustomElementReactionQueue* queue, Element*) { queue->clear(); },
64 wrapPersistent(queue)))}));
65 queue->add(new TestReaction({new Log('b', log)}));
66
67 queue->invokeReactions(nullptr);
68 EXPECT_EQ(log, std::vector<char>({'a'}))
69 << "only 'a' should be logged; the second log should have been cleared";
70 }
71
56 } // namespace blink 72 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698