1*6777b538SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "base/test/test_message_loop.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/compiler_specific.h" 8*6777b538SAndroid Build Coastguard Worker #include "base/message_loop/message_pump_type.h" 9*6777b538SAndroid Build Coastguard Worker #include "base/notreached.h" 10*6777b538SAndroid Build Coastguard Worker #include "base/run_loop.h" 11*6777b538SAndroid Build Coastguard Worker #include "base/test/task_environment.h" 12*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Worker namespace base { 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker namespace { 17*6777b538SAndroid Build Coastguard Worker GetMainThreadType(MessagePumpType type)18*6777b538SAndroid Build Coastguard Workertest::SingleThreadTaskEnvironment::MainThreadType GetMainThreadType( 19*6777b538SAndroid Build Coastguard Worker MessagePumpType type) { 20*6777b538SAndroid Build Coastguard Worker switch (type) { 21*6777b538SAndroid Build Coastguard Worker case MessagePumpType::DEFAULT: 22*6777b538SAndroid Build Coastguard Worker return test::SingleThreadTaskEnvironment::MainThreadType::DEFAULT; 23*6777b538SAndroid Build Coastguard Worker case MessagePumpType::IO: 24*6777b538SAndroid Build Coastguard Worker return test::SingleThreadTaskEnvironment::MainThreadType::IO; 25*6777b538SAndroid Build Coastguard Worker case MessagePumpType::UI: 26*6777b538SAndroid Build Coastguard Worker return test::SingleThreadTaskEnvironment::MainThreadType::UI; 27*6777b538SAndroid Build Coastguard Worker case MessagePumpType::CUSTOM: 28*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_ANDROID) 29*6777b538SAndroid Build Coastguard Worker case MessagePumpType::JAVA: 30*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_APPLE) 31*6777b538SAndroid Build Coastguard Worker case MessagePumpType::NS_RUNLOOP: 32*6777b538SAndroid Build Coastguard Worker #endif 33*6777b538SAndroid Build Coastguard Worker NOTREACHED(); 34*6777b538SAndroid Build Coastguard Worker return test::SingleThreadTaskEnvironment::MainThreadType::DEFAULT; 35*6777b538SAndroid Build Coastguard Worker } 36*6777b538SAndroid Build Coastguard Worker } 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker } // namespace 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker TestMessageLoop::TestMessageLoop() = default; 41*6777b538SAndroid Build Coastguard Worker TestMessageLoop(MessagePumpType type)42*6777b538SAndroid Build Coastguard WorkerTestMessageLoop::TestMessageLoop(MessagePumpType type) 43*6777b538SAndroid Build Coastguard Worker : task_environment_(GetMainThreadType(type)) {} 44*6777b538SAndroid Build Coastguard Worker ~TestMessageLoop()45*6777b538SAndroid Build Coastguard WorkerTestMessageLoop::~TestMessageLoop() { 46*6777b538SAndroid Build Coastguard Worker RunLoop().RunUntilIdle(); 47*6777b538SAndroid Build Coastguard Worker } 48*6777b538SAndroid Build Coastguard Worker 49*6777b538SAndroid Build Coastguard Worker } // namespace base 50