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

Unified Diff: base/memory/weak_ptr_unittest.cc

Issue 7013059: Fix base::internal::WeakReferenceOwner races. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/memory/weak_ptr.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/memory/weak_ptr_unittest.cc
diff --git a/base/memory/weak_ptr_unittest.cc b/base/memory/weak_ptr_unittest.cc
index 6c2a7e8dcbc5eb9e8c5091cae3848b76063555da..55f7428c92e769cc54ea665ea56c42cc31443032 100644
--- a/base/memory/weak_ptr_unittest.cc
+++ b/base/memory/weak_ptr_unittest.cc
@@ -6,6 +6,7 @@
#include "base/memory/weak_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "base/message_loop.h"
+#include "base/task.h"
#include "base/threading/thread.h"
namespace base {
@@ -38,8 +39,6 @@ struct Derived : Base {};
struct Producer : SupportsWeakPtr<Producer> {};
struct Consumer { WeakPtr<Producer> producer; };
-} // namespace
-
TEST(WeakPtrTest, Basic) {
int data;
WeakPtrFactory<int> factory(&data);
@@ -134,4 +133,20 @@ TEST(WeakPtrTest, SingleThreaded2) {
EXPECT_EQ(&producer, consumer->producer.get());
}
+TEST(WeakPtrTest, DeleteWeakPtrOnDifferentThread) {
+ Producer producer;
+ {
+ WeakPtr<Producer>* ptr = new WeakPtr<Producer>(producer.AsWeakPtr());
+ Thread thread("I delete WeakPtrs, w00t!");
+ thread.Start();
+ thread.message_loop()->PostTask(FROM_HERE,
+ new DeleteTask<WeakPtr<Producer> >(ptr));
+ // |thread| will be joined on destruction.
+ }
+ WeakPtr<Producer> weak_ptr = producer.AsWeakPtr();
+ EXPECT_TRUE(weak_ptr.get() != NULL);
+}
+
+} // namespace
+
} // namespace base
« no previous file with comments | « base/memory/weak_ptr.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698