您的位置:首页 > 其它

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

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

#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函数来实现打开网页的功能,这个函数比较复杂,下一次再来分析它。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: