metronome_like_task_queue_test.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // Copyright 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef THIRD_PARTY_WEBRTC_OVERRIDES_TEST_METRONOME_LIKE_TASK_QUEUE_TEST_H_
  5. #define THIRD_PARTY_WEBRTC_OVERRIDES_TEST_METRONOME_LIKE_TASK_QUEUE_TEST_H_
  6. #include <functional>
  7. #include <memory>
  8. #include "base/test/task_environment.h"
  9. #include "base/time/time.h"
  10. #include "testing/gtest/include/gtest/gtest.h"
  11. #include "third_party/webrtc/api/task_queue/task_queue_factory.h"
  12. #include "third_party/webrtc/rtc_base/system/rtc_export.h"
  13. namespace blink {
  14. class RTC_EXPORT MetronomeLikeTaskQueueProvider {
  15. public:
  16. virtual ~MetronomeLikeTaskQueueProvider() = default;
  17. virtual void Initialize() = 0;
  18. virtual base::TimeDelta DeltaToNextTick() const = 0;
  19. virtual base::TimeDelta MetronomeTick() const = 0;
  20. virtual webrtc::TaskQueueBase* TaskQueue() const = 0;
  21. };
  22. class RTC_EXPORT MetronomeLikeTaskQueueTest
  23. : public ::testing::TestWithParam<
  24. std::function<std::unique_ptr<MetronomeLikeTaskQueueProvider>()>> {
  25. public:
  26. MetronomeLikeTaskQueueTest()
  27. : task_environment_(
  28. base::test::TaskEnvironment::ThreadingMode::MULTIPLE_THREADS,
  29. base::test::TaskEnvironment::TimeSource::MOCK_TIME),
  30. provider_(GetParam()()) {}
  31. void SetUp() override {
  32. provider_->Initialize();
  33. task_environment_.FastForwardBy(provider_->DeltaToNextTick());
  34. }
  35. void TearDown() override { provider_.reset(); }
  36. protected:
  37. base::test::TaskEnvironment task_environment_;
  38. std::unique_ptr<MetronomeLikeTaskQueueProvider> provider_;
  39. };
  40. } // namespace blink
  41. #endif // THIRD_PARTY_WEBRTC_OVERRIDES_TEST_METRONOME_LIKE_TASK_QUEUE_TEST_H_