admin管理员组文章数量:1130349
当输入的网页连接传送给LoadURL函数之后,还需要处理很多内容,其实这是由类NavigationController来管理的,NavigationController类主要就是管理加载网页、退回、前进等等控制。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
#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,下一次再来分析它的功能。
转载于:https://wwwblogs/ajuanabc/archive/2008/10/01/2463976.html
当输入的网页连接传送给LoadURL函数之后,还需要处理很多内容,其实这是由类NavigationController来管理的,NavigationController类主要就是管理加载网页、退回、前进等等控制。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
#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,下一次再来分析它的功能。
转载于:https://wwwblogs/ajuanabc/archive/2008/10/01/2463976.html
版权声明:本文标题:谷歌浏览器的源码分析(17) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754666304a2713861.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论