美文网首页
chrome浏览器集成IE内核的解决方案

chrome浏览器集成IE内核的解决方案

作者: chrome知识店铺 | 来源:发表于2021-04-26 13:36 被阅读0次

    1 架构图

    双核功能的基本思路是,在chrome原有的render 管理的基础上,添加trident内核对象并在切换时将两个渲染的内核数据进行同步,进而将内核网络请求分发下来的数据,趋于一致,从而达到双核的无缝切换,内核数据同步主要包括cookie 数据同步和post 数据同步。

    主要的流程包括:

    窗口关联概要流程:由主窗口创建对应widget_host(即主窗口要bind的窗口)并与 trident 的容器窗口做bind(父子窗口关系设置)

    Cookie数据同步概要流程:V68代码chrome中的网络模型是在主进程管理网络进程和cookie,V87独立network网络模型,需要注意。需要将trident 内核网络数据的cookie的获取和存储均通过进程去管理。

    Post,Refere等数据同步概要流程:渲染内核在开启新页面或者页面内刷新时会将一部分数据(主要包括post,refere等)放入到要导航的页面中,如果跳转的页面需要切换内核,那么需要这部分数据从内核中取出来,并将这些数据放入新的核心去导航。

    2 创建浏览器阶段

    浏览器启动的时候会创建一个browser类,

    启动流程期间会创建tab页面,然后渲染

    StartupBrowserCreator::Start

    StartupBrowserCreator::LaunchBrowser

    StartupBrowserCreatorImpl::Launch

    StartupBrowserCreatorImpl::DetermineURLsAndLaunch

    StartupBrowserCreatorImpl::RestoreOrCreateBrowser

    StartupBrowserCreatorImpl::OpenTabsInBrowser

    void Navigate(NavigateParams* params)

    NavigatorImpl::NavigateToEntry

    NavigationRequest::BeginNavigation()

    3 chrome内核模型

    浏览器启动后打开chrome内核页面流程

    NavigationRequest::BeginNavigation()

    NavigationHandleImpl::WillStartRequest

    NavigationURLLoader::Create

    3.1 打开chrome内核网页

    已经启动浏览器的情况下,新开chrome内核页面

    RenderFrameHostImpl::BeginNavigation

    NavigatorImpl::OnBeginNavigation

    NavigationRequest::BeginNavigation()

    3.2 地址栏输入网址消息流程

    当前地址栏输入url开启访问

    NavigatorImpl::RequestNavigation

    NavigationRequest::CreateBrowserInitiated

    4 IE内核接管

    RenderFrameHostImpl::NavigateTrident

    RenderFrameTrident::OnNavigate

    TridentView::Navigate

    TridentViewMessageHandlerImpl::OnNavigate

    TridentView::DoNavigate

    TridentControl::Navigate2

    CHtmlView::Navigate2 系统函数

    相关文章

      网友评论

          本文标题:chrome浏览器集成IE内核的解决方案

          本文链接:https://www.haomeiwen.com/subject/zavmkltx.html