注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

写着玩

Bob

 
 
 

日志

 
 
 
 

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

2009-12-19 21:51:56|  分类: Chrome |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

上一次说到发送命令给浏览器对象打开网页显示,但还没有分析它是怎么实现的,现在就来分析这方面的内容,如下:
#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函数来实现打开网页的功能,这个函数比较复杂,下一次再来分析它。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/caimouse/archive/2008/09/29/2999022.aspx

  评论这张
 
阅读(320)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017