| Index: base/sequence_checker_impl.h
|
| diff --git a/base/sequence_checker_impl.h b/base/sequence_checker_impl.h
|
| index ccd119831f5abe9eb2c53a8606430610cf4c97cc..741aafee645946791a95515cad1d1833f10aaec8 100644
|
| --- a/base/sequence_checker_impl.h
|
| +++ b/base/sequence_checker_impl.h
|
| @@ -7,48 +7,42 @@
|
|
|
| #include "base/base_export.h"
|
| #include "base/basictypes.h"
|
| -#include "base/memory/ref_counted.h"
|
| #include "base/synchronization/lock.h"
|
| +#include "base/threading/sequenced_worker_pool.h"
|
| #include "base/threading/thread_checker_impl.h"
|
|
|
| namespace base {
|
|
|
| -class SequencedTaskRunner;
|
| -
|
| // SequenceCheckerImpl is used to help verify that some methods of a
|
| // class are called in sequence -- that is, called from the same
|
| // SequencedTaskRunner. It is a generalization of ThreadChecker; in
|
| -// particular, it behaves exactly like ThreadChecker if its passed a
|
| -// NULL SequencedTaskRunner.
|
| +// particular, it behaves exactly like ThreadChecker if constructed
|
| +// on a thread that is not part of a SequencedWorkerPool.
|
| class BASE_EXPORT SequenceCheckerImpl {
|
| public:
|
| - // |sequenced_task_runner| can be NULL. In that case, this object
|
| - // behaves exactly like a ThreadChecker bound to the current thread,
|
| - // i.e. CalledOnValidSequence() behaves like CalledOnValidThread().
|
| - explicit SequenceCheckerImpl(
|
| - const scoped_refptr<SequencedTaskRunner>& sequenced_task_runner);
|
| + SequenceCheckerImpl();
|
| ~SequenceCheckerImpl();
|
|
|
| - // Returns whether the we are being called on the underyling
|
| - // SequencedTaskRunner. If we're not bound to a
|
| - // |sequenced_task_runner|, returns whether we are being called on
|
| - // the underlying ThreadChecker's thread.
|
| - bool CalledOnValidSequence() const;
|
| + // Returns whether the we are being called on the same sequence token
|
| + // as previous calls. If there is no associated sequence, then returns
|
| + // whether we are being called on the underlying ThreadChecker's thread.
|
| + bool CalledOnValidSequencedThread() const;
|
|
|
| - // Changes the underyling SequencedTaskRunner.
|
| - // |sequenced_task_runner| can be NULL. In that case, this object
|
| - // behaves exactly like a ThreadChecker that has been detached from
|
| - // its thread, i.e. we will be bound to the thread on which we next
|
| - // call CalledOnValidSequence().
|
| - void ChangeSequence(
|
| - const scoped_refptr<SequencedTaskRunner>& sequenced_task_runner);
|
| + // Unbinds the checker from the currently associated sequence. The
|
| + // checker will be re-bound on the next call to CalledOnValidSequence().
|
| + void DetachFromSequence();
|
|
|
| private:
|
| + void EnsureSequenceTokenAssigned() const;
|
| +
|
| // Guards all variables below.
|
| mutable Lock lock_;
|
| - scoped_refptr<SequencedTaskRunner> sequenced_task_runner_;
|
| - // Used if |sequenced_task_runner_| is NULL.
|
| +
|
| + // Used if |sequence_token_| is not valid.
|
| ThreadCheckerImpl thread_checker_;
|
| + mutable bool sequence_token_assigned_;
|
| +
|
| + mutable SequencedWorkerPool::SequenceToken sequence_token_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SequenceCheckerImpl);
|
| };
|
|
|