Index: chrome/browser/browser_main.h |
diff --git a/chrome/browser/browser_main.h b/chrome/browser/browser_main.h |
index 268c4b610d8c16cf4840c86ac8a4fb10972ce32c..c7e892585232fe7b5e4d587c66f3505468cff234 100644 |
--- a/chrome/browser/browser_main.h |
+++ b/chrome/browser/browser_main.h |
@@ -8,11 +8,20 @@ |
#include "base/basictypes.h" |
#include "base/field_trial.h" |
+#include "base/scoped_ptr.h" |
#include "base/tracked_objects.h" |
+class ChromeThread; |
class CommandLine; |
+class HighResolutionTimerManager; |
struct MainFunctionParams; |
+class MessageLoop; |
class MetricsService; |
+class SystemMonitor; |
+ |
+namespace net { |
+class NetworkChangeNotifier; |
+} |
// BrowserMainParts: |
// This class contains different "stages" to be executed in |BrowserMain()|, |
@@ -34,6 +43,10 @@ class MetricsService; |
// - EarlyInitialization: things which should be done as soon as possible on |
// program start (such as setting up signal handlers) and things to be done |
// at some generic time before the start of the main message loop. |
+// - MainMessageLoopStart: things beginning with the start of the main message |
+// loop and ending with initialization of the main thread; platform-specific |
+// things which should be done immediately before the start of the main |
+// message loop should go in |PreMainMessageLoopStart()|. |
// - (more to come) |
class BrowserMainParts { |
public: |
@@ -42,14 +55,11 @@ class BrowserMainParts { |
static BrowserMainParts* CreateBrowserMainParts( |
const MainFunctionParams& parameters); |
+ virtual ~BrowserMainParts(); |
+ |
// Parts to be called by |BrowserMain()|. |
void EarlyInitialization(); |
- |
- // TODO(viettrungluu): This currently contains (POSIX) initialization done |
- // later than "EarlyInitialization()" but dependent on it. Once the |
- // refactoring includes that later stage, this should be put in some more |
- // generic platform-dependent method. |
- virtual void TemporaryPosix_1() {} |
+ void MainMessageLoopStart(); |
protected: |
explicit BrowserMainParts(const MainFunctionParams& parameters); |
@@ -61,13 +71,18 @@ class BrowserMainParts { |
const CommandLine& parsed_command_line() const { |
return parsed_command_line_; |
} |
+ MessageLoop& main_message_loop() const { |
+ return *main_message_loop_; |
+ } |
- private: |
// Methods to be overridden to provide platform-specific code; these |
// correspond to the "parts" above. |
virtual void PreEarlyInitialization() {} |
virtual void PostEarlyInitialization() {} |
+ virtual void PreMainMessageLoopStart() {} |
+ virtual void PostMainMessageLoopStart() {} |
+ private: |
// Methods for |EarlyInitialization()| --------------------------------------- |
// A/B test for the maximum number of persistent connections per host. |
@@ -82,6 +97,10 @@ class BrowserMainParts { |
// Used to initialize NSPR where appropriate. |
void InitializeSSL(); |
+ // Methods for |MainMessageLoopStart()| -------------------------------------- |
+ |
+ void InitializeMainThread(); |
+ |
// Members initialized on construction --------------------------------------- |
const MainFunctionParams& parameters_; |
@@ -97,14 +116,17 @@ class BrowserMainParts { |
// Statistical testing infrastructure for the entire browser. |
FieldTrialList field_trial_; |
+ // Members initialized in |MainMessageLoopStart()| --------------------------- |
+ scoped_ptr<MessageLoop> main_message_loop_; |
+ scoped_ptr<SystemMonitor> system_monitor_; |
+ scoped_ptr<HighResolutionTimerManager> hi_res_timer_manager_; |
+ scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
+ scoped_ptr<ChromeThread> main_thread_; |
+ |
DISALLOW_COPY_AND_ASSIGN(BrowserMainParts); |
}; |
-// Perform platform-specific work that needs to be done before the main |
-// message loop is created, initialized, and entered. |
-void WillInitializeMainMessageLoop(const MainFunctionParams& parameters); |
- |
// Perform platform-specific work that needs to be done after the main event |
// loop has ended. |
void DidEndMainMessageLoop(); |