| // Copyright 2014 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 "shell/shell_test_base.h" | 
 |  | 
 | #include "base/bind.h" | 
 | #include "base/command_line.h" | 
 | #include "base/files/file_path.h" | 
 | #include "base/files/file_util.h" | 
 | #include "base/logging.h" | 
 | #include "base/path_service.h" | 
 | #include "build/build_config.h" | 
 | #include "shell/filename_util.h" | 
 | #include "url/gurl.h" | 
 |  | 
 | namespace shell { | 
 | namespace test { | 
 |  | 
 | namespace { | 
 |  | 
 | void QuitIfRunning() { | 
 |   if (base::MessageLoop::current() && | 
 |       base::MessageLoop::current()->is_running()) { | 
 |     base::MessageLoop::current()->QuitWhenIdle(); | 
 |   } | 
 | } | 
 |  | 
 | }  // namespace | 
 |  | 
 | ShellTestBase::ShellTestBase() { | 
 | } | 
 |  | 
 | ShellTestBase::~ShellTestBase() { | 
 | } | 
 |  | 
 | void ShellTestBase::SetUp() { | 
 |   CHECK(shell_context_.Init()); | 
 |   SetUpTestApplications(); | 
 | } | 
 |  | 
 | void ShellTestBase::TearDown() { | 
 |   shell_context_.Shutdown(); | 
 | } | 
 |  | 
 | mojo::ScopedMessagePipeHandle ShellTestBase::ConnectToService( | 
 |     const GURL& application_url, | 
 |     const std::string& service_name) { | 
 |   mojo::ServiceProviderPtr services; | 
 |   shell_context_.application_manager()->ConnectToApplication( | 
 |       application_url, GURL(), mojo::GetProxy(&services), nullptr, | 
 |       base::Bind(&QuitIfRunning)); | 
 |   mojo::MessagePipe pipe; | 
 |   services->ConnectToService(service_name, pipe.handle1.Pass()); | 
 |   return pipe.handle0.Pass(); | 
 | } | 
 |  | 
 | #if !defined(OS_ANDROID) | 
 | void ShellTestBase::SetUpTestApplications() { | 
 |   // Set the URLResolver origin to be the same as the base file path for | 
 |   // local files. This is primarily for test convenience, so that references | 
 |   // to unknown mojo: urls that do not have specific local file or custom | 
 |   // mappings registered on the URL resolver are treated as shared libraries. | 
 |   base::FilePath service_dir; | 
 |   CHECK(PathService::Get(base::DIR_MODULE, &service_dir)); | 
 |   shell_context_.url_resolver()->SetMojoBaseURL(FilePathToFileURL(service_dir)); | 
 | } | 
 | #endif | 
 |  | 
 | }  // namespace test | 
 | }  // namespace shell |