1 / 94
文档名称:

谷歌浏览器源码分析.doc

格式:doc   大小:713KB   页数:94页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

谷歌浏览器源码分析.doc

上传人:xzh051230 2018/12/2 文件大小:713 KB

下载得到文件列表

谷歌浏览器源码分析.doc

文档介绍

文档介绍:谷歌浏览器的英语名称为Chrome,它的意义是铬。铬是一种有光泽的、蓝灰色的坚硬金属元素。不失光泽,抗腐蚀,最早在铬铁矿中发现。用作催化剂,可加强钢合金的强度和生产不锈钢,可以做防腐镀层和玻璃制品中的颜料。原子序数24;;;化合价2,3,6。谷歌起这个名称,可能是想让这个浏览器永远不失去光泽,永远那么吸引人。铬是无毒,化学性质很稳定,有延展性,含杂质时硬而脆。熔点1857C,沸点2672C,,;铬,原子序数24,。铬的名称来自希腊文Chroma,意为颜色。因为这种元素以多种不同颜色的化合物存在,故被称为“多彩的元素”。可用于制不锈钢,汽车零件,工具,磁带和录像带等。铬镀在金属上可以防锈,也叫可多米,坚固美观。红、绿宝石的色彩也来自于铬。作为现代科技中最重要的金属,以不同百分比熔合的铬镍钢千变万化,种类繁多,令人难以置信。 谷歌的开发人员称,虽然网络的发展日新月异,但作为网络平台的浏览器,却没有跟上网络发展的步伐。谷歌倾心打造的免费浏览器就是希望能跟随着网络的发展而不断升级换代,完美的切合网络时代的潮流。 据了解,谷歌员工每天使用的最多的应用程序就是浏览器,通过浏览器,查看新闻资讯,观看***,玩网络游戏。谷歌的员工说,如果能够开发出一种全新的浏览器,才能够满足人们使用应用程序和网站管理员的要求。谷歌希望能够提供一种速度更快,稳定性更高,安全性更强的浏览器。因此GoogleChrome诞生了! 为了学****这个浏览器,需要通过网络把这份达到1G以上的代码下载下来,需要的时间就需要好几个小时,然后再把硬盘空间清空为10G左右大小,最后配置好VC2005,就可以编译这个“可多米”了。在我的电脑上编译,共需要两个小时左右,才完全编译完成,最后生成下面的可多米,如下图: 缺省编译出来的可多米是英语版本的,从关于对话框里就可以看到。下面是编译出来的目录图片,如下:  上面是调试版本的输出文件,所以程序大小都比较大,没有经过优化的处理。整个程序的大小,需要编译137个工程,共1G多的源码大小,这是一个非常旁大的一个工程。这么大的工程,我从哪里开始呢?我认为从界面开始,这样才可以快速地深入研究。下面就可以先尝试修改一个chrome的关于对话框,上一次看到它是英语的,那么我就来把它改成中文的吧,这样有目标了。从chrome的工程里可以看到它是支持多种语言的,在Windows平台上支持多语言的标准做法,就是写多个语言的DLL。因此,chrome也不例外,从app工程集里,就可以看到如下图所示: 上面显示了多种语言的动态连接库资源,是简体中文的。 接着打开资源文件的字符串编辑,如下图: 把上面的字符串修改为“关于可多米”,然后把这个工程重新编译一下,就会生成下面的文件: 然后运行自己编译的可多米,就会显示出修改的成果,如下图: 可以看到关于对话框的标题,就变成我上面修改的了。这样学****它的修改,就是几分钟的事情,哈哈......这样就学****了可多米开发汉化的工作,这是本地化的重要做的一件事情,也学****到怎么样支持多语言的实现方式。那么它的关于对话框是从那里显示出来的呢?怎么样把字符串更新到上面的呢?下一次再告诉你。前面修改了chrome关于对话框,并且编译显示出来了,那么它是在那里调用显示的呢?现在就带你去了解它。由于它是界面显示,那么不用想,直接到界面的工程里查找它,也就是到目录src\chrome\browser\。 这个文件里声明了一个类AboutChromeView,它就是主要负责初始化对话框、布局、显示字符串等等,比如显示“关于可乐米”的字符串,就是这样实现的,先调用函数:#001 std::wstringAboutChromeView::GetWindowTitle()const{ returnl10n_util::GetString(IDS_ABOUT_CHROME_TITLE);} 获取资源里的对话框标题,接着: 在上面的断点里就是响应菜单,然后创建关于对话框,主要调用函数CreateChromeWindow来创建窗口,把AboutChromeView窗口绑定到这个窗口类型里。由于可多米都是统一的窗口样式,那么它是通过创建一样的窗口类CustomFrameWindow来实现的。 为了显示窗口的标题,是通过下面的函数关系调用:1. Browser::mand 浏览器执行菜单命令。2. ChromeViews::Window::CreateChromeWindow 创建窗口。3. ChromeViews::CustomFrameWindow::Init初始化窗口。4. ChromeViews::Window::Init 初始化窗口标题。5. A