Home | History | Annotate | Download | only in shell
      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.
      4 
      5 // Note: This file also tests child_process.*.
      6 
      7 #include "mojo/shell/child_process_host.h"
      8 
      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/shell/context.h"
     14 #include "testing/gtest/include/gtest/gtest.h"
     15 
     16 namespace mojo {
     17 namespace shell {
     18 namespace test {
     19 namespace {
     20 
     21 class TestChildProcessHostDelegate : public ChildProcessHost::Delegate {
     22  public:
     23   TestChildProcessHostDelegate() {}
     24   virtual ~TestChildProcessHostDelegate() {}
     25   virtual void WillStart() OVERRIDE {
     26     VLOG(2) << "TestChildProcessHostDelegate::WillStart()";
     27   }
     28   virtual void DidStart(bool success) OVERRIDE {
     29     VLOG(2) << "TestChildProcessHostDelegate::DidStart(" << success << ")";
     30     base::MessageLoop::current()->QuitWhenIdle();
     31   }
     32 };
     33 
     34 typedef testing::Test ChildProcessHostTest;
     35 
     36 TEST_F(ChildProcessHostTest, Basic) {
     37   Context context;
     38   base::MessageLoop message_loop(
     39       scoped_ptr<base::MessagePump>(new common::MessagePumpMojo()));
     40   context.Init();
     41   TestChildProcessHostDelegate child_process_host_delegate;
     42   ChildProcessHost child_process_host(&context,
     43                                       &child_process_host_delegate,
     44                                       ChildProcess::TYPE_TEST);
     45   child_process_host.Start();
     46   message_loop.Run();
     47   int exit_code = child_process_host.Join();
     48   VLOG(2) << "Joined child: exit_code = " << exit_code;
     49   EXPECT_EQ(0, exit_code);
     50 }
     51 
     52 }  // namespace
     53 }  // namespace test
     54 }  // namespace shell
     55 }  // namespace mojo
     56