shell_test_base.h 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)#ifndef MOJO_SHELL_SHELL_TEST_BASE_H_
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#define MOJO_SHELL_SHELL_TEST_BASE_H_
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <string>
9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/macros.h"
11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "mojo/public/cpp/system/core.h"
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class GURL;
16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace base {
18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class MessageLoop;
19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace mojo {
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace shell {
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class Context;
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace test {
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class ShellTestBase : public testing::Test {
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ShellTestBase();
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual ~ShellTestBase();
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // Should be called before any of the methods below are called.
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  void InitMojo();
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // Launches the given service in-process; |service_url| should typically be a
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // mojo: URL (the origin will be set to an "appropriate" file: URL).
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  void LaunchServiceInProcess(const GURL& service_url,
39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                              const std::string& service_name,
40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                              ScopedMessagePipeHandle client_handle);
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  base::MessageLoop* message_loop() { return message_loop_.get(); }
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  Context* shell_context() { return shell_context_.get(); }
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private:
46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  // Only set if/when |InitMojo()| is called.
47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  scoped_ptr<base::MessageLoop> message_loop_;
48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  scoped_ptr<Context> shell_context_;
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ShellTestBase);
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace test
54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace shell
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace mojo
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif  // MOJO_SHELL_SHELL_TEST_BASE_H_
59