Let base::Thread::Options pass in an unbound MessageLoopBase
This allows us to construct a SequenceManager and vend task queues
before launching a thread. This should be useful in blink for
launching workers (which currently have a worker scheduler on top of a
MessageLoop), if we need an IO Thread scheduler (it looks like we might
the IO thread is congested during startup) and for the BrowserThreadTest
with a BrowserUIThreadScheduler.
The message_pump_factory_ was added to base::Thread to support these
two use cases:
https://cs.chromium.org/search/?q=message_pump_factory&type=cs
Bug: 863341, 872372
Change-Id: Ic30052e8af4a9351467792e70b7d7b65027d8a9a
Reviewed-on: https://chromium-review.googlesource.com/c/1462801
Commit-Queue: Alex Clarke <[email protected]>
Auto-Submit: Alex Clarke <[email protected]>
Reviewed-by: Pavel Feldman <[email protected]>
Reviewed-by: Gabriel Charette <[email protected]>
Cr-Commit-Position: refs/heads/master@{#632741}
diff --git a/base/message_loop/message_pump_perftest.cc b/base/message_loop/message_pump_perftest.cc
index 6f900e6f3..68c7fd9 100644
--- a/base/message_loop/message_pump_perftest.cc
+++ b/base/message_loop/message_pump_perftest.cc
@@ -31,7 +31,7 @@
public:
ThreadForTest() : Thread("test") {}
- using Thread::message_loop;
+ using Thread::message_loop_base;
};
class ScheduleWorkTest : public testing::Test {
@@ -56,10 +56,7 @@
uint64_t schedule_calls = 0u;
do {
for (size_t i = 0; i < kBatchSize; ++i) {
- target_message_loop()
- ->GetMessageLoopBase()
- ->GetMessagePump()
- ->ScheduleWork();
+ target_message_loop_base()->GetMessagePump()->ScheduleWork();
schedule_calls++;
}
now = base::TimeTicks::Now();
@@ -75,7 +72,7 @@
base::ThreadTicks::Now() - thread_start;
min_batch_times_[index] = minimum;
max_batch_times_[index] = maximum;
- target_message_loop()->task_runner()->PostTask(
+ target_message_loop_base()->GetTaskRunner()->PostTask(
FROM_HERE, base::BindOnce(&ScheduleWorkTest::Increment,
base::Unretained(this), schedule_calls));
}
@@ -177,12 +174,12 @@
}
}
- MessageLoop* target_message_loop() {
+ MessageLoopBase* target_message_loop_base() {
#if defined(OS_ANDROID)
if (java_thread_)
- return java_thread_->message_loop();
+ return java_thread_->message_loop()->GetMessageLoopBase();
#endif
- return target_->message_loop();
+ return target_->message_loop_base();
}
private: