OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/app/mash/mash_runner.h" | 5 #include "chrome/app/mash/mash_runner.h" |
6 | 6 |
7 #include "ash/mus/sysui_application.h" | 7 #include "ash/mus/sysui_application.h" |
8 #include "base/at_exit.h" | 8 #include "base/at_exit.h" |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
76 shell_connection_.reset( | 76 shell_connection_.reset( |
77 new shell::ShellConnection(shell_client_.get(), std::move(request))); | 77 new shell::ShellConnection(shell_client_.get(), std::move(request))); |
78 return; | 78 return; |
79 } | 79 } |
80 LOG(ERROR) << "unknown name " << mojo_name; | 80 LOG(ERROR) << "unknown name " << mojo_name; |
81 NOTREACHED(); | 81 NOTREACHED(); |
82 } | 82 } |
83 | 83 |
84 private: | 84 private: |
85 // TODO(sky): move this into mash. | 85 // TODO(sky): move this into mash. |
86 scoped_ptr<shell::ShellClient> CreateShellClient(const std::string& name) { | 86 std::unique_ptr<shell::ShellClient> CreateShellClient( |
| 87 const std::string& name) { |
87 if (name == "mojo:ash_sysui") | 88 if (name == "mojo:ash_sysui") |
88 return base::WrapUnique(new ash::sysui::SysUIApplication); | 89 return base::WrapUnique(new ash::sysui::SysUIApplication); |
89 if (name == "mojo:desktop_wm") | 90 if (name == "mojo:desktop_wm") |
90 return base::WrapUnique(new mash::wm::WindowManagerApplication); | 91 return base::WrapUnique(new mash::wm::WindowManagerApplication); |
91 if (name == "mojo:mash_session") | 92 if (name == "mojo:mash_session") |
92 return base::WrapUnique(new mash::session::Session); | 93 return base::WrapUnique(new mash::session::Session); |
93 if (name == "mojo:mus") | 94 if (name == "mojo:mus") |
94 return base::WrapUnique(new mus::MandolineUIServicesApp); | 95 return base::WrapUnique(new mus::MandolineUIServicesApp); |
95 if (name == "mojo:quick_launch") | 96 if (name == "mojo:quick_launch") |
96 return base::WrapUnique(new mash::quick_launch::QuickLaunchApplication); | 97 return base::WrapUnique(new mash::quick_launch::QuickLaunchApplication); |
97 if (name == "mojo:resource_provider") { | 98 if (name == "mojo:resource_provider") { |
98 return base::WrapUnique( | 99 return base::WrapUnique( |
99 new resource_provider::ResourceProviderApp("mojo:resource_provider")); | 100 new resource_provider::ResourceProviderApp("mojo:resource_provider")); |
100 } | 101 } |
101 if (name == "mojo:task_viewer") | 102 if (name == "mojo:task_viewer") |
102 return base::WrapUnique(new mash::task_viewer::TaskViewer); | 103 return base::WrapUnique(new mash::task_viewer::TaskViewer); |
103 #if defined(OS_LINUX) | 104 #if defined(OS_LINUX) |
104 if (name == "mojo:font_service") | 105 if (name == "mojo:font_service") |
105 return base::WrapUnique(new font_service::FontServiceApp); | 106 return base::WrapUnique(new font_service::FontServiceApp); |
106 #endif | 107 #endif |
107 if (name == "mojo:browser_driver") { | 108 if (name == "mojo:browser_driver") { |
108 return base::WrapUnique( | 109 return base::WrapUnique( |
109 new mash::browser_driver::BrowserDriverApplicationDelegate()); | 110 new mash::browser_driver::BrowserDriverApplicationDelegate()); |
110 } | 111 } |
111 return nullptr; | 112 return nullptr; |
112 } | 113 } |
113 | 114 |
114 mojo::BindingSet<ShellClientFactory> shell_client_factory_bindings_; | 115 mojo::BindingSet<ShellClientFactory> shell_client_factory_bindings_; |
115 scoped_ptr<shell::ShellClient> shell_client_; | 116 std::unique_ptr<shell::ShellClient> shell_client_; |
116 scoped_ptr<shell::ShellConnection> shell_connection_; | 117 std::unique_ptr<shell::ShellConnection> shell_connection_; |
117 | 118 |
118 DISALLOW_COPY_AND_ASSIGN(DefaultShellClient); | 119 DISALLOW_COPY_AND_ASSIGN(DefaultShellClient); |
119 }; | 120 }; |
120 | 121 |
121 bool IsChild() { | 122 bool IsChild() { |
122 return base::CommandLine::ForCurrentProcess()->HasSwitch( | 123 return base::CommandLine::ForCurrentProcess()->HasSwitch( |
123 switches::kProcessType) && | 124 switches::kProcessType) && |
124 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 125 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
125 switches::kProcessType) == kMashChild; | 126 switches::kProcessType) == kMashChild; |
126 } | 127 } |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 else | 182 else |
182 RunMain(); | 183 RunMain(); |
183 } | 184 } |
184 | 185 |
185 void MashRunner::RunMain() { | 186 void MashRunner::RunMain() { |
186 // TODO(sky): refactor backgroundshell so can supply own context, we | 187 // TODO(sky): refactor backgroundshell so can supply own context, we |
187 // shouldn't we using context as it has a lot of stuff we don't really want | 188 // shouldn't we using context as it has a lot of stuff we don't really want |
188 // in chrome. | 189 // in chrome. |
189 NativeRunnerDelegateImpl native_runner_delegate; | 190 NativeRunnerDelegateImpl native_runner_delegate; |
190 shell::BackgroundShell background_shell; | 191 shell::BackgroundShell background_shell; |
191 scoped_ptr<shell::BackgroundShell::InitParams> init_params( | 192 std::unique_ptr<shell::BackgroundShell::InitParams> init_params( |
192 new shell::BackgroundShell::InitParams); | 193 new shell::BackgroundShell::InitParams); |
193 init_params->native_runner_delegate = &native_runner_delegate; | 194 init_params->native_runner_delegate = &native_runner_delegate; |
194 background_shell.Init(std::move(init_params)); | 195 background_shell.Init(std::move(init_params)); |
195 shell_client_.reset(new DefaultShellClient); | 196 shell_client_.reset(new DefaultShellClient); |
196 shell_connection_.reset(new shell::ShellConnection( | 197 shell_connection_.reset(new shell::ShellConnection( |
197 shell_client_.get(), | 198 shell_client_.get(), |
198 background_shell.CreateShellClientRequest("exe:chrome_mash"))); | 199 background_shell.CreateShellClientRequest("exe:chrome_mash"))); |
199 shell_connection_->connector()->Connect("mojo:mash_session"); | 200 shell_connection_->connector()->Connect("mojo:mash_session"); |
200 base::MessageLoop::current()->Run(); | 201 base::MessageLoop::current()->Run(); |
201 } | 202 } |
(...skipping 22 matching lines...) Expand all Loading... |
224 logging::LoggingSettings settings; | 225 logging::LoggingSettings settings; |
225 settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; | 226 settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; |
226 logging::InitLogging(settings); | 227 logging::InitLogging(settings); |
227 // To view log output with IDs and timestamps use "adb logcat -v threadtime". | 228 // To view log output with IDs and timestamps use "adb logcat -v threadtime". |
228 logging::SetLogItems(true, // Process ID | 229 logging::SetLogItems(true, // Process ID |
229 true, // Thread ID | 230 true, // Thread ID |
230 true, // Timestamp | 231 true, // Timestamp |
231 true); // Tick count | 232 true); // Tick count |
232 | 233 |
233 // TODO(sky): use MessagePumpMojo. | 234 // TODO(sky): use MessagePumpMojo. |
234 scoped_ptr<base::MessageLoop> message_loop; | 235 std::unique_ptr<base::MessageLoop> message_loop; |
235 #if defined(OS_LINUX) | 236 #if defined(OS_LINUX) |
236 base::AtExitManager exit_manager; | 237 base::AtExitManager exit_manager; |
237 #endif | 238 #endif |
238 if (!IsChild()) | 239 if (!IsChild()) |
239 message_loop.reset(new base::MessageLoop(base::MessageLoop::TYPE_UI)); | 240 message_loop.reset(new base::MessageLoop(base::MessageLoop::TYPE_UI)); |
240 MashRunner mash_runner; | 241 MashRunner mash_runner; |
241 mash_runner.Run(); | 242 mash_runner.Run(); |
242 return 0; | 243 return 0; |
243 } | 244 } |
OLD | NEW |