首页 WebKit之webkit目录结构

WebKit之webkit目录结构

举报
开通vip

WebKit之webkit目录结构2010/10/23 1.JavaScriptCore,是javascsript的引擎部分,其实大概过程就是语法分析-》语法树构建-》变量检查-》语法树执行,其中语法分析,可以借助lex或者flex,语法分析可以借助yacc或者bison。 2.WebKit—WebKit部分 一.有关Port方面的概述 WebKit Port方面的内容是可以很广的,例如可将不同的图形库、网络库与WebCore集成,提供不同的Port接口供外部程序使用等,例如同样在windows 平台上可以运行的Google Chrome...

WebKit之webkit目录结构
2010/10/23 1.JavaScriptCore,是javascsript的引擎部分,其实大概过程就是语法分析-》语法树构建-》变量检查-》语法树执行,其中语法分析,可以借助lex或者flex,语法分析可以借助yacc或者bison。 2.WebKit—WebKit部分 一.有关Port方面的概述 WebKit Port方面的内容是可以很广的,例如可将不同的图形库、网络库与WebCore集成,提供不同的Port接口供外部程序使用等,例如同样在windows 平台上可以运行的Google Chrome 和Safari 就是针对WebKit的不同移植。我们想了解有关Port 方面的主要内容在于提供不同的Port接口供外部程序使用以及如何与外部程序交互,因为WebKit中的其它两部分WebCore、JavascriptCore实现,从逻辑上讲是不直接提供接口给外部程序使用的。同时为了完成浏览器的核心功能,WebKit也需要从外部程序中通过Port接口的方式获取一些支持。 从这个角度讲WebKit 作为一个相对独立的整体,它与外部程序之间的交互也就有一组相对固定的接口来定义及维护它们之间的关系,它们之间的关系与插件跟浏览器引擎之间的关系完全类似,接口相当一组 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,有的是由WebKit 来实现,而供外部程序调用,有的则正好相反。 二.WebKit Port移植实现分析 1.WebCore交互接口 在WebKit源代码目录结构中WebKit目录下分别包含gtk、mac、qt、win、wx 目录,其分别对应不同的Port 移植方式,在每一个目录下面都包括WebCoreSupport目录,而在不同的WebCoreSupport目录下分别包含有对类接口WebCore::ChromeClient、WebCore::ContextMenuClient、WebCore::DragClient、WebCore::EditorClient、WebCore::FrameLoaderClient 、WebCore::InspectorClient 等的实现,它们代表外部程序提供给WebKit 内部使用的接口实现,其中WebCore::ChromeClient、WebCore::FrameLoaderClient非常重要。 2.连接模块loader 对WebCore中的page/loader等方面的类提供对应的Port的实现支持如EventHandlerWin.cpp、FrameLoaderWin.cpp、DocumentLoaderWin.cpp、DocumentLoaderWin.cpp、WidgetWin.cpp、KeyEventWin.cpp等。 Loader 是在WebKit 里面一个很重要的连接器,通过loader 发起IO下载网页,再通过loader发起解析,已经最后的渲染功能。 3.显示模块WebView和WebFrame WebView 及WebFrame 主要功能是方便外部程序嵌入WebKit不同的Port 移植对WebView 及WebFrame的定义及实现有所不同,但其与WebCore中的Page、Frame 之间的关系图描述相一致。具体关于WebView、WebFrame的定义与实现,特别是初始化时的动作可根据不同的Port 移植而有所不同,同时初始化时会将上面提到的WebCore Port接口实现告诉WebKit内部。 4.Android中对Port移植方面的实现 其实现有点特殊,由于Andriod将WebKit以一个Java类接口的方式提供给Java环境使用(不像上面提到的Chrome、Safari等都是将WebKit 以一个C++动态或静态库的方式供C/C++外部程序调用),这样WebKit 内部与外部即JavaVM 的交互(如上面提到的ChromeClient、FrameLoaderClient接口实现)需要一个Bridge 类来协调处理,同时WebView、WebFrame接口绑定给JavaVM的jni接口实现也需要通过这个Bridge 来支持协调处理。具体可详细参考android源码代码中WebCore\platform\android目录下的源文件。 5.结论 通过进一步了解WebCore Port接口及其实现,可以加深这样一个认识。如果从MVC的角度来看整个基于WebKit的浏览器(当然不尽合理),WebKit 的Port 部分相当于V 部分,它提供显示页面内容及其辅助信息(如提示状态)的场所(即原生窗口)以及控制该显示场所的状态变化及消息响应(如改变大小、鼠标移动等);而M部分往往由WebCore来实现,至于WebCore如何组织DOM则往往由htmlparser部分根据DOM定义来组织,如何在提供的显示场所显示Web内容则往往由WebCore中的layout部分来实现,其中充分利用了Css定义来布局显示该显示的内容。一旦涉及控制或动态处理往往由Port部分发起而由Javascript脚本来实现处理,其任务由JavascriptCore或V8来完成。 一般说来新打开一个页面,Port部分需要提供一个主显示场所(即原生窗口),如果页面中含有iframe标签,则需要在主显示场所内创建一个子显示场所,以显示iframe标签对应src的内容。如果页面中含有embed/object等插件标签同样往往也需要在主显示场所内创建一个子显示场所(除非windowless),以交由插件实现在提供的显示场所中显示内容。 特别需要说明的是我们通常看到的页面表单元素input text field、textArea、button、radiobutton等往往不像window 图形库中的按钮、菜单、输入框等会对应一个原生窗口,页面中的表单元素在一个显示场所(即原生窗口)中完全是利用Css等通过layout方式来达到我们所看到的类似原生按钮、输入框、列表框、滚动条等效果,其中特别是能准确定位元素大小、设置focus、光标显示、响应事件等,这充分的说明了浏览器引擎内部布局部分的威力所在。 从另外一个角度来看一个页面一般说来(除非遇到iframe或插件需要另外提供一块子画布)相当于一块画布,浏览器引擎能在其精确的位置绘制不同颜色的文字、图片、图标等,同时根据当前的鼠标及一个模拟的输入提示光标位置,接收键盘输入操作。页面中的绝大多数元素与原生的窗口元素几乎没有关联,完全通过组合、布局、准确定位来处理一切。 三、WebKit目录分析 此目录位于WebKit 的最上层,定义了与应用相关的一些接口,因此它是平台相关的,每个子目录都是对应平台的完整实现: 1.android:主要为Android中对Port移植方面的实现。 /jni目录中提供本地java类接口以实现WebKit内部与外部即JavaVM 的交互并通过jni中的Bridge 类来支持协调处理; /plugins目录提供Android平台插件支持的相关性操作; /wds目录中提供支持多用户的client端; /WebCoreSupport目录中实现Android系统中外部程序提供给WebKit内部使用的接口。 2.cf:Core Foundation, MAC OS X 上的系统级C语言API接口 /WebCoreSupport目录中实现了外部程序提供给WebKit内部使用的接口。 3.chromium:Google Chrome 开发平台。 该目录为Android系统中浏览器的功能实现。 4.English.lproj:本地化文件,默认显示英文并提供几个nib文件。应用程序的主 nib文件包含主菜单,也常常包含了窗口和其他对象。程序也常带有其他nib 文件。每个nib文件包含各个归档对象,每个对象的信息,包括其大小和位置。 5.gtk:GTK(GIMP Toolkit)是一套跨多种平台的图形工具包,按LGPL许可协议发布的。 该目录为Android对利用GTK图形库的系统的移植实现。 /Docs:其中包括一些xml文件和txt文件,记录平台版本、信息等。 /Gdom:只有一个文件ConvertToGCharPrivate.h实现string类型转换为utf8类型。 /Po:包含一系列.po文件 PO,持久对象(Persistent Object),它们是由一组属性和属性的get和 set方法组成。在o/r映射的时候出现的概念,如果没有o/r映射,没有 这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的 处理。可以看成是与数据库中的表相映射的java对象。最简单的PO 就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。 PO中应该不包含任何对数据库的操作。PO的属性是跟数据库表的字 段一一对应的。PO对象需要实现序列化接口。 /Resources:包含Error.html文件,显示出错页面。 /Tests:对下载、读取、网络请求、回退、设置、窗口、网络浏览等功能的测试。 /WebCoreSupport目录实现了GTK平台下外部程序提供给WebKit内部使用的接口。 /WebKit:实现下载、网络请求、应答、回退、数据处理、历史记录、界面等功能。 6.haiku:Haiku is a new open-source operating system that specifically targets personal computing. Inspired by the BeOS, Haiku is fast, simple to use, easy to learn and yet very powerful. 一种开源OS ,从BeOS 而来,2001 开始,2009 发布首版。 该目录实现了Haiku平台移植的相关接口。 /WebCoreSupport目录实现了Haiku平台下外部程序提供给WebKit内部使用的接口。 7.mac:实现了WebKit在MAC OS X的Port移植。 /Carbon:Carbon是苹果电脑操作系统的应用程序编程接口(API)之一。 Carbon和Cocoa,X11,POSIX,JA V A并列成为Mac OS X五个主要的API。 与Cocoa相较之下,Carbon是非物件导向(Procedural)编程语言API,而Cocoa是面向对象(Object Oriented)的编程语言API。Carbon是比Cocoa 更为低层次的API,比较类似于微软视窗操作系统的Win32 API。 /Configurations:配置文件。 /DefaultDelegates:默认委托类实现。 委托类似于C 或C++ 中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与 C 或C++ 中的函数指针不同,委托是面向对象、类型安全的,并且是安全的。 /Dom:Dom解析实现。 /ForwardingHeaders:头文件。 /History:历史记录。 /Icu:里面放了专门为Mac OS X 10.4编译的icu相关头文件。 /Misc:MISC(Mobile Information Service Center,移动信息服务中心)。文件夹中均是头文件。 /Panels:界面nib文件。 Cocoa:苹果的面向对象开发框架,用来生成Mac OS X 的应用程序。 Cocoa通过称为NIB文件的特殊文件控制界面,它的名字来源与它 的扩展名。这是Interface Builder创建的文件。NIB文件基本上是 你界面的每个对象的汇总,包括这些对象的属性和与其它对象的联 系。我前面提到过任何面向对象编程的应用程序都是对象的网络; NIB文件是处理界面的对象组成的子网络。 /Plugins:插件相关内容实现。 /Resources:提供相关资源。 /Storage:提供数据及其安全性存储等相关头文件。 /WebCoreSupport目录实现了Mac平台下外部程序提供给WebKit内部使用的接口。 /WebInspector:Inspector 是WebKit 提供的查看网页源代码,DOM 树,以及调试脚本的工具,本目录包含了实现此功能的相关头文件。 /WebView:网页内容显示等相关头文件。 /Workers:头文件。 8.qt:QT是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提 供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。该目录实现了Webkit 在QT平台上的Port移植。 /API:提供QT平台相关的应用程序API接口。 /Docs:提供相关信息。 /Symbian:塞班系统相关信息。 /Tests:QT平台下浏览器测试相关程序。 /WebCoreSupport目录实现了QT平台下外部程序提供给WebKit内部使用的接口。 9.Scripts:里面只包含Generate-webkitversion.pl文件,为perl脚本文件。 Perl是一种高阶、通用、直译式、动态的程式语言,是为了在UNIX上进行报表处理变得更方便而决定开发一个通用的脚本语言,Perl借取了C、sed、awk、shell scripting以及很多其他程式语言的特性。其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。 10.WebKit.xcodeproj:为xcode工程文件目录,内部只包含Project.pbxproj文件。 Xcode是一个强大的专业开发工具,可以简单快速、而且以您熟悉的方式执行绝大多数常见的软件开发任务。Xcode 2.0 是开发人员建立Mac OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径。 Xcode 2.0 将Mac OS X 的轻松使用,UNIX 能量以及高性能的开发技术集合在一起。 11.win:实现了WebKit在Windows平台下的Port移植。 /Interfaces:提供windows平台下浏览器各种应用功能的接口。 /WebCoreSupport目录中实现windows平台中外部程序提供给WebKit内部使用的接口。 /WebKit.resources:资源文件。 /WebKit.vcproj:windows平台下工程文件。 12.wx:wxWindows,一种可移植的C++和Python GUI工具箱,by Julian Smart。 该目录实现了wx平台移植的相关接口。 /Bindings:Python绑定相关。 /WebCoreSupport目录中实现wx中外部程序提供给WebKit内部使用的接口。
本文档为【WebKit之webkit目录结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_620441
暂无简介~
格式:doc
大小:26KB
软件:Word
页数:0
分类:互联网
上传时间:2019-09-11
浏览量:8