shell_test_base.cc revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "mojo/shell/shell_test_base.h" 646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/command_line.h" 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/file_util.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/files/file_path.h" 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/logging.h" 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/path_service.h" 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "build/build_config.h" 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "mojo/shell/context.h" 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "net/base/filename_util.h" 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "url/gurl.h" 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace mojo { 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace shell { 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace test { 2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)ShellTestBase::ShellTestBase() { 2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)ShellTestBase::~ShellTestBase() { 2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void ShellTestBase::InitMojo() { 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DCHECK(!message_loop_); 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DCHECK(!shell_context_); 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) message_loop_.reset(new base::MessageLoop()); 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) shell_context_.reset(new Context()); 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void ShellTestBase::LaunchServiceInProcess( 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const GURL& service_url, 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const std::string& service_name, 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ScopedMessagePipeHandle client_handle) { 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DCHECK(message_loop_); 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DCHECK(shell_context_); 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::FilePath base_dir; 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) CHECK(PathService::Get(base::DIR_EXE, &base_dir)); 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // On android, the library is bundled with the app. 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#if defined(OS_ANDROID) 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::FilePath service_dir; 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) CHECK(PathService::Get(base::DIR_MODULE, &service_dir)); 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // On Mac and Windows, libraries are dumped beside the executables. 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#elif defined(OS_MACOSX) || defined(OS_WIN) 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::FilePath service_dir(base_dir); 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#else 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // On Linux, they're under lib/. 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::FilePath service_dir(base_dir.AppendASCII("lib")); 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) shell_context_->mojo_url_resolver()->set_origin( 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) net::FilePathToFileURL(service_dir).spec()); 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) shell_context_->service_manager()->ConnectToService( 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) service_url, service_name, client_handle.Pass(), GURL()); 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 6146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace test 6246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace shell 6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace mojo 64