summaryrefslogtreecommitdiffstats
path: root/base/sequence_checker_impl.cc
diff options
context:
space:
mode:
authorvandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-20 11:51:28 +0000
committervandebo@chromium.org <vandebo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-20 11:51:28 +0000
commit87738f7d5cdb54e524520144f28baa78e38098e2 (patch)
tree3c1db8b038a88450c85a4703b5f399ad9e23f942 /base/sequence_checker_impl.cc
parenta077da7b45007de882a8d843ad084ff2eba14c2f (diff)
downloadchromium_src-87738f7d5cdb54e524520144f28baa78e38098e2.zip
chromium_src-87738f7d5cdb54e524520144f28baa78e38098e2.tar.gz
chromium_src-87738f7d5cdb54e524520144f28baa78e38098e2.tar.bz2
Revert 211956 "base: Change WeakPtr to use SequenceChecker inste..."
As well as revert 212725 "base: Make SequenceChecker death tests multi-threads work correctly." See http://crbug.com/261448 > base: Change WeakPtr to use SequenceChecker instead of ThreadChecker. > > This will enable WeakPtr to be used in SequencedWorkerPool, et al. with a sequence token. > > This is a continuation of issue: https://chromiumcodereview.appspot.com/18231002/ > > The original issue got messed up by a rietveld bug, so refer there for history and comments. > > BUG=165590 > > Review URL: https://chromiumcodereview.appspot.com/18501008 TBR=tommycli@chromium.org Review URL: https://chromiumcodereview.appspot.com/19695005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@212780 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/sequence_checker_impl.cc')
-rw-r--r--base/sequence_checker_impl.cc39
1 files changed, 12 insertions, 27 deletions
diff --git a/base/sequence_checker_impl.cc b/base/sequence_checker_impl.cc
index e95b8ee..24d9ed9 100644
--- a/base/sequence_checker_impl.cc
+++ b/base/sequence_checker_impl.cc
@@ -4,43 +4,28 @@
#include "base/sequence_checker_impl.h"
+#include "base/sequenced_task_runner.h"
+
namespace base {
-SequenceCheckerImpl::SequenceCheckerImpl()
- : sequence_token_assigned_(false) {
- AutoLock auto_lock(lock_);
- EnsureSequenceTokenAssigned();
-}
+SequenceCheckerImpl::SequenceCheckerImpl(
+ const scoped_refptr<SequencedTaskRunner>& sequenced_task_runner)
+ : sequenced_task_runner_(sequenced_task_runner) {}
SequenceCheckerImpl::~SequenceCheckerImpl() {}
-bool SequenceCheckerImpl::CalledOnValidSequencedThread() const {
+bool SequenceCheckerImpl::CalledOnValidSequence() const {
AutoLock auto_lock(lock_);
- EnsureSequenceTokenAssigned();
-
- // If this thread is not associated with a SequencedWorkerPool,
- // SequenceChecker behaves as a ThreadChecker. See header for details.
- if (!sequence_token_.IsValid())
- return thread_checker_.CalledOnValidThread();
-
- return sequence_token_.Equals(
- SequencedWorkerPool::GetSequenceTokenForCurrentThread());
+ return sequenced_task_runner_.get() ?
+ sequenced_task_runner_->RunsTasksOnCurrentThread() :
+ thread_checker_.CalledOnValidThread();
}
-void SequenceCheckerImpl::DetachFromSequence() {
+void SequenceCheckerImpl::ChangeSequence(
+ const scoped_refptr<SequencedTaskRunner>& sequenced_task_runner) {
AutoLock auto_lock(lock_);
+ sequenced_task_runner_ = sequenced_task_runner;
thread_checker_.DetachFromThread();
- sequence_token_assigned_ = false;
- sequence_token_ = SequencedWorkerPool::SequenceToken();
-}
-
-void SequenceCheckerImpl::EnsureSequenceTokenAssigned() const {
- lock_.AssertAcquired();
- if (sequence_token_assigned_)
- return;
-
- sequence_token_assigned_ = true;
- sequence_token_ = SequencedWorkerPool::GetSequenceTokenForCurrentThread();
}
} // namespace base