15
15
16
16
#include " absl/functional/any_invocable.h"
17
17
#include " api/task_queue/task_queue_base.h"
18
+ #include " api/task_queue/test/mock_task_queue_base.h"
18
19
#include " api/units/time_delta.h"
19
20
#include " api/units/timestamp.h"
20
21
#include " rtc_base/event.h"
@@ -32,6 +33,7 @@ using ::testing::Invoke;
32
33
using ::testing::MockFunction;
33
34
using ::testing::NiceMock;
34
35
using ::testing::Return;
36
+ using ::testing::WithArg;
35
37
36
38
constexpr TimeDelta kTimeout = TimeDelta::Millis(1000 );
37
39
@@ -41,21 +43,10 @@ class MockClosure {
41
43
MOCK_METHOD (void , Delete, ());
42
44
};
43
45
44
- class MockTaskQueue : public TaskQueueBase {
46
+ class MockTaskQueue : public MockTaskQueueBase {
45
47
public:
46
48
MockTaskQueue () : task_queue_setter_(this ) {}
47
49
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
-
59
50
private:
60
51
CurrentTaskQueueSetter task_queue_setter_;
61
52
};
@@ -67,23 +58,22 @@ class FakeTaskQueue : public TaskQueueBase {
67
58
68
59
void Delete () override {}
69
60
70
- void PostTask (absl::AnyInvocable<void () &&> task) override {
61
+ void PostTaskImpl (absl::AnyInvocable<void () &&> task,
62
+ const PostTaskTraits& /* traits*/ ,
63
+ const Location& /* location*/ ) override {
71
64
last_task_ = std::move (task);
72
65
last_precision_ = absl::nullopt ;
73
66
last_delay_ = TimeDelta::Zero ();
74
67
}
75
68
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 {
78
73
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 ;
87
77
last_delay_ = delay;
88
78
}
89
79
@@ -339,8 +329,10 @@ TEST(RepeatingTaskTest, ClockIntegration) {
339
329
SimulatedClock clock (Timestamp::Zero ());
340
330
341
331
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&) {
344
336
EXPECT_EQ (delay, expected_delay);
345
337
delayed_task = std::move (task);
346
338
});
@@ -368,10 +360,10 @@ TEST(RepeatingTaskTest, CanBeStoppedAfterTaskQueueDeletedTheRepeatingTask) {
368
360
absl::AnyInvocable<void () &&> repeating_task;
369
361
370
362
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) {
373
365
repeating_task = std::move (task);
374
- });
366
+ })) ;
375
367
376
368
RepeatingTaskHandle handle =
377
369
RepeatingTaskHandle::DelayedStart (&task_queue, TimeDelta::Millis (100 ),
0 commit comments