Google Chrome is built with open source code from Chromium.

Except as otherwise noted, the content of this page is licensed under a Creative Commons Attribution 2.5 license, and examples are licensed under the BSD License.
For Developers‎ > ‎

Browser Bootstrapping

The purpose of this document is to help organize and coordinate the effort to get a browser window up and running on Mac and Linux using as much of the code that is already there as possible (with temporary header and link scaffolding, plus ifdefs) as opposed to writing a bunch of throw-away code that duplicates what already exists on windows.

Our goal is to get a double-clickable app with a working browser window using the real multi-process infrastructure (not TestShell) by mid-February. To that end, we put together a high-level list of things that need to be worked on.
  1. IPC between two processes - done!
  2. UI Views
    1. Linux: Factor out windows specific code in chrome/views/ and write GTK+ implementations.
    2. Mac: We'll write our own views in chrome/cocoa probably
  3. RenderView
  4. RenderViewHost
  5. RenderProcess
  6. RenderProcessHost
  7. chrome_dll_main() and browser_main()/renderer_main()
    1. All: chrome_dll_main() and browser_main() stubbed using temp_scaffolding_stubs.
    2. Mac: building and running as part of chrome executable that gets to a platform UI event loop and can be quit from menubar.
    3. Linux: not yet building any main() infrastructure
  8. Browser
    1. All: currently scaffolding. Big chunks commented out. Command handling and creation/initialization working cross-platform.
    2. Mac: browser window being created and fleshed out
  9. BrowserWindow
    1. Mac: simple NSWindow/Cocoa bridge written, waiting to be fleshed out more
    2. Linux: not yet implemented
  10. Profile Stubs -- cookies & cache
    1. All: enough scaffolding to get main & browser up (temp_scaffolding_stubs)
  11. Session History -- Back/Fwd navigation
  12. Cocoa AppController - Menus/Quit/etc. routed to app, windows, etc.
    1. Mac: CommandUpdater working for browser and application, can create new windows at will! Go browser go!
    2. Linux: N/A
  13. UrlBar without completion/suggest (no OmniBar)
  14. Simple page Status/Progress
  15. WebContents
    1. All: scaffolding in temp_scaffolding_stubs
The linux folks have already started working on 1-5. Since they are mainly based in SF, we figured the Mac folks in MtnView would be best suited to work with them and make sure everything was coming together on the Mac side (especially since Jeremy has already done a lot of work on the IPC refactoring).

Items 7-13are top-down and focused on creating a new platform browser window using the Browser model class. Pink has started stubbing out Browser/BrowserWindow as well as the Mac-specific Cocoa application controller (10). Work still needs to be done on Linux to get started on item 6, the main functions, which are currently building on Mac. Many of the larger supporting subsystems to main() and the browser window (profile, etc) are currently stubbed out (see chrome/common/temp_scaffolding_stubs.h/.cc) and can be worked on individually, in isolation.
Subpages (1): Mac Followup