// Copyright (c) 2013 The Chromium Embedded Framework 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 "tests/ceftests/thread_helper.h" #include #include "include/wrapper/cef_closure_task.h" void SignalEvent(CefRefPtr event) { event->Signal(); } void WaitForThread(CefThreadId thread_id, int64_t delay_ms) { CefRefPtr event = CefWaitableEvent::CreateWaitableEvent(true, false); CefPostDelayedTask(thread_id, base::BindOnce(SignalEvent, event), delay_ms); event->Wait(); } void WaitForThread(CefRefPtr task_runner, int64_t delay_ms) { CefRefPtr event = CefWaitableEvent::CreateWaitableEvent(true, false); task_runner->PostDelayedTask( CefCreateClosureTask(base::BindOnce(SignalEvent, event)), delay_ms); event->Wait(); } void RunOnThread(CefThreadId thread_id, base::OnceClosure test_impl, CefRefPtr event) { if (!CefCurrentlyOn(thread_id)) { CefPostTask(thread_id, base::BindOnce(RunOnThread, thread_id, std::move(test_impl), event)); return; } std::move(test_impl).Run(); SignalEvent(event); } void RunOnThreadAsync( CefThreadId thread_id, base::OnceCallback)> test_impl, CefRefPtr event) { if (!CefCurrentlyOn(thread_id)) { CefPostTask(thread_id, base::BindOnce(RunOnThreadAsync, thread_id, std::move(test_impl), event)); return; } std::move(test_impl).Run(event); }