blob: 24d9ed99a147c7c5a8d2db69557b3f891851cfa4 [file] [log] [blame]
akalin@chromium.org4fb2deb2012-12-28 04:58:00 +09001// 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.
4
5#include "base/sequence_checker_impl.h"
6
7#include "base/sequenced_task_runner.h"
8
9namespace base {
10
11SequenceCheckerImpl::SequenceCheckerImpl(
12 const scoped_refptr<SequencedTaskRunner>& sequenced_task_runner)
13 : sequenced_task_runner_(sequenced_task_runner) {}
14
15SequenceCheckerImpl::~SequenceCheckerImpl() {}
16
17bool SequenceCheckerImpl::CalledOnValidSequence() const {
18 AutoLock auto_lock(lock_);
19 return sequenced_task_runner_.get() ?
20 sequenced_task_runner_->RunsTasksOnCurrentThread() :
21 thread_checker_.CalledOnValidThread();
22}
23
24void SequenceCheckerImpl::ChangeSequence(
25 const scoped_refptr<SequencedTaskRunner>& sequenced_task_runner) {
26 AutoLock auto_lock(lock_);
27 sequenced_task_runner_ = sequenced_task_runner;
28 thread_checker_.DetachFromThread();
29}
30
31} // namespace base