[Media Router] Add integration tests and e2e tests for media router and presentation...
[chromium-blink-merge.git] / components / scheduler / test / lazy_scheduler_message_loop_delegate_for_tests.cc
blob999d8567a1f03be79f526b42b6aa6340254a80df
1 // Copyright 2015 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.
5 #include "components/scheduler/test/lazy_scheduler_message_loop_delegate_for_tests.h"
7 namespace scheduler {
9 // static
10 scoped_refptr<LazySchedulerMessageLoopDelegateForTests>
11 LazySchedulerMessageLoopDelegateForTests::Create() {
12 return make_scoped_refptr(new LazySchedulerMessageLoopDelegateForTests());
15 LazySchedulerMessageLoopDelegateForTests::
16 LazySchedulerMessageLoopDelegateForTests()
17 : message_loop_(base::MessageLoop::current()),
18 thread_id_(base::PlatformThread::CurrentId()) {
21 LazySchedulerMessageLoopDelegateForTests::
22 ~LazySchedulerMessageLoopDelegateForTests() {
25 base::MessageLoop* LazySchedulerMessageLoopDelegateForTests::EnsureMessageLoop()
26 const {
27 if (message_loop_)
28 return message_loop_;
29 DCHECK(RunsTasksOnCurrentThread());
30 message_loop_ = base::MessageLoop::current();
31 DCHECK(message_loop_);
32 for (auto& observer : pending_observers_) {
33 message_loop_->AddTaskObserver(observer);
35 pending_observers_.clear();
36 return message_loop_;
39 bool LazySchedulerMessageLoopDelegateForTests::HasMessageLoop() const {
40 return message_loop_ != nullptr;
43 bool LazySchedulerMessageLoopDelegateForTests::PostDelayedTask(
44 const tracked_objects::Location& from_here,
45 const base::Closure& task,
46 base::TimeDelta delay) {
47 return EnsureMessageLoop()->task_runner()->PostDelayedTask(from_here, task,
48 delay);
51 bool LazySchedulerMessageLoopDelegateForTests::PostNonNestableDelayedTask(
52 const tracked_objects::Location& from_here,
53 const base::Closure& task,
54 base::TimeDelta delay) {
55 return EnsureMessageLoop()->task_runner()->PostNonNestableDelayedTask(
56 from_here, task, delay);
59 bool LazySchedulerMessageLoopDelegateForTests::RunsTasksOnCurrentThread()
60 const {
61 return thread_id_ == base::PlatformThread::CurrentId();
64 bool LazySchedulerMessageLoopDelegateForTests::IsNested() const {
65 return EnsureMessageLoop()->IsNested();
68 void LazySchedulerMessageLoopDelegateForTests::AddTaskObserver(
69 base::MessageLoop::TaskObserver* task_observer) {
70 if (!HasMessageLoop()) {
71 pending_observers_.insert(task_observer);
72 return;
74 EnsureMessageLoop()->AddTaskObserver(task_observer);
77 void LazySchedulerMessageLoopDelegateForTests::RemoveTaskObserver(
78 base::MessageLoop::TaskObserver* task_observer) {
79 if (!HasMessageLoop()) {
80 pending_observers_.erase(task_observer);
81 return;
83 EnsureMessageLoop()->RemoveTaskObserver(task_observer);
86 } // namespace scheduler