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

系统 1515 0
上一次说到发送命令给浏览器对象打开网页显示,但还没有分析它是怎么实现的,现在就来分析这方面的内容,如下:

#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 函数来实现打开网页的功能,这个函数比较复杂,下一次再来分析它。

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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论