// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "mojo/shell/child_process.h" #include "base/command_line.h" #include "base/logging.h" #include "base/strings/string_number_conversions.h" #include "mojo/embedder/platform_channel_pair.h" #include "mojo/shell/app_child_process.h" #include "mojo/shell/switches.h" #include "mojo/shell/test_child_process.h" namespace mojo { namespace shell { ChildProcess::~ChildProcess() { } // static scoped_ptr<ChildProcess> ChildProcess::Create( const base::CommandLine& command_line) { if (!command_line.HasSwitch(switches::kChildProcessType)) return scoped_ptr<ChildProcess>(); int type_as_int; CHECK(base::StringToInt(command_line.GetSwitchValueASCII( switches::kChildProcessType), &type_as_int)); scoped_ptr<ChildProcess> rv; switch (type_as_int) { case TYPE_TEST: rv.reset(new TestChildProcess()); break; case TYPE_APP: rv.reset(new AppChildProcess()); break; default: CHECK(false) << "Invalid child process type"; break; } if (rv) { rv->platform_channel_ = embedder::PlatformChannelPair::PassClientHandleFromParentProcess( command_line); CHECK(rv->platform_channel_.is_valid()); } return rv.Pass(); } ChildProcess::ChildProcess() { } } // namespace shell } // namespace mojo