Index: base/memory/weak_ptr_unittest.cc |
diff --git a/base/memory/weak_ptr_unittest.cc b/base/memory/weak_ptr_unittest.cc |
index e18a2079821a1306ad18aa669d7477743cec851c..405f38f4fdce9c517d921540fc3c47c0c6bc6efb 100644 |
--- a/base/memory/weak_ptr_unittest.cc |
+++ b/base/memory/weak_ptr_unittest.cc |
@@ -353,4 +353,33 @@ TEST(WeakPtrTest, Dereference) { |
EXPECT_EQ(data.member, ptr->member); |
} |
+struct WithRefCounting : RefCounted<WithRefCounting>, |
dominich
2012/06/18 15:32:44
I don't understand this. The WeakPtr is already re
|
+ SupportsWeakPtr<WithRefCounting> { |
+ protected: |
+ friend class base::RefCounted<WithRefCounting>; |
+ ~WithRefCounting() {} |
+}; |
+ |
+TEST(WeakPtrTest, WithRefCounting) { |
+ scoped_refptr<WithRefCounting> ref_ptr(new WithRefCounting); |
+ WeakPtr<WithRefCounting> weak_ptr = ref_ptr->AsWeakPtr(); |
+ EXPECT_EQ(ref_ptr.get(), weak_ptr.get()); |
+ ref_ptr = NULL; |
+ EXPECT_FALSE(weak_ptr); |
+} |
+ |
+struct SubtleWithRefCounting : WithRefCounting { |
+ SubtleWithRefCounting() : self(base::AsWeakPtr(this)) {} |
+ private: |
+ ~SubtleWithRefCounting() { |
+ EXPECT_EQ(this, self); |
+ } |
+ |
+ WeakPtr<SubtleWithRefCounting> self; |
+}; |
+ |
+TEST(WeakPtrTest, SubtleWithRefCounting) { |
+ scoped_refptr<SubtleWithRefCounting> ref_ptr(new SubtleWithRefCounting); |
+} |
+ |
} // namespace base |