Roll src/third_party/WebKit eac3800:0237a66 (svn 202606:202607)
[chromium-blink-merge.git] / mojo / runner / child_process_host_unittest.cc
blob6bad5697e2ab0a75fb6e6c5ea11ce5d93469fffb
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 "base/path_service.h"
13 #include "mojo/message_pump/message_pump_mojo.h"
14 #include "mojo/runner/context.h"
15 #include "testing/gtest/include/gtest/gtest.h"
17 namespace mojo {
18 namespace runner {
19 namespace {
21 // Subclass just so we can observe |DidStart()|.
22 class TestChildProcessHost : public ChildProcessHost {
23 public:
24 explicit TestChildProcessHost(Context* context)
25 : ChildProcessHost(context, false, base::FilePath()) {}
26 ~TestChildProcessHost() override {}
28 void DidStart(bool success) override {
29 EXPECT_TRUE(success);
30 ChildProcessHost::DidStart(success);
31 base::MessageLoop::current()->QuitWhenIdle();
34 private:
35 DISALLOW_COPY_AND_ASSIGN(TestChildProcessHost);
38 #if defined(OS_ANDROID)
39 // TODO(qsr): Multiprocess shell tests are not supported on android.
40 #define MAYBE_StartJoin DISABLED_StartJoin
41 #else
42 #define MAYBE_StartJoin StartJoin
43 #endif // defined(OS_ANDROID)
44 // Just tests starting the child process and joining it (without starting an
45 // app).
46 TEST(ChildProcessHostTest, MAYBE_StartJoin) {
47 base::FilePath shell_dir;
48 PathService::Get(base::DIR_MODULE, &shell_dir);
49 Context context(shell_dir);
50 base::MessageLoop message_loop(
51 scoped_ptr<base::MessagePump>(new common::MessagePumpMojo()));
52 context.Init();
53 TestChildProcessHost child_process_host(&context);
54 child_process_host.Start();
55 message_loop.Run();
56 child_process_host.ExitNow(123);
57 int exit_code = child_process_host.Join();
58 VLOG(2) << "Joined child: exit_code = " << exit_code;
59 EXPECT_EQ(123, exit_code);
61 context.Shutdown();
64 } // namespace
65 } // namespace runner
66 } // namespace mojo