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 零碎函数