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#include "mojo/shell/child_process.h" 6 7#include "base/command_line.h" 8#include "base/logging.h" 9#include "base/strings/string_number_conversions.h" 10#include "mojo/embedder/platform_channel_pair.h" 11#include "mojo/shell/app_child_process.h" 12#include "mojo/shell/switches.h" 13#include "mojo/shell/test_child_process.h" 14 15namespace mojo { 16namespace shell { 17 18ChildProcess::~ChildProcess() { 19} 20 21// static 22scoped_ptr<ChildProcess> ChildProcess::Create( 23 const base::CommandLine& command_line) { 24 if (!command_line.HasSwitch(switches::kChildProcessType)) 25 return scoped_ptr<ChildProcess>(); 26 27 int type_as_int; 28 CHECK(base::StringToInt(command_line.GetSwitchValueASCII( 29 switches::kChildProcessType), &type_as_int)); 30 31 scoped_ptr<ChildProcess> rv; 32 switch (type_as_int) { 33 case TYPE_TEST: 34 rv.reset(new TestChildProcess()); 35 break; 36 case TYPE_APP: 37 rv.reset(new AppChildProcess()); 38 break; 39 default: 40 CHECK(false) << "Invalid child process type"; 41 break; 42 } 43 44 if (rv) { 45 rv->platform_channel_ = 46 embedder::PlatformChannelPair::PassClientHandleFromParentProcess( 47 command_line); 48 CHECK(rv->platform_channel_.is_valid()); 49 } 50 51 return rv.Pass(); 52} 53 54ChildProcess::ChildProcess() { 55} 56 57} // namespace shell 58} // namespace mojo 59