美文网首页
Chrome浏览器上集成IE内核方案

Chrome浏览器上集成IE内核方案

作者: chrome知识店铺 | 来源:发表于2021-05-18 15:10 被阅读0次

    Chrome浏览器上集成IE内核方案

    1. 架构图

    image

    双核功能的基本思路是,在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 系统函数
    

    相关文章

      网友评论

          本文标题:Chrome浏览器上集成IE内核方案

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