| Index: content/browser/browser_main.h
|
| ===================================================================
|
| --- content/browser/browser_main.h (revision 0)
|
| +++ content/browser/browser_main.h (revision 0)
|
| @@ -0,0 +1,133 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CONTENT_BROWSER_BROWSER_MAIN_H_
|
| +#define CONTENT_BROWSER_BROWSER_MAIN_H_
|
| +#pragma once
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +
|
| +class BrowserThread;
|
| +class CommandLine;
|
| +class HighResolutionTimerManager;
|
| +class MessageLoop;
|
| +struct MainFunctionParams;
|
| +
|
| +namespace base {
|
| +class SystemMonitor;
|
| +}
|
| +
|
| +namespace net {
|
| +class NetworkChangeNotifier;
|
| +}
|
| +
|
| +namespace content {
|
| +
|
| +// BrowserMainParts:
|
| +// This class contains different "stages" to be executed in |BrowserMain()|,
|
| +// mostly initialization. This is made into a class rather than just functions
|
| +// so each stage can create and maintain state. Each part is represented by a
|
| +// single method (e.g., "EarlyInitialization()"), which does the following:
|
| +// - calls a method (e.g., "PreEarlyInitialization()") which individual
|
| +// platforms can override to provide platform-specific code which is to be
|
| +// executed before the common code;
|
| +// - calls various methods for things common to all platforms (for that given
|
| +// stage); and
|
| +// - calls a method (e.g., "PostEarlyInitialization()") for platform-specific
|
| +// code to be called after the common code.
|
| +// As indicated above, platforms should override the default "Pre...()" and
|
| +// "Post...()" methods when necessary; they need not call the superclass's
|
| +// implementation (which is empty).
|
| +//
|
| +// Parts:
|
| +// - 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)
|
| +//
|
| +// How to add stuff (to existing parts):
|
| +// - Figure out when your new code should be executed. What must happen
|
| +// before/after your code is executed? Are there performance reasons for
|
| +// running your code at a particular time? Document these things!
|
| +// - Split out any platform-specific bits. Please avoid #ifdefs it at all
|
| +// possible. You have two choices for platform-specific code: (1) Execute it
|
| +// from one of the platform-specific |Pre/Post...()| methods; do this if the
|
| +// code is unique to a platform type. Or (2) execute it from one of the
|
| +// "parts" (e.g., |EarlyInitialization()|) and provide platform-specific
|
| +// implementations of your code (in a virtual method); do this if you need to
|
| +// provide different implementations across most/all platforms.
|
| +// - Unless your new code is just one or two lines, put it into a separate
|
| +// method with a well-defined purpose. (Likewise, if you're adding to an
|
| +// existing chunk which makes it longer than one or two lines, please move
|
| +// the code out into a separate method.)
|
| +class BrowserMainParts {
|
| + public:
|
| + explicit BrowserMainParts(const MainFunctionParams& parameters);
|
| + virtual ~BrowserMainParts();
|
| +
|
| + // Parts to be called by |BrowserMain()|.
|
| + void EarlyInitialization();
|
| + void MainMessageLoopStart();
|
| + void InitializeToolkit();
|
| +
|
| + // Temporary function since not all the code from chrome is moved over yet.
|
| + virtual int TemporaryContinue();
|
| +
|
| + protected:
|
| + // 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();
|
| +
|
| + // Used to initialize NSPR where appropriate.
|
| + virtual void InitializeSSL();
|
| +
|
| + // Allows an embedder to do any extra toolkit initialization.
|
| + virtual void ToolkitInitialized();
|
| +
|
| + // Accessors for data members (below) ----------------------------------------
|
| + const MainFunctionParams& parameters() const {
|
| + return parameters_;
|
| + }
|
| + const CommandLine& parsed_command_line() const {
|
| + return parsed_command_line_;
|
| + }
|
| + MessageLoop& main_message_loop() const {
|
| + return *main_message_loop_;
|
| + }
|
| +
|
| + private:
|
| + void InitializeMainThread();
|
| +
|
| + // Members initialized on construction ---------------------------------------
|
| +
|
| + const MainFunctionParams& parameters_;
|
| + const CommandLine& parsed_command_line_;
|
| +
|
| + // Members initialized in |MainMessageLoopStart()| ---------------------------
|
| + scoped_ptr<MessageLoop> main_message_loop_;
|
| + scoped_ptr<base::SystemMonitor> system_monitor_;
|
| + scoped_ptr<HighResolutionTimerManager> hi_res_timer_manager_;
|
| + scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_;
|
| + scoped_ptr<BrowserThread> main_thread_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(BrowserMainParts);
|
| +};
|
| +
|
| +// Perform platform-specific work that needs to be done after the main event
|
| +// loop has ended. The embedder must be sure to call this.
|
| +// TODO(jam): change this so that content calls it so that we don't depend on
|
| +// the embedder.
|
| +void DidEndMainMessageLoop();
|
| +
|
| +} // namespace content
|
| +
|
| +#endif // CONTENT_BROWSER_BROWSER_MAIN_H_
|
|
|
| Property changes on: content\browser\browser_main.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|