一、external/webkit/webcore
Accessibility
提供控件的可用性相关的内容。主要说明使用Mac和Win操作系统下的图形控件的可用性,以及使用不同的图形库Gtk、Qt、Wx的控件的绑定和使用情况等。
Mac: MAC OS X
Chromium:一个开源的网页浏览器,也相当于Google Chrome的工程版。
Gtk:是unix-like系统下开发图形界面的应用程序的主流开发工具之一。
Qt:是一个跨平台的c++应用程序开发框架。广泛用于开发GUI程序。
Wx:wxwindows,一种可移植的c++和Python GUI 工具箱
Bindings
将Dom Binding给JavascriptCore方面的代码,同时包含依据idl接口描述文件,自动
生成对应于JavaScriptCore的Binding实现的脚本等内容。
Bridge
主要包含NPplugin方面的接口访问内容。提供了在各个环境下转换c代码和脚本文件的API。
Configurations
X code环境相关的配置文件,用于webcore。
Css
主要包括与css方面相关的内容如解析、不同css规则的定义与实现、css Binding给JS的接口定义等内容。
Dom
主要包括dom方面相关的内容如不同dom元素的定义与实现、dom binding给JS的接口定义等内容。
Editing
在不同平台或是不同的图形软件下的编辑相关的功能,比如与剪切板相关。
English.lproj
本地化文件,表示显示的语言是英文。
ForwardingHeader
定义webcore解析运行的头文件。
History
页面浏览历史,记录不同平台的网页历史内容。
Html
关于html方面相关的内容,如不同html元素的定义与实现、HTMLTokenizer及HTMLParser等内容。其下的Canvas目录定义了3D画布以及WebGL库的相关的内容。
Icu
里面放了专门为Mac OS X 10.4编译的icu相关头文件
ICU:InternationalComponents for Unicode,一个成熟,广泛使用的一套为c/c++和java库提供Unicode的全球化支持软件。
Inspector
该目录是Webkit提供的查看网页源代码,DOM树以及调试脚本的工具。
Loader
主要包括装载资源如html页面、css、js及image等方面内容,还可以装载Cache。
Manual-tests
测试用的html文件。
Mathml
W3C为网页中的数学表达式制定的规范,有编译选项。
W3C:万维网联盟 World Wide WebConsortium,又称W3C理事会
Notifications
内部模块间的事件通信。
Page
主要包括描述一个Web页面所涉及的内容如page、frame、frameview、frametree
、setting、history、chrome、chromeclient等内容。浏览相关内容,并非是我们看到的一个页面,在一次浏览器会话中,它只有一个实例。
Haiku:一种开源OS,从BeOS而来,2001开始,2009发布首版。
Platform
提供了平台相关的具体实现,如事件响应、本地化、网络连接等。主要包括与不同平台或外部库相关的内容如graphics(图形输出方面)、network(网络处理方面)、image-decoders(解析不同图片格式方面)等。
(一) platform\qt
ClipboardQT:实现了管理剪切板的包装
ContextMenuQt和ContextMenuItemQt:对于菜单信息的一个封装,里面没有GUI的图形支持。
CookieJarQt:调用webkit封装的cookitAPI实现对cookie的信息的管理
CursorQt:实现对于光标的封装,提供了多种状态的光标式样。
DragDataQt:用来临时存储UI部分拖拽的对象数据,在QT中需要QMImierData支持,在ARM上可以不做考虑实现。
DragImageQt:功能与上面相似,可以不进行支持。
FileChooserQt:用开打开一个本地文件用的功能,里面包含了对GUI的对话框的调用。
FileSystemQt:用于提供对文件的一些IO支持的函数。
KeyboardCodes.h:里面根据平台的不同定义了相关的键值
Localizations:提供不同平台下返回的一些特定需要的字符串,比如Download Image,都是以函数的形式得到
MenuEventProxy:无用文件,可能是以前版本的QT的支持,新版本没有用处。
MIMETypeRegistryQT:通过输入的MIME字符串返回自定义的MIME类型,仅仅是用到了对字符串的处理。
PasteboardQt:对于剪切板的封装,封装一些设置剪切板内容的工作
PlatformKeyboardEventQt:主要是2个关于平台相关的按键转换函数,需要移植
PlatformMouseEventQt:对于鼠标事件的封装
PlatformScreenQt:封装了关于得到窗口尺寸的函数,需要重写
PlatformScrollBarQt:对平台用的滚动条进行封装,不同的GUI引擎用到的滚动条接口不一,移植比较麻烦,需要结合上层代码重写
PlugInInfoStoreQt:插件管理器,可以考虑参考GTK的方案放弃支持
PopupMenuQt:对弹出式菜单的封装
QWebPopup:貌似实现了弹出式的菜单,里面的做法是用qcombobox开虚拟了一个菜单
RenderThemeQt:实现了UI部分绘图的工作,里面区分了各控件的种类然后进行绘制,需要移植,比较麻烦
ScreenQt:无用,没有编译
ScrollViewQt:一个必须要用的控件,实现了一些接口的封装,实现比较麻烦
SearchPopupMenuQt:无用,所有函数返回空即可
SharedTimerQt:一个计时器,QT用的是Qtimer进行封装
SoundQt:调用一个系统铃声的函数
SystemTimeQt:返回系统时间
TemporaryLinkStubs:QT和GTK都没有实现,可以忽略
ThreadingQt:主要是做了一些线程方面需要支持的封装,QT的和Gtk的实现的东西不大一样,大多没有用处,ms仅仅callOnMainThread函数需要实现
WheelEventQt:需要实现,目的不明
WidgetQt:对于窗口的一个封装,各个平台封装不一,可按照其中一个作为参考
(二) platform\text
里面代码主要是对于基本字符的处理,每个平台实现方式不一样,webkit本身提供一套字符机制,可以沿用,也可以根据平台重载关键部分做一些修改,如QT的方式和mac的方式
(三) platform\network
ResourceResponse.h:写了一个需要实现的派生类,但是在qt下没有实际意义,在mac和cf下有具体实现。
其余文件都是针对于Http服务而写的一些辅助类
(四) platform\graphics
AffineTransformQt.cpp:对于平台基本图形几何变换用的类函数封装
ColorQt:封装Color属性的类FloatPointQt:关于Float点属性类的一个包装
FloatRectQt:关于浮点数属性的矩形类包装
FontCacheQt:关于字体包装后的一个扩展实现,个平台封装的很简单,基本没实现
FontCustomPlatformData:对于内存字体的管理,除了mac意外其余几乎没有做实现,可参照qt的做法
FontQt:对于字体基本操作的封装
GraphicsContextQt:基本绘画的另外上层封装
IconQt:对Icon处理的类
ImageBufferQt:关于Image处理的几个函数,可能用于中间数据转换用
ImageDecoderQt:一个图片处理的接口类,实现比较复杂
ImageQt:一个图片的接口类,许多实现依靠外部实现,比较复杂
ImageSourceQt:在上述2个文件之上的又一个封装,也是实现了关于图片操作的细节
IntPointQt、IntRectQt、IntSizeQt:这3个类如同名字,仅仅是对于数据结构类的一种封
PathQt:对于QPainterPath的一个封装,其他平台ms没有
SimpleFontData:对于字符之上的另一个封装, QT没有实现功能,其他平台有实现
Plugins
插件相关内容,主要包括浏览端如何实现NPPlugin方面的内容。
Rendering
主要包括如何使用样式,组织布局、显示html元素等方面内容。页面渲染相关的内容,在对页面脚本进行DOM树分析之后,需要对这些元素进行渲染和显示。
Resources
需要用到的资源和图标。主要是一些图片文件
Storage
WebStorage相关的内容,保存页面的数据,可以看成是Cookie的升级。
Svg
主要包括与svg方面相关的内容,矢量图形功能。
WebCore.gyp
工程文件。GYP(GenerateYoure Oroject)是google开发的一个脚本工具,这个工具是采用python编写的。它采用了自定义的一套规则,用于生成各种工程文件。
WebCore.vcproj
VC工程文件。
WebCore.xcodeproj
X code工程文件。
Websockets
与网络连接相关的内容。
Wml
Wireless Markup Language。
Workers
Web Workers为WEB前段网页上的脚本提供了一种能在后台进程中运行的方法。一旦它被创建,Web Workers就可以通过postMessage()向任务池发送任务请求,执行完之后再通过postMessage()返回消息给创建者指定的事件处理程序(通过onmessage进行捕获)。
Xml
主要包括与xml方面相关的内容,如xml parse、Xpath、XSLT等。