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::StartStartupBrowserCreator::LaunchBrowserStartupBrowserCreatorImpl::LaunchStartupBrowserCreatorImpl::DetermineURLsAndLaunchStartupBrowserCreatorImpl::RestoreOrCreateBrowserStartupBrowserCreatorImpl::OpenTabsInBrowservoid Navigate(NavigateParams* params)NavigatorImpl::NavigateToEntryNavigationRequest::BeginNavigation()NavigationHandleImpl::WillStartRequestNavigationURLLoader::Create
3 IE内核接管
RenderFrameHostImpl::NavigateTridentRenderFrameTrident::OnNavigateTridentView::NavigateTridentViewMessageHandlerImpl::OnNavigateTridentView::DoNavigateTridentControl::Navigate2CHtmlView::Navigate2 零碎函数