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.
5 // Note: This file also tests child_process.*.
7 #include "mojo/runner/child_process_host.h"
9 #include "base/logging.h"
10 #include "base/macros.h"
11 #include "base/message_loop/message_loop.h"
12 #include "mojo/common/message_pump_mojo.h"
13 #include "mojo/runner/context.h"
14 #include "testing/gtest/include/gtest/gtest.h"
20 // Subclass just so we can observe |DidStart()|.
21 class TestChildProcessHost
: public ChildProcessHost
{
23 explicit TestChildProcessHost(Context
* context
)
24 : ChildProcessHost(context
, false, base::FilePath(), false) {}
25 ~TestChildProcessHost() override
{}
27 void DidStart(bool success
) override
{
29 ChildProcessHost::DidStart(success
);
30 base::MessageLoop::current()->QuitWhenIdle();
34 DISALLOW_COPY_AND_ASSIGN(TestChildProcessHost
);
37 #if defined(OS_ANDROID)
38 // TODO(qsr): Multiprocess shell tests are not supported on android.
39 #define MAYBE_StartJoin DISABLED_StartJoin
41 #define MAYBE_StartJoin StartJoin
42 #endif // defined(OS_ANDROID)
43 // Just tests starting the child process and joining it (without starting an
45 TEST(ChildProcessHostTest
, MAYBE_StartJoin
) {
47 base::MessageLoop
message_loop(
48 scoped_ptr
<base::MessagePump
>(new common::MessagePumpMojo()));
50 TestChildProcessHost
child_process_host(&context
);
51 child_process_host
.Start();
53 child_process_host
.ExitNow(123);
54 int exit_code
= child_process_host
.Join();
55 VLOG(2) << "Joined child: exit_code = " << exit_code
;
56 EXPECT_EQ(123, exit_code
);