mozilla源码目录结构说明

白修谨
2023-12-01

该文内容主要来源于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

支持XSLT

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

JavaScript 的调试库

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

处理rdf

security

安全模块,包含加密算法,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的代码


 类似资料: