blob: 4f5a9b0d0a9dd7818f61eb5bb7fe32f7f2fd1a0f [file] [log] [blame]
// 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 "include/base/internal/cef_thread_checker_impl.h"
namespace base {
namespace cef_internal {
ThreadCheckerImpl::ThreadCheckerImpl() : valid_thread_id_() {
EnsureThreadIdAssigned();
}
ThreadCheckerImpl::~ThreadCheckerImpl() {}
bool ThreadCheckerImpl::CalledOnValidThread() const {
EnsureThreadIdAssigned();
AutoLock auto_lock(lock_);
return valid_thread_id_ == PlatformThread::CurrentRef();
}
void ThreadCheckerImpl::DetachFromThread() {
AutoLock auto_lock(lock_);
valid_thread_id_ = PlatformThreadRef();
}
void ThreadCheckerImpl::EnsureThreadIdAssigned() const {
AutoLock auto_lock(lock_);
if (valid_thread_id_.is_null()) {
valid_thread_id_ = PlatformThread::CurrentRef();
}
}
} // namespace cef_internal
} // namespace base