// Copyright (c) 2011 The Chromium Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#include "base/threading/thread_checker_impl.h"namespacebase{ThreadCheckerImpl::ThreadCheckerImpl():valid_thread_id_(){EnsureThreadIdAssigned();}ThreadCheckerImpl::~ThreadCheckerImpl(){}boolThreadCheckerImpl::CalledOnValidThread()const{EnsureThreadIdAssigned();AutoLockauto_lock(lock_);returnvalid_thread_id_==PlatformThread::CurrentRef();}voidThreadCheckerImpl::DetachFromThread(){AutoLockauto_lock(lock_);valid_thread_id_=PlatformThreadRef();}voidThreadCheckerImpl::EnsureThreadIdAssigned()const{AutoLockauto_lock(lock_);if(valid_thread_id_.is_null()){valid_thread_id_=PlatformThread::CurrentRef();}}}// namespace base