Index: chrome/browser/chrome_browser_main.cc |
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc |
index 83ac7034e058dd44f9321b349bfb9c669fd8a4d0..840aa3260e52b251e90dd3d4d4903c38e35544c5 100644 |
--- a/chrome/browser/chrome_browser_main.cc |
+++ b/chrome/browser/chrome_browser_main.cc |
@@ -32,8 +32,6 @@ |
#include "chrome/browser/background/background_mode_manager.h" |
#include "chrome/browser/browser_process_impl.h" |
#include "chrome/browser/browser_shutdown.h" |
-#include "chrome/browser/chrome_browser_main_gtk.h" |
-#include "chrome/browser/chrome_browser_main_win.h" |
#include "chrome/browser/defaults.h" |
#include "chrome/browser/extensions/default_apps_trial.h" |
#include "chrome/browser/extensions/extension_protocols.h" |
@@ -120,10 +118,6 @@ |
#include "chrome/app/breakpad_linux.h" |
#endif |
-#if defined(TOOLKIT_USES_GTK) |
-#include "chrome/browser/ui/gtk/gtk_util.h" |
-#endif |
- |
#if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
#include "chrome/browser/first_run/upgrade_util_linux.h" |
#endif |
@@ -159,6 +153,7 @@ |
#include "base/win/windows_version.h" |
#include "chrome/browser/browser_trial.h" |
#include "chrome/browser/browser_util_win.h" |
+#include "chrome/browser/chrome_browser_main_win.h" |
#include "chrome/browser/first_run/try_chrome_dialog_view.h" |
#include "chrome/browser/first_run/upgrade_util_win.h" |
#include "chrome/browser/fragmentation_checker_win.h" |
@@ -193,6 +188,8 @@ |
#endif |
#if defined(TOOLKIT_USES_GTK) |
+#include "chrome/browser/chrome_browser_main_gtk.h" |
+#include "chrome/browser/ui/gtk/gtk_util.h" |
#include "ui/gfx/gtk_util.h" |
#endif |
@@ -200,7 +197,12 @@ |
#include "ui/base/touch/touch_factory.h" |
#endif |
+#if defined(USE_X11) |
+#include "chrome/browser/chrome_browser_main_x11.h" |
+#endif |
+ |
#if defined(USE_AURA) |
+#include "chrome/browser/chrome_browser_main_aura.h" |
#include "ui/aura/desktop.h" |
#include "ui/aura_shell/shell.h" |
#endif |
@@ -690,9 +692,18 @@ ChromeBrowserMainParts::ChromeBrowserMainParts( |
// If we're running tests (ui_task is non-null). |
if (parameters.ui_task) |
browser_defaults::enable_help_app = false; |
+#if defined(USE_AURA) |
+ extra_parts_.push_back(new ChromeBrowserPartsAura(this)); |
+#endif |
+#if defined(TOOLKIT_USES_GTK) |
+ extra_parts_.push_back(new ChromeBrowserPartsGtk(this)); |
+#endif |
} |
ChromeBrowserMainParts::~ChromeBrowserMainParts() { |
+ // Release and destroy ExtraParts in reverse order. |
+ while (!extra_parts_.empty()) |
+ extra_parts_.pop_back(); |
} |
// This will be called after the command-line has been mutated by about:flags |
@@ -1174,7 +1185,25 @@ DLLEXPORT void __cdecl RelaunchChromeBrowserWithNewCommandLineIfNeeded() { |
} |
#endif |
+void ChromeBrowserMainParts::PreEarlyInitialization() { |
+ for (PartsList::iterator iter = extra_parts_.begin(); |
+ iter != extra_parts_.end(); ++iter) { |
+ (*iter)->PreEarlyInitialization(); |
+ } |
+} |
+ |
+void ChromeBrowserMainParts::PostEarlyInitialization() { |
+ for (PartsList::iterator iter = extra_parts_.begin(); |
+ iter != extra_parts_.end(); ++iter) { |
+ (*iter)->PostEarlyInitialization(); |
+ } |
+} |
+ |
void ChromeBrowserMainParts::PreMainMessageLoopRun() { |
+ for (PartsList::iterator iter = extra_parts_.begin(); |
+ iter != extra_parts_.end(); ++iter) { |
+ (*iter)->PreMainMessageLoopRun(); |
+ } |
set_result_code(PreMainMessageLoopRunInternal()); |
} |
@@ -1464,7 +1493,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunInternal() { |
if (parsed_command_line().HasSwitch(switches::kHideIcons) || |
parsed_command_line().HasSwitch(switches::kShowIcons)) { |
- return HandleIconsCommands(parsed_command_line()); |
+ return HandleIconsCommands(); |
} |
if (parsed_command_line().HasSwitch(switches::kMakeDefaultBrowser)) { |
return ShellIntegration::SetAsDefaultBrowser() ? |
@@ -1682,7 +1711,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunInternal() { |
// Sets things up so that if we crash from this point on, a dialog will |
// popup asking the user to restart chrome. It is done this late to avoid |
// testing against a bunch of special cases that are taken care early on. |
- PrepareRestartOnCrashEnviroment(parsed_command_line()); |
+ PrepareRestartOnCrashEnviroment(); |
// Start watching for hangs during startup. We disarm this hang detector when |
// ThreadWatcher takes over or when browser is shutdown. |
@@ -1958,7 +1987,11 @@ void ChromeBrowserMainParts::MainMessageLoopRun() { |
} |
void ChromeBrowserMainParts::PostMainMessageLoopRun() { |
- // Start watching for jank during shutdown. It gets disarmed when |
+ for (PartsList::iterator iter = extra_parts_.begin(); |
+ iter != extra_parts_.end(); ++iter) { |
+ (*iter)->PostMainMessageLoopRun(); |
+ } |
+ // Start watching for jank during shutdown. It gets disarmed when |
// |shutdown_watcher_| object is destructed. |
shutdown_watcher_->Arm(base::TimeDelta::FromSeconds(90)); |
@@ -2070,6 +2103,30 @@ void ChromeBrowserMainParts::ToolkitInitialized() { |
#endif |
} |
+// ExtraParts ---------------------------------------------------------------- |
+ |
+ChromeBrowserMainParts::ExtraParts::ExtraParts( |
+ ChromeBrowserMainParts* main_parts) : |
+ main_parts_(main_parts) { |
+} |
+ |
+ChromeBrowserMainParts::ExtraParts::~ExtraParts() { |
+} |
+ |
+void ChromeBrowserMainParts::ExtraParts::PreEarlyInitialization() { |
+} |
+ |
+void ChromeBrowserMainParts::ExtraParts::PostEarlyInitialization() { |
+} |
+ |
+void ChromeBrowserMainParts::ExtraParts::PreMainMessageLoopRun() { |
+} |
+ |
+void ChromeBrowserMainParts::ExtraParts::PostMainMessageLoopRun() { |
+} |
+ |
+// ----------------------------------------------------------------------------- |
+ |
// This code is specific to the Windows-only PreReadExperiment field-trial. |
void RecordPreReadExperimentTime(const char* name, base::TimeDelta time) { |
DCHECK(name != NULL); |