// 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/wrapper/cef_closure_task.h" void SignalEvent(CefRefPtr event) { event->Signal(); } void WaitForThread(CefThreadId thread_id, int64 delay_ms) { CefRefPtr event = CefWaitableEvent::CreateWaitableEvent(true, false); CefPostDelayedTask(thread_id, base::Bind(SignalEvent, event), delay_ms); event->Wait(); } void WaitForThread(CefRefPtr task_runner, int64 delay_ms) { CefRefPtr event = CefWaitableEvent::CreateWaitableEvent(true, false); task_runner->PostDelayedTask( CefCreateClosureTask(base::Bind(SignalEvent, event)), delay_ms); event->Wait(); } void RunOnThread(CefThreadId thread_id, const base::Callback& test_impl, CefRefPtr event) { if (!CefCurrentlyOn(thread_id)) { CefPostTask(thread_id, base::Bind(RunOnThread, thread_id, test_impl, event)); return; } test_impl.Run(); SignalEvent(event); } void RunOnThreadAsync( CefThreadId thread_id, const base::Callback)>& test_impl, CefRefPtr event) { if (!CefCurrentlyOn(thread_id)) { CefPostTask(thread_id, base::Bind(RunOnThreadAsync, thread_id, test_impl, event)); return; } test_impl.Run(event); }