diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /third_party/libwebrtc/test/run_loop.cc | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/test/run_loop.cc')
-rw-r--r-- | third_party/libwebrtc/test/run_loop.cc | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/third_party/libwebrtc/test/run_loop.cc b/third_party/libwebrtc/test/run_loop.cc new file mode 100644 index 0000000000..d54b4a4137 --- /dev/null +++ b/third_party/libwebrtc/test/run_loop.cc @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ +#include "test/run_loop.h" + +#include "rtc_base/time_utils.h" + +namespace webrtc { +namespace test { + +RunLoop::RunLoop() { + worker_thread_.WrapCurrent(); +} + +RunLoop::~RunLoop() { + worker_thread_.UnwrapCurrent(); +} + +TaskQueueBase* RunLoop::task_queue() { + return &worker_thread_; +} + +void RunLoop::Run() { + worker_thread_.ProcessMessages(WorkerThread::kForever); +} + +void RunLoop::Quit() { + socket_server_.FailNextWait(); +} + +void RunLoop::Flush() { + worker_thread_.PostTask([this]() { socket_server_.FailNextWait(); }); + // If a test clock is used, like with GlobalSimulatedTimeController then the + // thread will loop forever since time never increases. Since the clock is + // simulated, 0ms can be used as the loop delay, which will process all + // messages ready for execution. + int cms = rtc::GetClockForTesting() ? 0 : 1000; + worker_thread_.ProcessMessages(cms); +} + +RunLoop::FakeSocketServer::FakeSocketServer() = default; +RunLoop::FakeSocketServer::~FakeSocketServer() = default; + +void RunLoop::FakeSocketServer::FailNextWait() { + fail_next_wait_ = true; +} + +bool RunLoop::FakeSocketServer::Wait(int cms, bool process_io) { + if (fail_next_wait_) { + fail_next_wait_ = false; + return false; + } + return true; +} + +void RunLoop::FakeSocketServer::WakeUp() {} + +rtc::Socket* RunLoop::FakeSocketServer::CreateSocket(int family, int type) { + return nullptr; +} + +RunLoop::WorkerThread::WorkerThread(rtc::SocketServer* ss) + : rtc::Thread(ss), tq_setter_(this) {} + +} // namespace test +} // namespace webrtc |