shell_test_base.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
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#ifndef MOJO_SHELL_SHELL_TEST_BASE_H_
6#define MOJO_SHELL_SHELL_TEST_BASE_H_
7
8#include <string>
9
10#include "base/macros.h"
11#include "base/memory/scoped_ptr.h"
12#include "mojo/public/cpp/system/core.h"
13#include "testing/gtest/include/gtest/gtest.h"
14
15class GURL;
16
17namespace base {
18class MessageLoop;
19}
20
21namespace mojo {
22namespace shell {
23
24class Context;
25
26namespace test {
27
28class ShellTestBase : public testing::Test {
29 public:
30  ShellTestBase();
31  virtual ~ShellTestBase();
32
33  // Should be called before any of the methods below are called.
34  void InitMojo();
35
36  // Launches the given service in-process; |service_url| should typically be a
37  // mojo: URL (the origin will be set to an "appropriate" file: URL).
38  void LaunchServiceInProcess(const GURL& service_url,
39                              const std::string& service_name,
40                              ScopedMessagePipeHandle client_handle);
41
42  base::MessageLoop* message_loop() { return message_loop_.get(); }
43  Context* shell_context() { return shell_context_.get(); }
44
45 private:
46  // Only set if/when |InitMojo()| is called.
47  scoped_ptr<base::MessageLoop> message_loop_;
48  scoped_ptr<Context> shell_context_;
49
50  DISALLOW_COPY_AND_ASSIGN(ShellTestBase);
51};
52
53}  // namespace test
54
55}  // namespace shell
56}  // namespace mojo
57
58#endif  // MOJO_SHELL_SHELL_TEST_BASE_H_
59