OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "shell/context.h" | 5 #include "shell/context.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/base_switches.h" | 9 #include "base/base_switches.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 | 229 |
230 void Context::SetCommandLineCWD(const base::FilePath& path) { | 230 void Context::SetCommandLineCWD(const base::FilePath& path) { |
231 command_line_cwd_ = AddTrailingSlashIfNeeded(FilePathToFileURL(path)); | 231 command_line_cwd_ = AddTrailingSlashIfNeeded(FilePathToFileURL(path)); |
232 } | 232 } |
233 | 233 |
234 GURL Context::ResolveCommandLineURL(const std::string& path) { | 234 GURL Context::ResolveCommandLineURL(const std::string& path) { |
235 return command_line_cwd_.Resolve(path); | 235 return command_line_cwd_.Resolve(path); |
236 } | 236 } |
237 | 237 |
238 bool Context::Init() { | 238 bool Context::Init() { |
239 TRACE_EVENT0("mojo_shell", "Context::Init"); | 239 base::FilePath shell_path = base::MakeAbsoluteFilePath( |
| 240 base::CommandLine::ForCurrentProcess()->GetProgram()); |
| 241 base::FilePath shell_child_path = |
| 242 shell_path.DirName().AppendASCII("mojo_shell_child"); |
| 243 return InitWithPaths(shell_path, shell_child_path); |
| 244 } |
| 245 |
| 246 bool Context::InitWithPaths(const base::FilePath& shell_path, |
| 247 const base::FilePath& shell_child_path) { |
| 248 TRACE_EVENT0("mojo_shell", "Context::InitWithPaths"); |
240 const base::CommandLine& command_line = | 249 const base::CommandLine& command_line = |
241 *base::CommandLine::ForCurrentProcess(); | 250 *base::CommandLine::ForCurrentProcess(); |
242 | 251 |
243 if (command_line.HasSwitch(switches::kWaitForDebugger)) | 252 if (command_line.HasSwitch(switches::kWaitForDebugger)) |
244 base::debug::WaitForDebugger(60, true); | 253 base::debug::WaitForDebugger(60, true); |
245 | 254 |
246 mojo_shell_path_ = base::MakeAbsoluteFilePath(command_line.GetProgram()); | 255 mojo_shell_path_ = shell_path; |
247 // TODO(vtl): For the moment, the child is the same as the parent. | 256 mojo_shell_child_path_ = shell_child_path; |
248 mojo_shell_child_path_ = mojo_shell_path_; | |
249 | 257 |
250 EnsureEmbedderIsInitialized(); | 258 EnsureEmbedderIsInitialized(); |
251 task_runners_.reset( | 259 task_runners_.reset( |
252 new TaskRunners(base::MessageLoop::current()->message_loop_proxy())); | 260 new TaskRunners(base::MessageLoop::current()->message_loop_proxy())); |
253 | 261 |
254 // TODO(vtl): Probably these failures should be checked before |Init()|, and | 262 // TODO(vtl): Probably these failures should be checked before |Init()|, and |
255 // this function simply shouldn't fail. | 263 // this function simply shouldn't fail. |
256 if (!shell_file_root_.is_valid()) | 264 if (!shell_file_root_.is_valid()) |
257 return false; | 265 return false; |
258 if (!ConfigureURLMappings(command_line, this)) | 266 if (!ConfigureURLMappings(command_line, this)) |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 if (app_urls_.empty() && base::MessageLoop::current()->is_running()) { | 351 if (app_urls_.empty() && base::MessageLoop::current()->is_running()) { |
344 DCHECK_EQ(base::MessageLoop::current()->task_runner(), | 352 DCHECK_EQ(base::MessageLoop::current()->task_runner(), |
345 task_runners_->shell_runner()); | 353 task_runners_->shell_runner()); |
346 base::MessageLoop::current()->Quit(); | 354 base::MessageLoop::current()->Quit(); |
347 } | 355 } |
348 } | 356 } |
349 } | 357 } |
350 | 358 |
351 } // namespace shell | 359 } // namespace shell |
352 } // namespace mojo | 360 } // namespace mojo |
OLD | NEW |