共计 1131 个字符,预计需要花费 3 分钟才能阅读完成。
Chrome 浏览器上集成 IE 内核计划
1. 架构图
双核性能的基本思路是,在 chrome 原有的 render 治理的根底上,增加 trident 内核对象并在切换时将两个渲染的内核数据进行同步,进而将内核网络申请散发下来的数据,趋于统一,从而达到双核的无缝切换,内核数据同步次要包含 cookie 数据同步和 post 数据同步。
次要的流程包含:
窗口关联概要流程: 由主窗口创立对应 widget_host(即主窗口要 bind 的窗口) 并与 trident 的容器窗口做 bind(父子窗口关系设置)
Cookie 数据同步概要流程:V68 代码 chrome 中的网络模型是在主过程管理网络过程和 cookie,V87 独立 network 网络模型,须要留神。须要将 trident 内核网络数据的 cookie 的获取和存储均通过过程去治理。
Post,Refere 等数据同步概要流程: 渲染内核在开启新页面或者页面内刷新时会将一部分数据(次要包含 post,refere 等)放入到要导航的页面中,如果跳转的页面须要切换内核,那么须要这部分数据从内核中取出来,并将这些数据放入新的外围去导航。
2. chrome 内核模型
浏览器启动的时候会创立一个 browser 类,
启动流程期间会创立 tab 页面,而后渲染
StartupBrowserCreator::Start
StartupBrowserCreator::LaunchBrowser
StartupBrowserCreatorImpl::Launch
StartupBrowserCreatorImpl::DetermineURLsAndLaunch
StartupBrowserCreatorImpl::RestoreOrCreateBrowser
StartupBrowserCreatorImpl::OpenTabsInBrowser
void Navigate(NavigateParams* params)
NavigatorImpl::NavigateToEntry
NavigationRequest::BeginNavigation()
NavigationHandleImpl::WillStartRequest
NavigationURLLoader::Create
3 IE 内核接管
RenderFrameHostImpl::NavigateTrident
RenderFrameTrident::OnNavigate
TridentView::Navigate
TridentViewMessageHandlerImpl::OnNavigate
TridentView::DoNavigate
TridentControl::Navigate2
CHtmlView::Navigate2 零碎函数
正文完