| Index: ipc/ipc_test_base.cc
|
| diff --git a/ipc/ipc_test_base.cc b/ipc/ipc_test_base.cc
|
| index 8bc6bfc7c81e8e6bd29ce6895a9d62e3009e35d6..5b8cbbacf12cee473f70e0a63dc2e2a81ec902aa 100644
|
| --- a/ipc/ipc_test_base.cc
|
| +++ b/ipc/ipc_test_base.cc
|
| @@ -6,175 +6,25 @@
|
|
|
| #include <utility>
|
|
|
| -#include "base/command_line.h"
|
| #include "base/memory/ptr_util.h"
|
| -#include "base/process/kill.h"
|
| #include "base/run_loop.h"
|
| #include "base/single_thread_task_runner.h"
|
| -#include "base/threading/thread.h"
|
| -#include "base/time/time.h"
|
| #include "build/build_config.h"
|
| #include "ipc/ipc_channel_mojo.h"
|
| -#include "ipc/ipc_descriptors.h"
|
|
|
| -#if defined(OS_POSIX)
|
| -#include "base/posix/global_descriptors.h"
|
| -#endif
|
| -
|
| -// static
|
| -std::string IPCTestBase::GetChannelName(const std::string& test_client_name) {
|
| - DCHECK(!test_client_name.empty());
|
| - return test_client_name + "__Channel";
|
| -}
|
| -
|
| -IPCTestBase::IPCTestBase() {
|
| -}
|
| -
|
| -IPCTestBase::~IPCTestBase() {
|
| -}
|
| -
|
| -void IPCTestBase::TearDown() {
|
| - message_loop_.reset();
|
| - MultiProcessTest::TearDown();
|
| -}
|
| +IPCChannelMojoTestBase::IPCChannelMojoTestBase() = default;
|
| +IPCChannelMojoTestBase::~IPCChannelMojoTestBase() = default;
|
|
|
| -void IPCTestBase::Init(const std::string& test_client_name) {
|
| +void IPCChannelMojoTestBase::Init(const std::string& test_client_name) {
|
| InitWithCustomMessageLoop(test_client_name,
|
| - base::MakeUnique<base::MessageLoopForIO>());
|
| + base::MakeUnique<base::MessageLoop>());
|
| }
|
|
|
| -void IPCTestBase::InitWithCustomMessageLoop(
|
| +void IPCChannelMojoTestBase::InitWithCustomMessageLoop(
|
| const std::string& test_client_name,
|
| std::unique_ptr<base::MessageLoop> message_loop) {
|
| - DCHECK(!test_client_name.empty());
|
| - DCHECK(test_client_name_.empty());
|
| - DCHECK(!message_loop_);
|
| -
|
| - test_client_name_ = test_client_name;
|
| - message_loop_ = std::move(message_loop);
|
| -}
|
| -
|
| -void IPCTestBase::CreateChannel(IPC::Listener* listener) {
|
| - CreateChannelFromChannelHandle(GetTestChannelHandle(), listener);
|
| -}
|
| -
|
| -bool IPCTestBase::ConnectChannel() {
|
| - CHECK(channel_.get());
|
| - return channel_->Connect();
|
| -}
|
| -
|
| -std::unique_ptr<IPC::Channel> IPCTestBase::ReleaseChannel() {
|
| - return std::move(channel_);
|
| -}
|
| -
|
| -void IPCTestBase::SetChannel(std::unique_ptr<IPC::Channel> channel) {
|
| - channel_ = std::move(channel);
|
| -}
|
| -
|
| -
|
| -void IPCTestBase::DestroyChannel() {
|
| - DCHECK(channel_.get());
|
| - channel_.reset();
|
| -}
|
| -
|
| -void IPCTestBase::CreateChannelFromChannelHandle(
|
| - const IPC::ChannelHandle& channel_handle,
|
| - IPC::Listener* listener) {
|
| - CHECK(!channel_.get());
|
| - CHECK(!channel_proxy_.get());
|
| - channel_ = CreateChannelFactory(
|
| - channel_handle, task_runner().get())->BuildChannel(listener);
|
| -}
|
| -
|
| -void IPCTestBase::CreateChannelProxy(
|
| - IPC::Listener* listener,
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) {
|
| - CHECK(!channel_.get());
|
| - CHECK(!channel_proxy_.get());
|
| - channel_proxy_ = IPC::ChannelProxy::Create(
|
| - CreateChannelFactory(GetTestChannelHandle(), ipc_task_runner.get()),
|
| - listener, ipc_task_runner);
|
| -}
|
| -
|
| -void IPCTestBase::DestroyChannelProxy() {
|
| - CHECK(channel_proxy_.get());
|
| - channel_proxy_.reset();
|
| -}
|
| -
|
| -std::string IPCTestBase::GetTestMainName() const {
|
| - return test_client_name_ + "TestClientMain";
|
| -}
|
| -
|
| -bool IPCTestBase::DidStartClient() {
|
| - DCHECK(client_process_.IsValid());
|
| - return client_process_.IsValid();
|
| -}
|
| -
|
| -#if defined(OS_POSIX)
|
| -
|
| -bool IPCTestBase::StartClient() {
|
| - return StartClientWithFD(channel_
|
| - ? channel_->GetClientFileDescriptor()
|
| - : channel_proxy_->GetClientFileDescriptor());
|
| -}
|
| -
|
| -bool IPCTestBase::StartClientWithFD(int ipcfd) {
|
| - DCHECK(!client_process_.IsValid());
|
| -
|
| - base::FileHandleMappingVector fds_to_map;
|
| - if (ipcfd > -1)
|
| - fds_to_map.push_back(std::pair<int, int>(ipcfd,
|
| - kPrimaryIPCChannel + base::GlobalDescriptors::kBaseDescriptor));
|
| - base::LaunchOptions options;
|
| - options.fds_to_remap = &fds_to_map;
|
| - client_process_ = SpawnChildWithOptions(GetTestMainName(), options);
|
| -
|
| - return DidStartClient();
|
| -}
|
| -
|
| -#elif defined(OS_WIN)
|
| -
|
| -bool IPCTestBase::StartClient() {
|
| - DCHECK(!client_process_.IsValid());
|
| - client_process_ = SpawnChild(GetTestMainName());
|
| - return DidStartClient();
|
| -}
|
| -
|
| -#endif
|
| -
|
| -bool IPCTestBase::WaitForClientShutdown() {
|
| - DCHECK(client_process_.IsValid());
|
| -
|
| - int exit_code;
|
| -#if defined(OS_ANDROID)
|
| - bool rv = AndroidWaitForChildExitWithTimeout(
|
| - client_process_, base::TimeDelta::FromSeconds(5), &exit_code);
|
| -#else
|
| - bool rv = client_process_.WaitForExitWithTimeout(
|
| - base::TimeDelta::FromSeconds(5), &exit_code);
|
| -#endif // defined(OS_ANDROID)
|
| - client_process_.Close();
|
| - return rv;
|
| -}
|
| -
|
| -IPC::ChannelHandle IPCTestBase::GetTestChannelHandle() {
|
| - return GetChannelName(test_client_name_);
|
| -}
|
| -
|
| -scoped_refptr<base::SingleThreadTaskRunner> IPCTestBase::task_runner() {
|
| - return message_loop_->task_runner();
|
| -}
|
| -
|
| -std::unique_ptr<IPC::ChannelFactory> IPCTestBase::CreateChannelFactory(
|
| - const IPC::ChannelHandle& handle,
|
| - base::SingleThreadTaskRunner* runner) {
|
| - return IPC::ChannelFactory::Create(handle, IPC::Channel::MODE_SERVER, runner);
|
| -}
|
| -IPCChannelMojoTestBase::IPCChannelMojoTestBase() = default;
|
| -IPCChannelMojoTestBase::~IPCChannelMojoTestBase() = default;
|
| -
|
| -void IPCChannelMojoTestBase::Init(const std::string& test_client_name) {
|
| handle_ = helper_.StartChild(test_client_name);
|
| + message_loop_ = std::move(message_loop);
|
| }
|
|
|
| bool IPCChannelMojoTestBase::WaitForClientShutdown() {
|
| @@ -182,7 +32,8 @@ bool IPCChannelMojoTestBase::WaitForClientShutdown() {
|
| }
|
|
|
| void IPCChannelMojoTestBase::TearDown() {
|
| - base::RunLoop().RunUntilIdle();
|
| + if (message_loop_)
|
| + base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| void IPCChannelMojoTestBase::CreateChannel(IPC::Listener* listener) {
|
|
|