// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/test/test_message_loop.h" #include "base/compiler_specific.h" #include "base/message_loop/message_pump_type.h" #include "base/notreached.h" #include "base/run_loop.h" #include "base/test/task_environment.h" #include "build/build_config.h" namespace base { namespace { test::SingleThreadTaskEnvironment::MainThreadType GetMainThreadType( MessagePumpType type) { switch (type) { case MessagePumpType::DEFAULT: return test::SingleThreadTaskEnvironment::MainThreadType::DEFAULT; case MessagePumpType::IO: return test::SingleThreadTaskEnvironment::MainThreadType::IO; case MessagePumpType::UI: return test::SingleThreadTaskEnvironment::MainThreadType::UI; case MessagePumpType::CUSTOM: #if BUILDFLAG(IS_ANDROID) case MessagePumpType::JAVA: #elif BUILDFLAG(IS_APPLE) case MessagePumpType::NS_RUNLOOP: #endif NOTREACHED(); return test::SingleThreadTaskEnvironment::MainThreadType::DEFAULT; } } } // namespace TestMessageLoop::TestMessageLoop() = default; TestMessageLoop::TestMessageLoop(MessagePumpType type) : task_environment_(GetMainThreadType(type)) {} TestMessageLoop::~TestMessageLoop() { RunLoop().RunUntilIdle(); } } // namespace base