1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// 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 "base/test/test_io_thread.h"
#include "mojo/edk/embedder/simple_platform_support.h"
#include "mojo/edk/system/channel.h"
#include "mojo/edk/system/test_utils.h"
#include "mojo/edk/test/multiprocess_test_helper.h"
namespace mojo {
namespace system {
class Channel;
class ChannelEndpoint;
class MessagePipe;
namespace test {
MojoResult WaitIfNecessary(scoped_refptr<MessagePipe> mp,
MojoHandleSignals signals,
HandleSignalsState* signals_state);
class ChannelThread {
public:
explicit ChannelThread(embedder::PlatformSupport* platform_support);
~ChannelThread();
void Start(embedder::ScopedPlatformHandle platform_handle,
scoped_refptr<ChannelEndpoint> channel_endpoint);
void Stop();
private:
void InitChannelOnIOThread(embedder::ScopedPlatformHandle platform_handle,
scoped_refptr<ChannelEndpoint> channel_endpoint);
void ShutdownChannelOnIOThread();
embedder::PlatformSupport* const platform_support_;
base::TestIOThread test_io_thread_;
scoped_refptr<Channel> channel_;
DISALLOW_COPY_AND_ASSIGN(ChannelThread);
};
#if !defined(OS_IOS)
class MultiprocessMessagePipeTestBase : public testing::Test {
public:
MultiprocessMessagePipeTestBase();
~MultiprocessMessagePipeTestBase() override;
protected:
void Init(scoped_refptr<ChannelEndpoint> ep);
embedder::PlatformSupport* platform_support() { return &platform_support_; }
mojo::test::MultiprocessTestHelper* helper() { return &helper_; }
private:
embedder::SimplePlatformSupport platform_support_;
ChannelThread channel_thread_;
mojo::test::MultiprocessTestHelper helper_;
DISALLOW_COPY_AND_ASSIGN(MultiprocessMessagePipeTestBase);
};
#endif
} // namespace test
} // namespace system
} // namespace mojo
#endif // MOJO_EDK_SYSTEM_MESSAGE_PIPE_TEST_UTILS_H_
|