文档详情

Symbian浏览器系统结构说明.ppt

发布:2019-03-28约2.15千字共33页下载文档
文本预览下载声明
3. http包头中没有『Content-Lenght』字段,也没有『Transfer-Encoding:chunked』时,就只能根据SocketRead读取数据时返回的KErrEof标识来判断。 优化方向考虑 快速滚屏的支持 后退操作的可视化 历史页面的状态保存,当用户返回到历 史页面时能保持离开时的状态(滚动的上下位置、焦点的选择) Dom的直接存储,避免『后退』『前进』加载页面的再一次解析 语言解析方法的状态法 Springsu 2007年10月15日 Symbian浏览器系统结构说明 总体框架 基础支持模块 网络模块 语言解析模块 UI组件模块 UI渲染模块 管理引擎模块 辅助UI 优化方向考虑 移植性考虑 总体框架 基础支持模块 网络模块 http数据流处理(一) 对于基于socket层之上进行的http封装,判断一个完整http请求数据的长度是相当关键的,根据实际程序调试过程中,主要用到了三种方法进行判断: http包头有『Content-Lenght』字段的,直接取出长度判断; 2.http包头中没有『Content-Lenght』字段,但有『Transfer-Encoding:chunked』字段的,可以根据每一个chunk块前面给出的长度进行判断(此时的数据流形式如下图),至到读取的chunk块长度为0; http数据流处理(二) http数据流处理(三) 语言解析模块 语言解析器:进行http文本数据流的语言解析,提取相关语言的tag,形成Doc数据,现在只实现了对wml的解析; 数据生成器:控制语言解析的tag事件跳转(tag开始、结束)以及解析过程中tag栈的数据维护,是解析器与Doc数据的桥梁 ; Doc数据:是解析后数据的集合,包括Dom树与事件集合。 Dom树 UI组件模块 UI渲染模块   把Dom树转换成能在需要显示的UI单元,并进行显示 。 UI数据结构 大 小 为UI数据单元的最小元素 划分UIUnit条件为: 单独一张图片 单独一个输入控件 单独一个列表选择控件 连续一个或多个相同属性且不换行的文字组成的字符串 数据元素的划分方法- UIUnit 其中每一个a元素组成了一个UIUnit,而三个UIUnit又组成了一个UIBlock 数据元素的划分方法- UIBlock 由页面中相临两个换行标识标签(br/)之间所有其它标签组成的UIUnit的集合构成一个UIBlock 例如:对于下面的一段wml文本 划分方法的优点 对于有图片UIBlock,每当图片下载完成需要显示时,只要把对应UIBlock的元素重新进行生成就可以,而在该UIBlock下面的UIBlock只要进行相应的位置移动就可以,减小重新进行排版的计算量; 从Dom树到UI数据 字体管理 UIFrame中以链表的形式存放了所有页面中要用到的字体 『下载队列』:提取出需要下载的图片放入队列,其中每一个队列元素存放了对应图片的CElement数据; 『解码队列』:提取出已在本地需要进行解码的图片放入队列,其中每一个队列元素存放了对应图片的CElement数据; 图片数据链表:存放解码后的图片数据,用于在屏幕上直接显示; 页面中图片的管理   UIFrame使用两个队列与一个链表来管理页面中所有图片从下载到显示过程中的图片处理   UIFrame中以链表的形式存放了所有页面中的事件(主要是跳转事件) 页面事件管理  UIFrame中以链表的形式存放了所有页面中的链接,每一个链接在UI表现上可被用户选中进行相应的访问操作 用户焦点元素管理 负责管理与调度其它模块,主要功能: 网络引擎创建与消息的派发处理 页面跳转事件的控制 语言解析引擎的创建与调度 图片下载解码管理 文件下载处理 历史页面管理 QQ交互标签的处理 用户UI操作事件管理 管理引擎模块 图片下载与解码处理流程 文件下载处理流程 历史页面管理   所有的历史页面都以网页文件的形式存储,在内存中以链表的形式来组织用户访问链接的时间先后关系 历史页面的新增处理 QQ交互标签 『QQ交互标签』是为了浏览器与QQ进行交互跳转而在链接后加了一个特殊参数标识 ,例如: a href=/index_real.jsp?3g_sid=rs3OA/PDvmTJOMkXUX4bTA==amp;KqqWap_Act=5amp;3g_style=1Qzone/a 其中:KqqWap_Act=5 为自定义的特殊参数 『QQ交互标签』的处理机制   当用户访问该链接前,先对URL进行判断,如果有约定的参数标识,则把该URL以回调函数交到上层UI(上层UI再交给QQ)处理,如果上层对该URL进行了处理,则浏
显示全部
相似文档