diff options
Diffstat (limited to 'chromium/cc/trees/proxy.cc')
-rw-r--r-- | chromium/cc/trees/proxy.cc | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/chromium/cc/trees/proxy.cc b/chromium/cc/trees/proxy.cc new file mode 100644 index 00000000000..c8dacafb234 --- /dev/null +++ b/chromium/cc/trees/proxy.cc @@ -0,0 +1,84 @@ +// Copyright 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 "cc/trees/proxy.h" + +#include "base/message_loop/message_loop_proxy.h" +#include "base/single_thread_task_runner.h" + +namespace cc { + +base::SingleThreadTaskRunner* Proxy::MainThreadTaskRunner() const { + return main_task_runner_.get(); +} + +bool Proxy::HasImplThread() const { return !!impl_task_runner_.get(); } + +base::SingleThreadTaskRunner* Proxy::ImplThreadTaskRunner() const { + return impl_task_runner_.get(); +} + +bool Proxy::IsMainThread() const { +#ifndef NDEBUG + DCHECK(main_task_runner_.get()); + if (impl_thread_is_overridden_) + return false; + return main_task_runner_->BelongsToCurrentThread(); +#else + return true; +#endif +} + +bool Proxy::IsImplThread() const { +#ifndef NDEBUG + if (impl_thread_is_overridden_) + return true; + if (!impl_task_runner_.get()) + return false; + return impl_task_runner_->BelongsToCurrentThread(); +#else + return true; +#endif +} + +#ifndef NDEBUG +void Proxy::SetCurrentThreadIsImplThread(bool is_impl_thread) { + impl_thread_is_overridden_ = is_impl_thread; +} +#endif + +bool Proxy::IsMainThreadBlocked() const { +#ifndef NDEBUG + return is_main_thread_blocked_; +#else + return true; +#endif +} + +#ifndef NDEBUG +void Proxy::SetMainThreadBlocked(bool is_main_thread_blocked) { + is_main_thread_blocked_ = is_main_thread_blocked; +} +#endif + +Proxy::Proxy( + scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) + : main_task_runner_(base::MessageLoopProxy::current()), +#ifdef NDEBUG + impl_task_runner_(impl_task_runner) {} +#else + impl_task_runner_(impl_task_runner), + impl_thread_is_overridden_(false), + is_main_thread_blocked_(false) {} +#endif + +Proxy::~Proxy() { + DCHECK(IsMainThread()); +} + +std::string Proxy::SchedulerStateAsStringForTesting() { + return ""; +} + +} // namespace cc |