Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532047
  • 博文数量: 237
  • 博客积分: 2175
  • 博客等级: 大尉
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-05 22:02
个人简介

目前在一家公司担任软件总监,主要涉及智能手机,笔记本电脑的开发

文章分类

全部博文(237)

文章存档

2024年(18)

2023年(68)

2022年(13)

2021年(7)

2020年(11)

2019年(3)

2018年(10)

2017年(8)

2012年(7)

2011年(4)

2010年(32)

2009年(41)

2008年(6)

2007年(9)

分类: LINUX

2008-02-11 22:37:23


osb-browser是Nokia对于browser的一个例子,分析它是因为感觉它比较简单。不过这个项目现在已经停止,bugs很多,不建议用。
它分为4部分:
1) osb-browser: 浏览器的外壳。它主要是类OSBBrowser. OSBBrowser 包括GtkWidow __parent_, *global, *tab , *xml . xml指的是glade文件,而tab为一个notebook, 它的container为view_container .而对于tab的每一页,是一个html_engine ,它为一个Webi对象,通过函数webi_new()。
Webi对象可以看成是浏览器内核对外壳的接口,它有webi_load_url,webi_go_back,webi_go_forward,webi_get_location等供外壳调用的函数,同时在webi_class_init中定义了很多信号,status,location,title,set-cookie,load-start等许多信号,外壳收到这些信号做相应的处理,比如显示状态条,设置cookie允许还是拒绝。

2) osb-nrcit
我们来看看Webi类,它有GtkBin __parent_,MyRoot* browser ,GtkWidget* child ,char* title,
char* location 等,在函数webi_init(Webi* self)中 child = browser->mainFrame()->widget(),也就是FrameImpl类的m_eventBox,然后child 被加到self包容器中。(而self,也就是Webi对象,是OSBBrowser的tab的一页)。

从下面的类图可以看出来,MyEventListener实现了FrameLoadDelegate,ResourceLoadDelegate,UIDelegate这3个接口,这3个接口主要是给Webi对象发送信号,比如onMouseOverChanged就发出mouse-over信号。
在MyRoot的构造函数里,FrameImpl类的frame_d,resoure_d,ui_d为MyEventListener对象了。
 我们来看{BANNED}最佳关键的类BridgeImpl类。BridgeImple中有m_activeRequest和m_activeListener,这两个类是利用curl来进行http,https的下载。
    







3)osb-nrcore , Nokia主要是加了一个kwiq (好大,没法看下去了)。而khtml是来自KDE的khtml,对html文件进行处理。
4)osb-jscore ,对javascript的处理。


阅读(1150) | 评论(0) | 转发(0) |
0

上一篇:linux 嵌入式浏览器

下一篇:USB disk in linux

给主人留下些什么吧!~~