| Index: base/sequence_checker_impl.h
|
| diff --git a/base/sequence_checker_impl.h b/base/sequence_checker_impl.h
|
| index e3c5fed508c433c60ed9e0b31db4fafc54e5d12b..8e2c06376739d75b394c41a558455dd636fc17ff 100644
|
| --- a/base/sequence_checker_impl.h
|
| +++ b/base/sequence_checker_impl.h
|
| @@ -6,30 +6,32 @@
|
| #define BASE_SEQUENCE_CHECKER_IMPL_H_
|
|
|
| #include "base/base_export.h"
|
| +#include "base/compiler_specific.h"
|
| #include "base/macros.h"
|
| +#include "base/sequence_token.h"
|
| #include "base/synchronization/lock.h"
|
| #include "base/threading/sequenced_worker_pool.h"
|
| #include "base/threading/thread_checker_impl.h"
|
|
|
| namespace base {
|
|
|
| -// 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 constructed
|
| -// on a thread that is not part of a SequencedWorkerPool.
|
| +// Real implementation of SequenceChecker for use in debug mode or for temporary
|
| +// use in release mode (e.g. to CHECK on a threading issue seen only in the
|
| +// wild).
|
| +//
|
| +// Note: You should almost always use the SequenceChecker class to get the right
|
| +// version for your build configuration.
|
| class BASE_EXPORT SequenceCheckerImpl {
|
| public:
|
| SequenceCheckerImpl();
|
| ~SequenceCheckerImpl();
|
|
|
| - // 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;
|
| + // Returns true if called in sequence with previous calls to this method and
|
| + // the constructor.
|
| + bool CalledOnValidSequencedThread() const WARN_UNUSED_RESULT;
|
|
|
| - // Unbinds the checker from the currently associated sequence. The
|
| - // checker will be re-bound on the next call to CalledOnValidSequence().
|
| + // Unbinds the checker from the currently associated sequence. The checker
|
| + // will be re-bound on the next call to CalledOnValidSequencedThread().
|
| void DetachFromSequence();
|
|
|
| private:
|
| @@ -38,11 +40,17 @@ class BASE_EXPORT SequenceCheckerImpl {
|
| // Guards all variables below.
|
| mutable Lock lock_;
|
|
|
| - // Used if |sequence_token_| is not valid.
|
| - ThreadCheckerImpl thread_checker_;
|
| - mutable bool sequence_token_assigned_;
|
| + // True when the SequenceChecker is bound to a sequence or a thread.
|
| + mutable bool is_assigned_ = false;
|
| +
|
| + mutable SequenceToken sequence_token_;
|
|
|
| - mutable SequencedWorkerPool::SequenceToken sequence_token_;
|
| + // TODO(gab): Remove this when SequencedWorkerPool is deprecated in favor of
|
| + // TaskScheduler. crbug.com/622400
|
| + mutable SequencedWorkerPool::SequenceToken sequenced_worker_pool_token_;
|
| +
|
| + // Used when |sequenced_worker_pool_token_| and |sequence_token_| are invalid.
|
| + ThreadCheckerImpl thread_checker_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SequenceCheckerImpl);
|
| };
|
|
|