| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MOJO_EDK_SYSTEM_MESSAGE_PIPE_TEST_UTILS_H_ |
| #define MOJO_EDK_SYSTEM_MESSAGE_PIPE_TEST_UTILS_H_ |
| |
| #include <memory> |
| |
| #include "mojo/edk/platform/scoped_platform_handle.h" |
| #include "mojo/edk/system/channel.h" |
| #include "mojo/edk/system/handle_signals_state.h" |
| #include "mojo/edk/system/test/test_io_thread.h" |
| #include "mojo/edk/test/multiprocess_test_helper.h" |
| #include "mojo/edk/util/ref_ptr.h" |
| #include "mojo/public/cpp/system/macros.h" |
| |
| namespace mojo { |
| |
| namespace embedder { |
| class PlatformSupport; |
| } |
| |
| namespace system { |
| |
| class Channel; |
| class ChannelEndpoint; |
| class MessagePipe; |
| |
| namespace test { |
| |
| MojoResult WaitIfNecessary(MessagePipe* mp, |
| MojoHandleSignals signals, |
| HandleSignalsState* signals_state); |
| |
| class ChannelThread { |
| public: |
| explicit ChannelThread(embedder::PlatformSupport* platform_support); |
| ~ChannelThread(); |
| |
| void Start(platform::ScopedPlatformHandle platform_handle, |
| util::RefPtr<ChannelEndpoint>&& channel_endpoint); |
| void Stop(); |
| |
| private: |
| void InitChannelOnIOThread(platform::ScopedPlatformHandle platform_handle, |
| util::RefPtr<ChannelEndpoint>&& channel_endpoint); |
| |
| embedder::PlatformSupport* const platform_support_; |
| TestIOThread test_io_thread_; |
| util::RefPtr<Channel> channel_; |
| |
| MOJO_DISALLOW_COPY_AND_ASSIGN(ChannelThread); |
| }; |
| |
| #if !defined(OS_IOS) |
| class MultiprocessMessagePipeTestBase : public testing::Test { |
| public: |
| MultiprocessMessagePipeTestBase(); |
| ~MultiprocessMessagePipeTestBase() override; |
| |
| protected: |
| void Init(util::RefPtr<ChannelEndpoint>&& ep); |
| |
| embedder::PlatformSupport* platform_support() { |
| return platform_support_.get(); |
| } |
| mojo::test::MultiprocessTestHelper* helper() { return &helper_; } |
| |
| private: |
| std::unique_ptr<embedder::PlatformSupport> platform_support_; |
| ChannelThread channel_thread_; |
| mojo::test::MultiprocessTestHelper helper_; |
| |
| MOJO_DISALLOW_COPY_AND_ASSIGN(MultiprocessMessagePipeTestBase); |
| }; |
| #endif |
| |
| } // namespace test |
| } // namespace system |
| } // namespace mojo |
| |
| #endif // MOJO_EDK_SYSTEM_MESSAGE_PIPE_TEST_UTILS_H_ |