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 "apps/shell/browser/shell_browser_main_parts.h" | 5 #include "apps/shell/browser/shell_browser_main_parts.h" |
6 | 6 |
7 #include "apps/shell/browser/shell_browser_context.h" | 7 #include "apps/shell/browser/shell_browser_context.h" |
8 #include "apps/shell/browser/shell_desktop_controller.h" | 8 #include "apps/shell/browser/shell_desktop_controller.h" |
9 #include "apps/shell/browser/shell_extension_system.h" | 9 #include "apps/shell/browser/shell_extension_system.h" |
10 #include "apps/shell/browser/shell_extension_system_factory.h" | 10 #include "apps/shell/browser/shell_extension_system_factory.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt(); | 36 extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt(); |
37 extensions::ShellExtensionSystemFactory::GetInstance(); | 37 extensions::ShellExtensionSystemFactory::GetInstance(); |
38 } | 38 } |
39 | 39 |
40 } // namespace | 40 } // namespace |
41 | 41 |
42 namespace apps { | 42 namespace apps { |
43 | 43 |
44 ShellBrowserMainParts::ShellBrowserMainParts( | 44 ShellBrowserMainParts::ShellBrowserMainParts( |
45 const content::MainFunctionParams& parameters) | 45 const content::MainFunctionParams& parameters) |
46 : extension_system_(NULL), parameters_(parameters) {} | 46 : extension_system_(NULL), |
| 47 parameters_(parameters), |
| 48 run_message_loop_(true) {} |
47 | 49 |
48 ShellBrowserMainParts::~ShellBrowserMainParts() { | 50 ShellBrowserMainParts::~ShellBrowserMainParts() { |
49 } | 51 } |
50 | 52 |
51 void ShellBrowserMainParts::PreMainMessageLoopStart() { | 53 void ShellBrowserMainParts::PreMainMessageLoopStart() { |
52 // TODO(jamescook): Initialize touch here? | 54 // TODO(jamescook): Initialize touch here? |
53 } | 55 } |
54 | 56 |
55 void ShellBrowserMainParts::PostMainMessageLoopStart() { | 57 void ShellBrowserMainParts::PostMainMessageLoopStart() { |
56 } | 58 } |
57 | 59 |
58 void ShellBrowserMainParts::PreEarlyInitialization() { | 60 void ShellBrowserMainParts::PreEarlyInitialization() { |
59 } | 61 } |
60 | 62 |
61 int ShellBrowserMainParts::PreCreateThreads() { | 63 int ShellBrowserMainParts::PreCreateThreads() { |
62 // TODO(jamescook): Initialize chromeos::CrosSettings here? | 64 // TODO(jamescook): Initialize chromeos::CrosSettings here? |
63 | 65 |
64 // Return no error. | 66 // Return no error. |
65 return 0; | 67 return 0; |
66 } | 68 } |
67 | 69 |
68 void ShellBrowserMainParts::PreMainMessageLoopRun() { | 70 void ShellBrowserMainParts::PreMainMessageLoopRun() { |
| 71 // Initialize our "profile" equivalent. |
| 72 browser_context_.reset(new ShellBrowserContext); |
| 73 |
69 desktop_controller_.reset(new ShellDesktopController); | 74 desktop_controller_.reset(new ShellDesktopController); |
70 desktop_controller_->GetWindowTreeHost()->AddObserver(this); | 75 desktop_controller_->GetWindowTreeHost()->AddObserver(this); |
71 | 76 |
72 // NOTE: Much of this is culled from chrome/test/base/chrome_test_suite.cc | 77 // NOTE: Much of this is culled from chrome/test/base/chrome_test_suite.cc |
73 // TODO(jamescook): Initialize chromeos::UserManager. | 78 // TODO(jamescook): Initialize chromeos::UserManager. |
74 net_log_.reset(new content::ShellNetLog("app_shell")); | 79 net_log_.reset(new content::ShellNetLog("app_shell")); |
75 | 80 |
76 // Initialize our "profile" equivalent. | |
77 browser_context_.reset(new ShellBrowserContext); | |
78 | |
79 extensions_client_.reset(new ShellExtensionsClient()); | 81 extensions_client_.reset(new ShellExtensionsClient()); |
80 extensions::ExtensionsClient::Set(extensions_client_.get()); | 82 extensions::ExtensionsClient::Set(extensions_client_.get()); |
81 | 83 |
82 extensions_browser_client_.reset( | 84 extensions_browser_client_.reset( |
83 new extensions::ShellExtensionsBrowserClient(browser_context_.get())); | 85 new extensions::ShellExtensionsBrowserClient(browser_context_.get())); |
84 extensions::ExtensionsBrowserClient::Set(extensions_browser_client_.get()); | 86 extensions::ExtensionsBrowserClient::Set(extensions_browser_client_.get()); |
85 | 87 |
86 // Create our custom ExtensionSystem first because other | 88 // Create our custom ExtensionSystem first because other |
87 // KeyedServices depend on it. | 89 // KeyedServices depend on it. |
88 // TODO(yoz): Move this after EnsureBrowserContextKeyedServiceFactoriesBuilt. | 90 // TODO(yoz): Move this after EnsureBrowserContextKeyedServiceFactoriesBuilt. |
89 CreateExtensionSystem(); | 91 CreateExtensionSystem(); |
90 | 92 |
91 ::EnsureBrowserContextKeyedServiceFactoriesBuilt(); | 93 ::EnsureBrowserContextKeyedServiceFactoriesBuilt(); |
92 BrowserContextDependencyManager::GetInstance()->CreateBrowserContextServices( | 94 BrowserContextDependencyManager::GetInstance()->CreateBrowserContextServices( |
93 browser_context_.get()); | 95 browser_context_.get()); |
94 | 96 |
95 devtools_delegate_.reset( | 97 devtools_delegate_.reset( |
96 new content::ShellDevToolsDelegate(browser_context_.get())); | 98 new content::ShellDevToolsDelegate(browser_context_.get())); |
97 | 99 |
98 // For running browser tests. | |
99 // TODO(yoz): This is set up to exit prematurely because we don't have | |
100 // any tests yet. | |
101 if (parameters_.ui_task) { | |
102 parameters_.ui_task->Run(); | |
103 delete parameters_.ui_task; | |
104 return; | |
105 } | |
106 | |
107 const std::string kAppSwitch = "app"; | 100 const std::string kAppSwitch = "app"; |
108 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 101 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
109 if (command_line->HasSwitch(kAppSwitch)) { | 102 if (command_line->HasSwitch(kAppSwitch)) { |
110 base::FilePath app_dir(command_line->GetSwitchValueNative(kAppSwitch)); | 103 base::FilePath app_dir(command_line->GetSwitchValueNative(kAppSwitch)); |
111 base::FilePath app_absolute_dir = base::MakeAbsoluteFilePath(app_dir); | 104 base::FilePath app_absolute_dir = base::MakeAbsoluteFilePath(app_dir); |
112 extension_system_->LoadAndLaunchApp(app_absolute_dir); | 105 extension_system_->LoadAndLaunchApp(app_absolute_dir); |
| 106 } else if (parameters_.ui_task) { |
| 107 // For running browser tests. |
| 108 parameters_.ui_task->Run(); |
| 109 delete parameters_.ui_task; |
| 110 run_message_loop_ = false; |
113 } else { | 111 } else { |
114 LOG(ERROR) << "--" << kAppSwitch << " unset; boredom is in your future"; | 112 LOG(ERROR) << "--" << kAppSwitch << " unset; boredom is in your future"; |
115 } | 113 } |
116 } | 114 } |
117 | 115 |
118 bool ShellBrowserMainParts::MainMessageLoopRun(int* result_code) { | 116 bool ShellBrowserMainParts::MainMessageLoopRun(int* result_code) { |
| 117 if (!run_message_loop_) |
| 118 return true; |
| 119 // TODO(yoz): just return false here? |
119 base::RunLoop run_loop; | 120 base::RunLoop run_loop; |
120 run_loop.Run(); | 121 run_loop.Run(); |
121 *result_code = content::RESULT_CODE_NORMAL_EXIT; | 122 *result_code = content::RESULT_CODE_NORMAL_EXIT; |
122 return true; | 123 return true; |
123 } | 124 } |
124 | 125 |
125 void ShellBrowserMainParts::PostMainMessageLoopRun() { | 126 void ShellBrowserMainParts::PostMainMessageLoopRun() { |
126 BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices( | 127 BrowserContextDependencyManager::GetInstance()->DestroyBrowserContextServices( |
127 browser_context_.get()); | 128 browser_context_.get()); |
128 extension_system_ = NULL; | 129 extension_system_ = NULL; |
(...skipping 13 matching lines...) Expand all Loading... |
142 } | 143 } |
143 | 144 |
144 void ShellBrowserMainParts::CreateExtensionSystem() { | 145 void ShellBrowserMainParts::CreateExtensionSystem() { |
145 DCHECK(browser_context_); | 146 DCHECK(browser_context_); |
146 extension_system_ = static_cast<ShellExtensionSystem*>( | 147 extension_system_ = static_cast<ShellExtensionSystem*>( |
147 ExtensionSystem::Get(browser_context_.get())); | 148 ExtensionSystem::Get(browser_context_.get())); |
148 extension_system_->InitForRegularProfile(true); | 149 extension_system_->InitForRegularProfile(true); |
149 } | 150 } |
150 | 151 |
151 } // namespace apps | 152 } // namespace apps |
OLD | NEW |