Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2288)

Unified Diff: chrome/browser/chrome_browser_main.cc

Issue 8302016: Make GTK and Aura parts orthogonal to OS parts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698