• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
15 namespace mojo {
16 namespace shell {
17 
~ChildProcess()18 ChildProcess::~ChildProcess() {
19 }
20 
21 // static
Create(const base::CommandLine & command_line)22 scoped_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 
ChildProcess()54 ChildProcess::ChildProcess() {
55 }
56 
57 }  // namespace shell
58 }  // namespace mojo
59