该文内容主要来源于mozilla的相关文档,可以参考 https://developer.mozilla.org/en-US/docs/Mozilla_Source_Code_Directory_Structure
mozilla的许多项目都共享同一个源码目录,比如火狐浏览器,雷鸟等。这个源码树也包含了构建必须的工具和平台相关的东西。
accessible
该目录主要是实现一些功能,使人们更容易使用该产品,包括那些身体有残疾的人。
addon-sdk
作用和其名字一样,开发火狐等产品插件的开发工具。
b2g
Boot2Gecko项目的源码,构建firefox OS时使用。顺带说一句,firefox OS是基于linux内核和开发的web技术(HTML CSS 等)的操作系统。
browser
火狐浏览器的前端代码(用XUL javascript,XBL,C++开发)
build
构建过程中需要的一些比较杂的东西
CAPS
网页内容的安全性,包含了一组C++接口和代码,基于配置的安全设置,决定当前网页内容的安全性
chrome
包含chrome的注册
config
构建过程中需要的配置文件。
content
用于展现网页结构的数据结构(HTML,SVG,XML的文档,元素,文本节点等)。DOM模型接口和相关的一些操作比如链接处理,表单控制和提交等的实现也在该文件夹下这个目录也包含了XUL XBL XTF 《canvas》 XSLT的实现和事件处理的代码
db
数据库访问模块
db/sqlite3
SQLite数据库
docshell
docshell的实现。docshell用于管理和文档窗口相关的事情。每帧都有其自己的docshell,其中包含了好多方法,比如夹在URI,管理URI内容的监听者等。当使用embedding API想将Gecko嵌入到自己的应用当中时,这是最外面的一层代码。
dom
1. DOM定义的接口的IDL定义,也包括了mozilla的一些对接口的扩展
2. 连接了javascript和DOM的实现
3.实现了部分“DOM Level 0”的核心对象
editor
一个编辑器的实现,主要用于产品中需要输入的地方,支持很多格式和特性
embedding
暂无
extensions
mozilla的一些扩展程序,可以在编译的时候通过设置选项来打开和关闭
extensions/auth
HTTP和其他一些协议的协商认证选项
extensions/content-packs
Content- and locale-pack switching user interface.
extensions/cookie
Permissions backend for cookies, images, etc., as well as the user interface to these permissions and other cookie features.
extensions/cview
查看当前注册的组件和接口
extensions/datetime
时间协议
extensions/finger
手势协议
extensions/gnomevfs
Interface to gnome-vfs to allow using all protocols supported by gnome-vfs inside of mozilla.
extensions/help
帮助模块
extensions/irc
网上聊天
extensions/java
javaconnect模块,用于实现java和组件之间的相互访问
extensions/layout-debug
布局调试模块
extensions/lightning
extensions/mono
extensions/p3p
Implementation of W3C's Platform for Privacy Preferences standard.
extensions/pref
Preference-related extensions.
extensions/python
支持使用python写组件
extensions/reporter
生成错误报告
extension/schema-validation
用指定的方式验证XML文件
extension/spatialnavigation
空间导航,基于连接在屏幕上的位置导航
extensions/spellcheck
拼写检查
extensions/sql
支持访问SQL数据路
extensions/sroaming
extensions/transformiix
extensions/tridentprofile
支持从MSIE中导入配置
extensions/typeaheadfind
gfx
从各个平台中提炼抽象出来的图形操作接口,比如绘图,输出文本和基本的图形等
hal
暂无。应该是硬件抽象层,隐藏底层的硬件
image
图形渲染库。用于解码mozilla支持的图像格式
intl
chardet
web的各种编码支持
ctl
支持复杂文本的布局,有的语言长的很奇怪,一个个字母奇形怪状,不好显示
locale
从操作系统的变量中获取本地使用的语言的代码
lwbrk
用于决定分行和分词的代码。什么时候应该新起一行,什么时候一个词结束
strres
用于支持本地化的字符串资源
uconv
文件各种编码之间的转换代码
unicharutil
unicode文本之间的各种转换算法,比如大小写转换
ipc
进程间通信的代码
js/src
JavaScript的解释引擎
js/jsd
js/xpconnect
支持C++调用JavaScript代码
tools
layout布局模块,将可以显示在屏幕上的所有的对象及其位置构成一个树,并提供了操作这颗树的方法
base
处理渲染树
generic
CSS的基本渲染对象的接口
forms
描述HTML表单控件的渲染对象
tables
CSS/HTML表格的渲染对象
mathml
处理MathML.
svg
处理 SVG.
xul
处理XUL
modules/libjar
zip解压库,jar文件就是zip压缩的
modules/libpref
操作配置文件的库
modules/zlib
zlib的源码
mozglue
胶水层,用来隔离其他模块易变的代码
netwerk
网络层,用来处理真实的网络数据传输。
nsprpub
可以移植的抽象运行环境,比如线程,文件IO 网络IO
other-licenses
一些许可证
parser
解析器,用来解析HTML XML CSS等格式的文档。
parser/expat
解析XML,拷贝的expat源码
parser/html
解析HTML
parser/xml
解析xml,集成expat到Gecko
parser/htmlparser
遗留的用于解析HTML的代码,目前只是用来解析 about:blank 其中的部分代码也用于xml解析中,用来将网络字节流转换为unicode
probes
profile
个人理解为一个框架,用来展示其他模块的运行细节,比如性能分析
python
rdf
处理rdfsecurity
安全模块,包含加密算法,ssl的实现
services
startupcache
storage
sqlit数据的封装,封装成了一个XPCOM
testing
toolkit
工具包,包含很多被雷鸟和火狐共享的前端组件。
tools
构建过程中可选的工具,主要是用于调试
uriloader
uriloader/base
内容分发模块,用于加载url,然后寻找一个合适的内容监听者来处理加载的数据。也管理web进程之间的通知
uriloader/exthandler
处理一些Mozilla不能处理的内容,主要是负责展示帮助对话框和一些帮助信息或链接
uriloader/prefetch
预加载代码,为了提高加载速度
view
视图管理模块,逐渐被废弃
webapprt
XXX this needs a description.
widget
xpcom
类似于微软的COM
xpfe
SeaMonkey的前端
xulrunner
xulrunner的代码