Index: third_party/WebKit/Source/bindings/core/v8/TraceWrapperMemberTest.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/TraceWrapperMemberTest.cpp b/third_party/WebKit/Source/bindings/core/v8/TraceWrapperMemberTest.cpp |
index 3a3b637acd1e14c04beb1355fd09ed4b988f5117..4a48d706c35171243b0576a098b65972feccdb54 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/TraceWrapperMemberTest.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/TraceWrapperMemberTest.cpp |
@@ -9,9 +9,13 @@ |
namespace blink { |
-TEST(TraceWrapperMemberTest, HeapVectorSwap) { |
- typedef TraceWrapperMember<DeathAwareScriptWrappable> Wrapper; |
+namespace { |
+ |
+using Wrapper = TraceWrapperMember<DeathAwareScriptWrappable>; |
+} // namespace |
+ |
+TEST(TraceWrapperMemberTest, HeapVectorSwap) { |
HeapVector<Wrapper> vector1; |
DeathAwareScriptWrappable* parent1 = DeathAwareScriptWrappable::create(); |
DeathAwareScriptWrappable* child1 = DeathAwareScriptWrappable::create(); |
@@ -28,8 +32,6 @@ TEST(TraceWrapperMemberTest, HeapVectorSwap) { |
} |
TEST(TraceWrapperMemberTest, HeapVectorSwap2) { |
- typedef TraceWrapperMember<DeathAwareScriptWrappable> Wrapper; |
- |
HeapVector<Wrapper> vector1; |
DeathAwareScriptWrappable* parent1 = DeathAwareScriptWrappable::create(); |
DeathAwareScriptWrappable* child1 = DeathAwareScriptWrappable::create(); |
@@ -47,4 +49,47 @@ TEST(TraceWrapperMemberTest, HeapVectorSwap2) { |
EXPECT_EQ(child1, vector2.front().get()); |
} |
+TEST(TraceWrapperMemberTest, HeapHashSet) { |
+ HeapHashSet<Wrapper> set; |
+ DeathAwareScriptWrappable* parent = DeathAwareScriptWrappable::create(); |
+ |
+ // Loop enough so that underlying HashTable will rehash several times. |
+ for (int i = 1; i < 10000; ++i) { |
+ DeathAwareScriptWrappable* child = DeathAwareScriptWrappable::create(); |
+ set.insert(Wrapper(parent, child)); |
+ } |
+ EXPECT_EQ(9999u, set.size()); |
+ |
+ HeapHashSet<Wrapper> set2; |
+ swap(set, set2); |
+ EXPECT_EQ(0u, set.size()); |
+ EXPECT_EQ(9999u, set2.size()); |
+ |
+ for (int i = 1; i < 10000; ++i) { |
+ auto wrapper = set2.takeAny(); |
+ EXPECT_EQ(wrapper.parent(), parent); |
+ } |
+ |
+ EXPECT_EQ(0u, set2.size()); |
+} |
+ |
+TEST(TraceWrapperMemberTest, HeapHashMapValue) { |
+ HeapHashMap<int, Wrapper> map; |
+ DeathAwareScriptWrappable* parent = DeathAwareScriptWrappable::create(); |
+ |
+ // Loop enough so that underlying HashTable will rehash several times. |
+ for (int i = 1; i < 10000; ++i) { |
+ DeathAwareScriptWrappable* child = DeathAwareScriptWrappable::create(); |
+ map.insert(i, Wrapper(parent, child)); |
+ } |
+ EXPECT_EQ(9999u, map.size()); |
+ |
+ for (int i = 1; i < 10000; ++i) { |
+ auto wrapper = map.take(i); |
+ EXPECT_EQ(wrapper.parent(), parent); |
+ } |
+ |
+ EXPECT_EQ(0u, map.size()); |
+} |
+ |
} // namespace blink |