1.当用户输入,或者地址栏收到一个回车时,自动完成编辑框会算出最终目标URL,并传给AutocompleteEdit::OpenURL。(说用户输入可能不够确切——比如,搜索结果里的一个URL。)
2.NavigationController::LoadURL里的导航控制器(NavigationController)会去打开URL。
3.NavigationController调用TabContents::Navigate,并传入一个NavigationEntry来负责页面转换。这将会导致子进程如果需要,就创建一个RenderViewHost。如果是第一次导航,就不会有RenderView,否则如果渲染器crash了,会导致它被crash里的覆盖。
4.Navigate继续调用RenderViewHost::NavigateToEntry。NavigationController存储这个导航入口,但是会打一个”pending”的标记,因为它不知道到底会不会转换(可能主机无法解析)。
5.RenderViewHost::NavigateToEntry会给渲染进程里新的RenderView发一个ViewMsg_Navigate。
6.导航时,RenderView可能会导航,可能会失败,也可能会导航到其他地方(比如用户点了一个链接)。RenderViewHost会等待RenderView发一个ViewHostMsg_FrameNavigate。
7.当载入状态被WebKit改成”committed”时(server响应并发送了数据),RenderView就会发这个消息,并被RenderViewHost::OnMsgNavigate捕获处理。
8.过程中NavigationEntry会更新载入过程中的信息。例如点击的链接,之前浏览器是不知道的。如果导航是浏览器初始化的,就像启动时那样,在导航过程中可能会由于重定向而改变URL地址。
9.NavigationController给帐户把新的信息更新到导航列表中。