谷歌浏览器的源码分析(15)

原创 2008年09月29日 23:45:00
上一次说到发送命令给浏览器对象打开网页显示,但还没有分析它是怎么实现的,现在就来分析这方面的内容,如下:

#001  void Browser::ExecuteCommand(int id) {

#002    if (!IsCommandEnabled(id)) {

#003      NOTREACHED() << id;

#004      return;

#005    }

#006    // This might happen during QMU testing.

#007    if (!GetSelectedTabContents())

#008      return;

#009 

#010    switch (id) {

#011      case IDC_BACK:

#012        UserMetrics::RecordAction(L"Back", profile_);

#013        GoBack();

#014        break;

#015       

#016        ...

#017       

#018       

#019         case IDC_OPENURL:

#020        UserMetrics::RecordAction(L"LoadURL", profile_);

#021        {

#022          LocationBarView* lbv = GetLocationBarView();

#023          if (lbv) {

#024            OpenURL(GURL(lbv->location_input()), lbv->disposition(),

#025                    lbv->transition());

#026          } else {

#027            OpenURL(GURL(), CURRENT_TAB, PageTransition::TYPED);

#028          }

#029        }

#030        break;

#031 

 

可以看到这段代码,第19行就是处理打开网页的命令处理,当然在这个函数里不仅仅处理打开网页的连接命令,还有很多其它的命令,目前先分析这个命令的代码。

20行里先记录当前执行的动作。

22行里查找到当前显示BAR窗口。

如果找到LocationBarView窗口,就把当前的输入连接生成GURL对象,从窗口获取显示位置,传送的类型。否则,就是使用空的连接,并打开当前页面。

 

下面再来分析函数OpenURL的实现,它是调用TabContentsDelegate类里的OpenURL函数:

#001    virtual void OpenURL(const GURL& url,

#002                         WindowOpenDisposition disposition,

#003                         PageTransition::Type transition) {

#004      OpenURLFromTab(NULL, url, disposition, transition, std::string());

#005    }

 

在这个函数继续调用OpenURLFromTab函数来实现打开网页的功能,这个函数比较复杂,下一次再来分析它。

版权声明:本文为博主原创文章,未经博主允许不得转载。

谷歌chrome浏览器的源码分析(三)

上一次介绍到怎么样从其它地方返回搜索到的超级连接,现在就来分析一下使用搜索引擎去查找的类SearchProvider,它是通过搜索引擎来查找出来的,在这里是通过GOOGLE搜索引擎来查找出来。它的声明...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年04月27日 12:41
  • 667

谷歌chrome浏览器的源码分析(一)

随着网络技术的发展,越来越多应用都已经离不开网络,特别像人类大脑一样的知识库的搜索引擎,更加是离不开功能强大的云计算。不过,即便云计算非常强大,但它还不能直接地把结果呈现给用户,这样就需要一个客户端来...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年04月27日 12:36
  • 4028

谷歌chrome浏览器的源码分析(七)

上一次说到通过管道把接收到的HTTP数据通知另一个线程处理,它不是直接发送数据过去,而是把数据在共享内存里的句柄发送过去,达到高效通讯的目的。下面就来分析资源处理进程里,接收到这个消息之后,做些什么处...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年04月27日 12:51
  • 832

谷歌chrome浏览器源码分析

转自CSDN 前言: 1、之所以整理此文,有俩个目的:一是为了供自己学习研究之用;二是为了备份,以作日后反复研究。除此之外,无它。 2、此文的形式其实是有点俩不像的,既不是个人首创即原创...
  • orichisonic
  • orichisonic
  • 2016年01月21日 15:24
  • 3561

来,谷歌安卓浏览器源码就在这!

谷歌浏览器安卓版源码项目 本项目是世界级的安卓架构 理清本项目业务逻辑完全可以胜任国内一线公司工程师 本项目会长期跟进并升级谷歌浏览器内核版本,欢迎star...
  • rain_butterfly
  • rain_butterfly
  • 2016年07月10日 11:27
  • 11139

chrome谷歌浏览器插件制作简易教程

1.在磁盘上创建一个目录,用来放应用的代码和资源2.在这个目录中,创建一个文本文件,命名为manifest.json,其内容为:{ "manifest_version": 2, "name": ...
  • ioxp12138
  • ioxp12138
  • 2016年11月30日 19:22
  • 279

谷歌chrome浏览器源码分析

谷歌chrome浏览器源码分析 2016-01-21 15:24 55人阅读 评论(0) 收藏 举报  分类:   C++(52)  转自CSDN 前言...
  • bolang789
  • bolang789
  • 2016年03月24日 12:27
  • 664

【JS学习】-利用谷歌浏览器调试JS代码

谷歌浏览器是常用来调试JS代码的工具,本文主要介绍如何利用谷歌浏览器来调试JS代码,协助我们进行开发工作。 首先,打开谷歌浏览器,按快捷键F12或者ctrl+shift+j,就可以打开谷歌浏览器的开发...
  • Kevin_zhai
  • Kevin_zhai
  • 2016年06月21日 11:07
  • 10118

谷歌浏览器崩溃的解决方案

问题描述 谷歌浏览器提示“喔唷 崩溃啦” 点击设置,选项,历史记录等,也提示崩溃 卸载重装也无效 原因分析有可能是注册列表被一些卫士类优化工具或杀毒软件优化了解决方案第一步:卸载谷歌浏览器 开始→控制...
  • GongchuangSu
  • GongchuangSu
  • 2016年12月26日 11:25
  • 12818

谷歌浏览器怎么查看网页布局

如何查看DIV被设置什么CSS样式呢?可以扩展到了解查看任何HTML标签被设置什么CSS样式。DIVCSS5教大家掌握如何使用谷歌浏览器查找网页中某局部DIV布局结构以及对应设置什么CSS样式。 ...
  • u012105836
  • u012105836
  • 2014年11月30日 16:36
  • 796
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:谷歌浏览器的源码分析(15)
举报原因:
原因补充:

(最多只允许输入30个字)