security/sandbox/chromium/base/sequence_checker_impl.h

Wed, 31 Dec 2014 07:16:47 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:16:47 +0100
branch
TOR_BUG_9701
changeset 3
141e0f1194b1
permissions
-rw-r--r--

Revert simplistic fix pending revisit of Mozilla integration attempt.

     1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
     2 // Use of this source code is governed by a BSD-style license that can be
     3 // found in the LICENSE file.
     5 #ifndef BASE_SEQUENCE_CHECKER_IMPL_H_
     6 #define BASE_SEQUENCE_CHECKER_IMPL_H_
     8 #include "base/base_export.h"
     9 #include "base/basictypes.h"
    10 #include "base/synchronization/lock.h"
    11 #include "base/threading/sequenced_worker_pool.h"
    12 #include "base/threading/thread_checker_impl.h"
    14 namespace base {
    16 // SequenceCheckerImpl is used to help verify that some methods of a
    17 // class are called in sequence -- that is, called from the same
    18 // SequencedTaskRunner. It is a generalization of ThreadChecker; in
    19 // particular, it behaves exactly like ThreadChecker if constructed
    20 // on a thread that is not part of a SequencedWorkerPool.
    21 class BASE_EXPORT SequenceCheckerImpl {
    22  public:
    23   SequenceCheckerImpl();
    24   ~SequenceCheckerImpl();
    26   // Returns whether the we are being called on the same sequence token
    27   // as previous calls. If there is no associated sequence, then returns
    28   // whether we are being called on the underlying ThreadChecker's thread.
    29   bool CalledOnValidSequencedThread() const;
    31   // Unbinds the checker from the currently associated sequence. The
    32   // checker will be re-bound on the next call to CalledOnValidSequence().
    33   void DetachFromSequence();
    35  private:
    36   void EnsureSequenceTokenAssigned() const;
    38   // Guards all variables below.
    39   mutable Lock lock_;
    41   // Used if |sequence_token_| is not valid.
    42   ThreadCheckerImpl thread_checker_;
    43   mutable bool sequence_token_assigned_;
    45   mutable SequencedWorkerPool::SequenceToken sequence_token_;
    47   DISALLOW_COPY_AND_ASSIGN(SequenceCheckerImpl);
    48 };
    50 }  // namespace base
    52 #endif  // BASE_SEQUENCE_CHECKER_IMPL_H_

mercurial