The Internet Explorer kernel solution is integrated on Chrome

1. The architecture diagram

The basic idea of dual-core function is to add trident kernel object on the basis of Chrome’s original render management and synchronize the two rendered kernel data during switching, so that the data distributed by kernel network request tends to be consistent, so as to achieve dual-core seamless switching. Kernel data synchronization mainly includes cookie data synchronization and POST data synchronization.

The main processes include:

** Create the corresponding widget_host from the main window and bind to the Trident container window.

**Cookie**** Data synchronization overview process: **V68 code chrome network model is in the main process management network process and cookies, V87 independent network network model, need to pay attention to. The acquisition and storage of cookies for trident kernel network data needs to be managed by process.

Post**, Refere**** ** When the rendering kernel opens a new page or refreshes within the page, it will put part of the data (mainly including POST, refere, etc.) into the page to be navigated. If the page to jump needs to switch the kernel, this part of the data needs to be taken out of the kernel and put into the new core for navigation.

2. Chrome kernel model

When the browser starts, it creates a browser class,

The TAB page is created during the startup process and then rendered

StartupBrowserCreator::Start

StartupBrowserCreator::LaunchBrowser

StartupBrowserCreatorImpl::Launch

StartupBrowserCreatorImpl::DetermineURLsAndLaunch

StartupBrowserCreatorImpl::RestoreOrCreateBrowser

StartupBrowserCreatorImpl::OpenTabsInBrowser

void Navigate(NavigateParams* params)

NavigatorImpl::NavigateToEntry

NavigationRequest::BeginNavigation(a)

NavigationHandleImpl::WillStartRequest

NavigationURLLoader::Create
Copy the code

3 IE kernel takeover

RenderFrameHostImpl::NavigateTrident RenderFrameTrident::OnNavigate TridentView::Navigate TridentViewMessageHandlerImpl: : OnNavigate TridentView: : DoNavigate TridentControl: : Navigate2 CHtmlView: : Navigate2 system functionCopy the code