1 // Copyright 2014 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. 4 5 #include "mojo/shell/shell_test_base.h" 6 7 #include "base/command_line.h" 8 #include "base/files/file_path.h" 9 #include "base/files/file_util.h" 10 #include "base/logging.h" 11 #include "base/path_service.h" 12 #include "build/build_config.h" 13 #include "net/base/filename_util.h" 14 #include "net/test/embedded_test_server/embedded_test_server.h" 15 #include "url/gurl.h" 16 17 namespace mojo { 18 namespace shell { 19 namespace test { 20 21 ShellTestBase::ShellTestBase() { 22 } 23 24 ShellTestBase::~ShellTestBase() { 25 } 26 27 void ShellTestBase::SetUp() { 28 shell_context_.Init(); 29 test_server_.reset(new net::test_server::EmbeddedTestServer()); 30 ASSERT_TRUE(test_server_->InitializeAndWaitUntilReady()); 31 base::FilePath service_dir; 32 CHECK(PathService::Get(base::DIR_MODULE, &service_dir)); 33 test_server_->ServeFilesFromDirectory(service_dir); 34 } 35 36 ScopedMessagePipeHandle ShellTestBase::ConnectToService( 37 const GURL& application_url, 38 const std::string& service_name) { 39 // Set the MojoURLResolver origin to be the same as the base file path for 40 // local files. This is primarily for test convenience, so that references 41 // to unknown mojo: urls that do not have specific local file or custom 42 // mappings registered on the URL resolver are treated as shared libraries. 43 base::FilePath service_dir; 44 CHECK(PathService::Get(base::DIR_MODULE, &service_dir)); 45 shell_context_.mojo_url_resolver()->SetBaseURL( 46 net::FilePathToFileURL(service_dir)); 47 48 return shell_context_.ConnectToServiceByName( 49 application_url, service_name).Pass(); 50 } 51 52 ScopedMessagePipeHandle ShellTestBase::ConnectToServiceViaNetwork( 53 const GURL& application_url, 54 const std::string& service_name) { 55 shell_context_.mojo_url_resolver()->SetBaseURL( 56 test_server_->base_url()); 57 58 return shell_context_.ConnectToServiceByName( 59 application_url, service_name).Pass(); 60 } 61 62 } // namespace test 63 } // namespace shell 64 } // namespace mojo 65