关于chrome:Chrome浏览器上集成IE内核方案

34次阅读

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

正文完
 0