Index: base/memory/weak_ptr.cc |
diff --git a/base/memory/weak_ptr.cc b/base/memory/weak_ptr.cc |
index 9dec8fd6db9c29956673a79326efa4b22af2f3ad..e4e43b1d1b21e7ae5f6a0484d0835eae26d88c12 100644 |
--- a/base/memory/weak_ptr.cc |
+++ b/base/memory/weak_ptr.cc |
@@ -3,25 +3,33 @@ |
// found in the LICENSE file. |
#include "base/memory/weak_ptr.h" |
+#include "base/single_thread_task_runner.h" |
+#include "base/thread_task_runner_handle.h" |
namespace base { |
namespace internal { |
-WeakReference::Flag::Flag() : is_valid_(true) { |
+WeakReference::Flag::Flag() |
+ : sequence_checker_(ThreadTaskRunnerHandle::GetIfExists()), |
+ is_valid_(true) { |
} |
void WeakReference::Flag::Invalidate() { |
// The flag being invalidated with a single ref implies that there are no |
// weak pointers in existence. Allow deletion on other thread in this case. |
- DCHECK(thread_checker_.CalledOnValidThread() || HasOneRef()); |
+ DCHECK(sequence_checker_.CalledInSequence() || HasOneRef()); |
jar (doing other things)
2013/02/16 02:37:27
nit: Although the semantics may be as intended (to
|
is_valid_ = false; |
} |
bool WeakReference::Flag::IsValid() const { |
- DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(sequence_checker_.CalledInSequence()); |
return is_valid_; |
} |
+void WeakReference::Flag::DetachFromThread() { |
+ sequence_checker_.ChangeSequence(ThreadTaskRunnerHandle::GetIfExists()); |
jar (doing other things)
2013/02/16 02:37:27
nit: This "ChangeSequence" also seems confusing :-
|
+} |
+ |
WeakReference::Flag::~Flag() { |
} |