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

 

当输入的网页连接传送给LoadURL函数之后,还需要处理很多内容,其实这是由类NavigationController来管理的,NavigationController类主要就是管理加载网页、退回、前进等等控制。

#001  void NavigationController::LoadURL(const GURL& url,

#002                                     PageTransition::Type transition) {

#003    // The user initiated a load, we don't need to reload anymore.

#004    needs_reload_ = false;

#005 

#006    NavigationEntry* entry = CreateNavigationEntry(url, transition);

#007 

#008    LoadEntry(entry);

#009  }

这个函数的第一个参数url是网络连接地址,第二个参数transition是传送的类型。

4行代码里设置不是重新加载。

6行里创建了一个处理网页浏览的入口对象,它是由类NavigationEntry管理。

8行里就调用函数LoadEntry来加载网页。

 

LoadEntry函数更进一步去加载网页的内容,它的代码如下:

#001  void NavigationController::LoadEntry(NavigationEntry* entry) {

#002    // When navigating to a new page, we don't know for sure if we will actually

#003    // end up leaving the current page.  The new page load could for example

#004    // result in a download or a 'no content' response (e.g., a mailto: URL).

#005 

#006    // TODO(pkasting): http://b/1113085 Should this use DiscardPendingEntry()?

 

清除内部变量。

#007    DiscardPendingEntryInternal();

 

保存当前的入口对象。

#008    pending_entry_ = entry;

 

通知服务器有一个浏览器对象加入。

#009    NotificationService::current()->Notify(

#010        NOTIFY_NAV_ENTRY_PENDING,

#011        Source<NavigationController>(this),

#012        NotificationService::NoDetails());

 

下面开始进入加载网页的动作。

#013    NavigateToPendingEntry(false);

#014  }

 

9行里的类NotificationService是使用OBSERVER的设计模式来实现一对多的显示关系。这个设计模式也是跟MVC与生具来的,显然设计这个浏览器代码的人,已经是对设计模式是专家式的人物了。

 

13行里调用函数NavigateToPendingEntry,下一次再来分析它的功能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值