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