谷歌浏览器的源码分析(15)
2008-09-29 23:45
441 查看
上一次说到发送命令给浏览器对象打开网页显示,但还没有分析它是怎么实现的,现在就来分析这方面的内容,如下:
#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函数来实现打开网页的功能,这个函数比较复杂,下一次再来分析它。
#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)
- 谷歌浏览器的源码分析(15)
- Java多线程 -- JUC包源码分析15 -- SynchronousQueue与CachedThreadPool
- 谷歌浏览器的源码分析(7)
- 谷歌浏览器的源码分析(8)
- 谷歌浏览器的源码分析(9)
- 谷歌浏览器的源码分析(11)
- 谷歌浏览器的源码分析(19)
- 谷歌浏览器的源码分析(22)
- 谷歌浏览器的源码分析(29)
- 谷歌浏览器的源码分析(30)
- 谷歌浏览器的源码分析(31)
- 谷歌浏览器的源码分析(34)
- 【Python】实现漏洞扫描器之MS15-034漏洞批量扫描+源码分析
- jQuery源码分析-15AJAX-前置过滤器和请求分发器
- 谷歌浏览器的源码分析(4)
- 谷歌浏览器的源码分析(6)
- 谷歌浏览器的源码分析(8)
- 谷歌浏览器的源码分析(9)
- 谷歌浏览器的源码分析(10)