android webkit 总结

前段时间研究了下android平台的webcore,害怕以后忘记,作个记录。

android4.1  external/webkit/路径下就是浏览器的引擎的核心代码。

一:先就  external/webkit/Source/webcore/目录下的主要文件夹进行说明:

1css文件夹下主要包括与css方面相关的内容如解析,包括字体,颜色,样式以及多媒体控制等的处理和解析。

2dom文件夹下包括dom方面相关的内容如不同dom元素的定义与实现。

3html文件夹下主要包括html方面相关的内容如不同html元素的定义与实现。

4loader文件夹下主要包括装载资源如html页面、cssjsimage等方面内容;

5page文件夹是关于网页的主要包括描述一个网页页面所涉及的内容如pageframeframeviewframetreesettinghistorychromechromeclient等内容;

6rendering文件夹主要包括对对html等标签的渲染显示。

xml 文件夹下是有关XML文件的解析。

二:下面着重分析HTML文件中的重要文件。

html文件夹下有三个子文件夹 Canvas  Parser  Shadow

canvas文件夹下主要是

Parer文件夹下主要是对各种网页元素进行解析,

Shadow 文件夹下主要用于创建各种功能性的网页元素,例如播放控制的按钮及文本控制等网页元素。

html根目录下个类(cpp文件)的用途:

1AsyncImageResizer类用来处理Image标签元素

2: BaseButtonInputType类用来对于基于按键时间的输入进行处理包括创建输入按钮的渲染,并处理一些按键事件.

3: BaseCheckableInputType类的作用是查看html表单的输入状态,以及对有关Input按键事件的处理.

4: BaseDateAndTimeInputType类的用途是对于时间类型的输入进行处理。

5BaseTextInputType类的作用是对text文本输入类型进行处理。

6ButtonInputType类用来处理button input 的类型,包括表单和文本。

7CheckboxInputType类用来处理网页上的复选框标签。

8ClassList类的作用是处理网页的列表

9DataGridColumnList类是用来处理日期格式的布局

10DateComponents主要是一些日期相关的组件

11DateInputType类是关于日期输入类型的处理,只是一些接口。

12: EmailInputTypeEmail的输入类型处理类

13FileInputType文件输入类型的处理类。

14FormAssociatedElement表单相关的元素处理。

15FTPDirectoryDocument类是关于FTP文件路径的一些处理,与网页FTP服务相关的类

16HiddenInputType隐藏输入类型的处理,是个接口类

17HTMLAppletElement网页上小控件的元素处理类

18HTMLAreaElementweb上某块区域进行解析,包括鼠标事件和键盘事件的处理。

19HTMLAudioElement类的作用是对于网页上的audio标签进行创建JS构造函数

20HTMLBaseFontElement类是对于网页上字体的处理

21HTMLBodyElement类是对于网页body标签的处理和解析

22HTMLBRElement类是对于网页br标签的处理和解析

23HTMLButtonElement类是对于网页button标签的处理和解析,包括对button事件的处理

24HTMLCanvasElement类是对HTMLcanvas标签的处理和解析,包括图形,图片等

25HTMLDivElement类用来处理div标签元素

26HTMLDocument类用来处理html Document对象

27HTMLEmbedElement类是用来处理HTML5的新的标签 EMBED 

28HTMLFieldSetElement的作用是处理和解析Fieldset标签

29HTMLFontElement是对于html Font标签的数量和解析,包括字体的大小,颜色和样式

30HTMLFormCollection类是对于表单元素集合的处理和解析

31HTMLFormControlElement是对表单控制元素的处理和解析,包括键盘事件和鼠标事件

32HTMLFormElement类的作用是对form标签的解析

33HTMLFrameElement是对于frame 标签的处理

34HTMLHRElement是对于HR 标签的处理

35HTMLImageElement是对于Image 标签的处理和解析

36HTMLImageLoader类的作用是是对于图像资源的load

37: HTMLInputElement类的作用是对于网页Input元素的处理,包括对单选框和编辑框等的处理和解析

38HTMLKeygenElement类是处理Keygen标签,与表单的秘钥有关

39HTMLMediaElement是对网页中多媒体元素的解析,包括获得媒体的URL,对媒体文件的播放控制,以及对于媒体播放状态的改变,是很重要的类,video元素大部分行为和属性的定义.包括audio元素也是继承该类.

40HTMLMetaElement类是对于meta标签的处理和解析,<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词

41HTMLMeterElement类是对meter标签的处理和解析,<meter> 标签定义度量衡。仅用于已知最大和最小值的度量。

42: HTMLOptGroupElement类是对于optGroup 标签的处理和解析,<optgroup> 标签定义选项组

43HTMLOptionElement类是对于option标签的处理和解析

44HTMLOutputElement类是对于output 标签的处理和解析,和输出有关

45HTMLPreElement是对Pre标签的处理和解析

46HTMLScriptElement类是对Script的标签进行处理和解析 <script> 标签用于定义客户端脚本,比如 JavaScript

47HTMLSelectElement类是对Select的标签进行处理和解析

48: HTMLTableElement类是表单相关的解析,包括table的标题,表头,行,列等于table相关的类还有HTMLTablePartElementHTMLTableRowElementHTMLTableRowsCollectionHTMLTableSectionElement

49HTMLTextAreaElement类的作用是对于text区域的解析

50HTMLTitleElement类是对title标签的处理和解析

51HTMLVideoElementvideo标签的处理和解析,对视频的宽,高,播放模式的处理

52ImageDocument类是对image图像的控制处理,包括图片更新,扩大缩小等操作的处理

53ImageResizerThread是对网页图片的调整线程类

54InputType输入类型的基类,对所有input类型进行处理,包括,文本,日期,邮件,密码,数字,单选框等,不同的输入类型有不同的类进行解析。

三:external/webkit/Source/webwebkit/目录下的文件主要是不同平台的处理接口,包括QT,WIN,MAC,WINCE 等,我们只来看android平台下的

android根目录下的文件分析

1RenderSkinAndroid类与控件渲染相关,所有的渲染控件类都需要从该类派生,是重要的类

2RenderSkinMediaButton是多媒体相关的控件的渲染和绘制,play ,pause

android/WebCoreSuport/目录西主要类分析

1ChromeClientAndroid类主要处理WebCore中与Frame相关的操作。包括设置状态栏、滚动条、Javascript脚本提示框等。当浏览器中有关事件产生时,ChromeClientAndroid类的相应方法会被调用

2 FrameLoaderClientAndroid类提供与Frame加载相关的操作

3MediaPlayerPrivateAndroid此类是android平台很重要的类,继承自  MediaPlayerPrivateInterface类。该类主要用于和HTML5VideoviewProxy类交互。定义了一个HTML5VideoviewProxy类的代理结构成员变量m_glue,用来保存HTML5VideoviewProxy类的实例和方法。,并对Media(videoaudio)控制的接口封装,包括对media资源的load,play,和其他控制等

4WebRequest类是对网页请求的处理

5WebResourceRequest类是对网页资源的请求处理。

6WebResponse类是对网页请求的响应处理。

四:播放流程:

浏览器引擎加载完 HTML 文档后,开始解析里面的元素搭建 DOM tree, Render tree 和加载子资源。在解析 video 元素时,会创建 HTMLVideoElement 类对象和对应的 RenderVideo 对象

                      Play()----------->playInternal()--------------------->updatePlayState()------------------------->play()------------------->>play()

ResourceLoader.cpp    HTMLMediaElement.cpp   MediaPlayerPrivateAndroid.cpp     MediaPlayer.cpp   HTML5VideoViewProxy.java

      加载网络资源                   解析media相关元素                                                        java层



                                                     

                                                                                                   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值