Index: mojo/shell/shell_test_base.cc |
diff --git a/mojo/shell/shell_test_base.cc b/mojo/shell/shell_test_base.cc |
index f258af474622e89d53bf720e298ac202fe07c7c6..ebe3405169fa5d1e2b456e8cbe2606b851a517ff 100644 |
--- a/mojo/shell/shell_test_base.cc |
+++ b/mojo/shell/shell_test_base.cc |
@@ -4,6 +4,15 @@ |
#include "mojo/shell/shell_test_base.h" |
+#include "base/command_line.h" |
+#include "base/file_util.h" |
+#include "base/files/file_path.h" |
+#include "base/logging.h" |
+#include "build/build_config.h" |
+#include "mojo/shell/context.h" |
+#include "net/base/filename_util.h" |
+#include "url/gurl.h" |
+ |
namespace mojo { |
namespace shell { |
namespace test { |
@@ -14,6 +23,35 @@ ShellTestBase::ShellTestBase() { |
ShellTestBase::~ShellTestBase() { |
} |
+void ShellTestBase::InitMojo() { |
+ DCHECK(!message_loop_); |
+ DCHECK(!shell_context_); |
+ message_loop_.reset(new base::MessageLoop()); |
+ shell_context_.reset(new Context()); |
+} |
+ |
+void ShellTestBase::LaunchServiceInProcess( |
+ const GURL& service_url, |
+ const std::string& service_name, |
+ ScopedMessagePipeHandle client_handle) { |
+ DCHECK(message_loop_); |
+ DCHECK(shell_context_); |
+ |
+ base::FilePath base_dir = base::MakeAbsoluteFilePath( |
+ base::CommandLine::ForCurrentProcess()->GetProgram().DirName()); |
+ // On Mac and Windows, libraries are dumped beside the executables. |
+#if defined(OS_MACOSX) || defined(OS_WIN) |
+ base::FilePath service_dir(base_dir); |
+#else |
+ // On Linux, they're under lib/. |
+ base::FilePath service_dir(base_dir.AppendASCII("lib")); |
+#endif |
+ shell_context_->set_mojo_origin(net::FilePathToFileURL(service_dir).spec()); |
+ |
+ shell_context_->service_manager()->ConnectToService( |
+ service_url, service_name, client_handle.Pass(), GURL()); |
+} |
+ |
} // namespace test |
} // namespace shell |
} // namespace mojo |