1515
1616#include " absl/functional/any_invocable.h"
1717#include " api/task_queue/task_queue_base.h"
18+ #include " api/task_queue/test/mock_task_queue_base.h"
1819#include " api/units/time_delta.h"
1920#include " api/units/timestamp.h"
2021#include " rtc_base/event.h"
@@ -32,6 +33,7 @@ using ::testing::Invoke;
3233using ::testing::MockFunction;
3334using ::testing::NiceMock;
3435using ::testing::Return;
36+ using ::testing::WithArg;
3537
3638constexpr TimeDelta kTimeout = TimeDelta::Millis(1000 );
3739
@@ -41,21 +43,10 @@ class MockClosure {
4143 MOCK_METHOD (void , Delete, ());
4244};
4345
44- class MockTaskQueue : public TaskQueueBase {
46+ class MockTaskQueue : public MockTaskQueueBase {
4547 public:
4648 MockTaskQueue () : task_queue_setter_(this ) {}
4749
48- MOCK_METHOD (void , Delete, (), (override ));
49- MOCK_METHOD (void , PostTask, (absl::AnyInvocable<void () &&>), (override ));
50- MOCK_METHOD (void ,
51- PostDelayedTask,
52- (absl::AnyInvocable<void () &&>, TimeDelta),
53- (override ));
54- MOCK_METHOD (void ,
55- PostDelayedHighPrecisionTask,
56- (absl::AnyInvocable<void () &&>, TimeDelta),
57- (override ));
58-
5950 private:
6051 CurrentTaskQueueSetter task_queue_setter_;
6152};
@@ -67,23 +58,22 @@ class FakeTaskQueue : public TaskQueueBase {
6758
6859 void Delete () override {}
6960
70- void PostTask (absl::AnyInvocable<void () &&> task) override {
61+ void PostTaskImpl (absl::AnyInvocable<void () &&> task,
62+ const PostTaskTraits& /* traits*/ ,
63+ const Location& /* location*/ ) override {
7164 last_task_ = std::move (task);
7265 last_precision_ = absl::nullopt ;
7366 last_delay_ = TimeDelta::Zero ();
7467 }
7568
76- void PostDelayedTask (absl::AnyInvocable<void () &&> task,
77- TimeDelta delay) override {
69+ void PostDelayedTaskImpl (absl::AnyInvocable<void () &&> task,
70+ TimeDelta delay,
71+ const PostDelayedTaskTraits& traits,
72+ const Location& /* location*/ ) override {
7873 last_task_ = std::move (task);
79- last_precision_ = TaskQueueBase::DelayPrecision::kLow ;
80- last_delay_ = delay;
81- }
82-
83- void PostDelayedHighPrecisionTask (absl::AnyInvocable<void () &&> task,
84- TimeDelta delay) override {
85- last_task_ = std::move (task);
86- last_precision_ = TaskQueueBase::DelayPrecision::kHigh ;
74+ last_precision_ = traits.high_precision
75+ ? TaskQueueBase::DelayPrecision::kHigh
76+ : TaskQueueBase::DelayPrecision::kLow ;
8777 last_delay_ = delay;
8878 }
8979
@@ -339,8 +329,10 @@ TEST(RepeatingTaskTest, ClockIntegration) {
339329 SimulatedClock clock (Timestamp::Zero ());
340330
341331 NiceMock<MockTaskQueue> task_queue;
342- ON_CALL (task_queue, PostDelayedTask)
343- .WillByDefault ([&](absl::AnyInvocable<void () &&> task, TimeDelta delay) {
332+ ON_CALL (task_queue, PostDelayedTaskImpl)
333+ .WillByDefault ([&](absl::AnyInvocable<void () &&> task, TimeDelta delay,
334+ const MockTaskQueue::PostDelayedTaskTraits&,
335+ const Location&) {
344336 EXPECT_EQ (delay, expected_delay);
345337 delayed_task = std::move (task);
346338 });
@@ -368,10 +360,10 @@ TEST(RepeatingTaskTest, CanBeStoppedAfterTaskQueueDeletedTheRepeatingTask) {
368360 absl::AnyInvocable<void () &&> repeating_task;
369361
370362 MockTaskQueue task_queue;
371- EXPECT_CALL (task_queue, PostDelayedTask )
372- .WillOnce ([&](absl::AnyInvocable<void () &&> task, TimeDelta delay ) {
363+ EXPECT_CALL (task_queue, PostDelayedTaskImpl )
364+ .WillOnce (WithArg< 0 >( [&](absl::AnyInvocable<void () &&> task) {
373365 repeating_task = std::move (task);
374- });
366+ })) ;
375367
376368 RepeatingTaskHandle handle =
377369 RepeatingTaskHandle::DelayedStart (&task_queue, TimeDelta::Millis (100 ),
0 commit comments