Make sure that "current" rtc::Thread instances are always current for TaskQueueBase.
This is a necessary part of fulfilling the TaskQueueBase interface. If a thread does not register as the current TQ, yet offers the TQ interface, TQ 'current' checks will not work as expected and code that relies them (TaskQueueBase::Current() and IsCurrent()) will run in unexpected ways. Bug: webrtc:11572 Change-Id: Iab747bc474e74e6ce4f9e914cfd5b0578b19d19c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175080 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Tommi <tommi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31254}
This commit is contained in:
@ -37,9 +37,11 @@ TEST_P(TaskQueueTest, PostAndCheckCurrent) {
|
||||
rtc::Event event;
|
||||
auto queue = CreateTaskQueue(factory, "PostAndCheckCurrent");
|
||||
|
||||
// We're not running a task, so there shouldn't be a current queue.
|
||||
// We're not running a task, so |queue| shouldn't be current.
|
||||
// Note that because rtc::Thread also supports the TQ interface and
|
||||
// TestMainImpl::Init wraps the main test thread (bugs.webrtc.org/9714), that
|
||||
// means that TaskQueueBase::Current() will still return a valid value.
|
||||
EXPECT_FALSE(queue->IsCurrent());
|
||||
EXPECT_FALSE(TaskQueueBase::Current());
|
||||
|
||||
queue->PostTask(ToQueuedTask([&event, &queue] {
|
||||
EXPECT_TRUE(queue->IsCurrent());
|
||||
|
Reference in New Issue
Block a user