Mozilla研究—mozilla的目录结构

Mozilla研究—mozilla的目录结构

 

转载时请注明出处和作者联系方式:http://blog.csdn.net/absurd

作者联系方式:李先静<xianjimli at hotmail dot com>

更新时间:2007-3-25

 

mozilla是一个以浏览器为中心的软件平台,它在我们平台中占有重要地位。我们用它来实现WEB浏览器、WAP浏览器、邮件系统、电子书和帮助阅读器等应用程序。为此,我最近花了不少时间去阅读mozilla的代码和文档,我将写一系列的BLOG作为笔记,供有需要的朋友参考。本文介绍mozilla的目录结构。

 

Accessible 对辅助功能的支持。这些功能主要为残障人士提供的,比如放大镜和屏幕阅读器等。Mozilla是基于GNOMEATK实现的,要注意的是,它只是提供对辅助功能的支持,并没有实现这些功能,这些功能是由专门的应用程序实现的。

 

Caps 提供了一些根据安全设置等信息决定系统能力的接口,比如是否允许执行脚本,是否接受cookie,是否记住密码等等。

 

Chrome 一种本地资源访问协议,它提供了抽象的URL到物理文件之间的映射。这样,应用程序可按访问普通URL的方式去访问资源,而不必关心资源的物理位置。不过mozilla似乎没有用它,而用的是RDF下面那个实现。

 

Config Makefile的编译规则、configure生成的配置和其它一些用于编译的脚本。其中autoconf.mkconfigure生成的配置,如果发现编译选项不对,可以看看这个文件。

 

Content 文档对象模型(DOM)的主要代码,各种负责标记语言的语法树的构建和表示。其中xxxContentSinkxxx负责语法树的构建,而xxxDocumentxxxxxxElementxxx负责语法树的表示。

 

Db/dbm 数据库实现,估计主要是给邮件系统用的,minimo好像没有用到。

 

Docshell/Webshell 浏览器的总控模块,负责把各个模块协调起来。

 

Dom 文档对象模型的界面部分,负责比如窗口、焦点和事件处理等等。

 

Editor 编辑器的实现,支持text/textmail/html/htmlmail四种编辑类型。

 

Embedding 浏览器控件的实现,有基于不同GUI的封装。在Win32下实现成了activex控件,接口与IE Control类似吧。应用程序可以把浏览器控件嵌入到自己的窗口中,minimo就是按这种方式实现的。

 

Extensions 各种扩展的实现,像帮助系统和javascript调试器等等。

 

Gfx 对图形/图像处理的封装库,有基于GTKQTWin32GUI的实现。

 

Widget 对窗口系统的抽象,有基于GTKQTWin32等的实现。

 

Intl 对国际化的支持,包括编码转换和字符串处理等等。

 

Ipc 一套进程间通信机制,在minimo里没有用到,所以没有仔细看。

 

Jpeg JPG图像编解码库。

 

Js javascript解释器和XPConnect的实现。

 

Minimo minimo应用程序。

 

Modules 压缩/解压、图像、注册表和plugin等等。其中libpr0n是对各种图像文件格式的包装,提供了mozilla框架需要的接口,如果图像处理不正常,不防从这里入手。

 

Netwerk 网络协议、mimecookiecache和格式转换。

 

Nsprpub 可移植的运行库。

 

Parser解析器,负责各种XML文件和HTML文件的解析,基于builder模式实现,调用content中的xxxContentSinkxxx去构建语法树。

 

Plugin 插件。

 

Profile 主要功能是管理各种配置文件的路径,它实现了nsIDirectoryServiceProvider,如果发现获取配置文件位置失败,可以看看nsProfileDirServiceProvider::GetFile

 

Rdf 资源描述框架(RDF)的解析器等。这里面也实现了Chrome协议。

 

Security 安全相关的库如SSL等实现。

 

Storage 数据存储,可能是基于前面的数据库实现了mozilla需要的接口。

 

Toolkit 一些工具,如安装程序(installer)、扩展管理器和下载管理器等,主要是界面部分。

 

Xpfe 据说是一套应用程序框架,称为FrontEnd。里面有很多功能和toolkit提供的类似,不知是不是用来取代toolkit的。

 

Xpinstall 安装程序的实现。

 

Mail 邮件系统,各种邮件协议和邮件内容的解析器等。

 

Layout 界面排版布局,相当于mozilla实现的一套GUI系统。每个控件称为一个Frame,要实现PaintHandleEvent等接口函数。如果显示或者事件处理不正常,可以看看对应Frame

的这些函数。

 

View 视图和视图管理器。

 

Xpcom XPCOM的实现。

 

Uriloader 对协议的包装,并提供了一些附加功能:定义nsIWebProgressListener2接口用显示下载状态,调用StreamConv转换文件格式,起动外部分应用程序打开mozilla无法处理的文件等。

 

~~end~~

 

 
原文地址:https://www.cnblogs.com/zhangyunlin/p/6167739.html