mazilla mozilla
What's mozilla
Purpose of this page
Characteristics of mozilla
Survey of mozilla
Web tool
Technology of mozilla
Other resource
Building mozilla
Construction of environment
for building
Checkout of source
Procedure for building
Image of after-building
Execute mozilla
What's embedding
Concept of embedding
Structure of PPBrowser
Analysis of PPBrowser
Structure of embedding
Structure of marbrow
Analysis of marbrow
What's fizzilla
Build fizzilla
Embedding of fizzilla
Talk with Mr. Yatsugi

Structure of marbrow

How is marbrow !?

On the model of PPBrowser, I embedded mozilla browser in my original simple framework.

Its main features are

  • not to use the existing framework, but to implement in plain Macintosh code
  • to implement the contols except for the browser, not by mozilla widget but by Macintosh control
  • a trial that 1 window has 2 browser
  • to test the file downloading by netlib
  • to support addition of bookmark and jump to bookmark (editing is unsupported)

  • Build
  • Source tree structure
  • Visual structure
  • Class structure


Download the source of marbrow

If you download the source from the above URL and extract it, the folder named marbrow will appear. Then please copy this folder under


This is the same place as PowerPlant folder of PPBrowser exists.

You can build by CodeWorrior project shown below.


Executables of building result is outputted in the places shown below.

mozilla/dist/viewer_debug/marbrow Debug

[Screen shot of PPBrowser]

Source tree structure


main.cpp - Main process
glob.cpp - Grobal variale
init.cpp - Initializing/Terminating process
evnt.cpp - Event process
docu.cpp - Document process
err.cpp - Showing errors
wmng.cpp - Window manager


dlog.cpp - Showing modal dialogs
MMlDlog.cpp - Modeless dialog class (MMlDlog)
MProgDlog.cpp - Progress dialog class (MProgDlog)


dnload.cpp - netlib download process


ustr.cpp - Character string utility
ufile.cpp - File utility
uprcs.cpp - Process utility
uinetc.cpp - Internet Config utility
udlg.cpp - Dialog utility
UMacUnicode.cpp - Unicode conversion utility


MView.cpp - View basic class (MView)
MWind.cpp - Window class (MWind)
MLoca.cpp - Location bar class (MLoca)
MStat.cpp - Status bar class (MStat)
MButt.cpp - Button class (MButt)
MBrow.cpp - Browser class (MBrow)
MChrome.cpp - Chrome class (MChrome)


marbrow.rsrc - Resource file
cfmAlias.rsrc - Alias resource for Release Building
cfmAliasDebug.rsrc - Alias resource for Debug Building

Embed API

EmbedAPI.mcp - Project for Embedding Library
EmbedAPI.o - Embedding Library for Release Building
EmbedAPIDebug.o - Embedding Library for Debug Building

Mac Libraries - Library for Macintosh

InternetConfigLib - Stub library for Internet Config

Moz Libraries - Library for mozilla (Common to Release & Debug)

NSAppStartup.o - Startup for mozzila (mozilla/dist/mac/lib/)
InterfaceStubs - InterfaceLib stub library for mozilla (mozilla/dist/client_stubs/)

Moz Libraries/Release - Library for mozilla (For Release)

appfilelocprovider.o - (mozilla/modules/appfilelocprovider/)
mpfilelocprovider.o - (mozilla/modules/mpfilelocprovider/)
gfx.shlb - (mozilla/dist/viewer/Essential Files/)
NSRuntime.shlb- (mozilla/dist/viewer/Essential Files/)
NSStdLib.shlb- (mozilla/dist/viewer/Essential Files/)
NSPR20.shlb- (mozilla/dist/viewer/Essential Files/)
RaptorShell.shlb- (mozilla/dist/viewer/Essential Files/)
widget.shlb- (mozilla/dist/viewer/Essential Files/)
xpcom.shlb- (mozilla/dist/viewer/Essential Files/)

Moz Libraries/Debug - Library for mozilla (For Debug)

appfilelocproviderDebug.o - (mozilla/modules/appfilelocprovider/)
mpfilelocproviderDebug.o - (mozilla/modules/mpfilelocprovider/)
gfxDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
NSRuntimeDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
NSStdLibDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
NSPR20Debug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
RaptorShellDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
widgetDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)
xpcomDebug.shlb - (mozilla/dist/viewer_debug/Essential Files/)

Visual structure

In marbrow, the visual structure is constructed dynamically on the program.

In docu.cpp, DoNew() constructs the main window and DoNewPlain() constructs the plain window.

The visual structure of the main window is fixed and like this.

Main window (MWind)
+ Browser 1 (MBrow)
+ Location bar for Browser 1 (MLoca)
+ Status bar for Browser 1 (MStat)
+ Print button for Browser 1 (MButt)
+ View Source button for Browser 1 (MButt)
+ Home button for Browser 1 (MButt)
+ Exit button (MButt)
+ Browser 2 (MBrow)
+ Location bar for Browser 2 (MLoca)
+ Status bar for Browser 2 (MStat)
+ Back button for Browser 2 (MButt)
+ Forward button for Browser 2 (MButt)
+ Stop button for Browser 2 (MButt)
+ Refresh button for Browser 2 (MButt)

And the visual structure of the plain window is like below. But the chrome flag may prevent some parts from being shown.

Plain window (MWind)
+ Browser (MBrow)
+ Location bar (MLoca)
+ Status bar (MStat)
+ Back button (MButt)
+ Forward button (MButt)
+ Stop button (MButt)
+ Refresh button (MButt)

Class structure

MView (MView.cpp, MView.h)

This is the foundation class (virtual class) that defines member varialbes and methods visual parts should implement.

MWind (MWind.cpp, MWind.h)

This is the class of the main window.

MLoca (MLoca.cpp, MLoca.h)

This is the class of the location bar.

MStat (MStat.cpp, MStat.h)

This is the class of the status bar.

MButt (MButt.cpp, MButt.h)

This is the class of buttons.

MBrow (MBrow.cpp, MBrow.h)

This is the class of the browser (HTML part).

MChrome (MChrome.cpp, MChrome.h)

This is the class of the browser chrome. This class implements necessary interfaces and is in close cooperation with the browser shell, and acts as a mediator between the browser shell class and mozilla side.

Copyright (C) 2000-2002 Symphony, Inc. All Rights Reserved.