OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 "extensions/shell/browser/default_shell_browser_main_delegate.h" | 5 #include "extensions/shell/browser/default_shell_browser_main_delegate.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/strings/string_tokenizer.h" | 10 #include "base/strings/string_tokenizer.h" |
| 11 #include "extensions/common/switches.h" |
11 #include "extensions/shell/browser/shell_desktop_controller.h" | 12 #include "extensions/shell/browser/shell_desktop_controller.h" |
12 #include "extensions/shell/browser/shell_extension_system.h" | 13 #include "extensions/shell/browser/shell_extension_system.h" |
13 #include "extensions/shell/common/switches.h" | |
14 | 14 |
15 namespace extensions { | 15 namespace extensions { |
16 | 16 |
17 DefaultShellBrowserMainDelegate::DefaultShellBrowserMainDelegate() { | 17 DefaultShellBrowserMainDelegate::DefaultShellBrowserMainDelegate() { |
18 } | 18 } |
19 | 19 |
20 DefaultShellBrowserMainDelegate::~DefaultShellBrowserMainDelegate() { | 20 DefaultShellBrowserMainDelegate::~DefaultShellBrowserMainDelegate() { |
21 } | 21 } |
22 | 22 |
23 void DefaultShellBrowserMainDelegate::Start( | 23 void DefaultShellBrowserMainDelegate::Start( |
24 content::BrowserContext* browser_context) { | 24 content::BrowserContext* browser_context) { |
25 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 25 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
26 if (command_line->HasSwitch(switches::kAppShellAppPath)) { | 26 if (command_line->HasSwitch(switches::kLoadApps)) { |
27 ShellExtensionSystem* extension_system = static_cast<ShellExtensionSystem*>( | 27 ShellExtensionSystem* extension_system = static_cast<ShellExtensionSystem*>( |
28 ExtensionSystem::Get(browser_context)); | 28 ExtensionSystem::Get(browser_context)); |
29 extension_system->Init(); | 29 extension_system->Init(); |
30 | 30 |
31 CommandLine::StringType path_list = | 31 CommandLine::StringType path_list = |
32 command_line->GetSwitchValueNative(switches::kAppShellAppPath); | 32 command_line->GetSwitchValueNative(switches::kLoadApps); |
33 | 33 |
34 base::StringTokenizerT<CommandLine::StringType, | 34 base::StringTokenizerT<CommandLine::StringType, |
35 CommandLine::StringType::const_iterator> | 35 CommandLine::StringType::const_iterator> |
36 tokenizer(path_list, FILE_PATH_LITERAL(",")); | 36 tokenizer(path_list, FILE_PATH_LITERAL(",")); |
| 37 |
| 38 |
| 39 std::string launch_id; |
37 while (tokenizer.GetNext()) { | 40 while (tokenizer.GetNext()) { |
38 base::FilePath app_absolute_dir = | 41 base::FilePath app_absolute_dir = |
39 base::MakeAbsoluteFilePath(base::FilePath(tokenizer.token())); | 42 base::MakeAbsoluteFilePath(base::FilePath(tokenizer.token())); |
40 | 43 |
41 const Extension* extension = extension_system->LoadApp(app_absolute_dir); | 44 const Extension* extension = extension_system->LoadApp(app_absolute_dir); |
42 if (!extension) | 45 if (!extension) |
43 continue; | 46 continue; |
44 extension_system->LaunchApp(extension->id()); | 47 if (launch_id.empty()) |
| 48 launch_id = extension->id(); |
45 } | 49 } |
| 50 |
| 51 if (!launch_id.empty()) |
| 52 extension_system->LaunchApp(launch_id); |
| 53 else |
| 54 LOG(ERROR) << "Could not load any apps."; |
46 } else { | 55 } else { |
47 LOG(ERROR) << "--" << switches::kAppShellAppPath | 56 LOG(ERROR) << "--" << switches::kLoadApps |
48 << " unset; boredom is in your future"; | 57 << " unset; boredom is in your future"; |
49 } | 58 } |
50 } | 59 } |
51 | 60 |
52 void DefaultShellBrowserMainDelegate::Shutdown() { | 61 void DefaultShellBrowserMainDelegate::Shutdown() { |
53 } | 62 } |
54 | 63 |
55 DesktopController* DefaultShellBrowserMainDelegate::CreateDesktopController() { | 64 DesktopController* DefaultShellBrowserMainDelegate::CreateDesktopController() { |
56 return new ShellDesktopController(); | 65 return new ShellDesktopController(); |
57 } | 66 } |
58 | 67 |
59 } // namespace extensions | 68 } // namespace extensions |
OLD | NEW |