Nested Content Processes: Difference between revisions

Add "On Tab destruction" into flow section
(Match bugs with anywords)
(Add "On Tab destruction" into flow section)
 
Line 64: Line 64:
## On layer tree construction, nsDisplayRemote will create a RefLayer and bind the mLayersId of the RenderFrameParent to it.
## On layer tree construction, nsDisplayRemote will create a RefLayer and bind the mLayersId of the RenderFrameParent to it.
## When compositing the AsyncCompositionManager will WalkTheTree and resolve RefLayers using the mLayersId
## When compositing the AsyncCompositionManager will WalkTheTree and resolve RefLayers using the mLayersId
# On Tab destruction
## nsFrameLoader::DestroyComplete() will be called in TabParent::ActorDestroy
## Next, TabParent::Destroy() will be called in nsFrameLoader::DestroyComplete() and then TabParent::DestroyInternal() will be triggered
## After finishing TabParent::DestroyInternal(), ContentParent::NotifyTabDestroying will be called.
##* If TabParent is in chrome process, then its Manager() will be converted from nsIContentParent into ContentParent and pass its ContentParentId to ContentParent::NotifyTabDestroying
##* Otherwise, if TabParent is in content process, then its Manager() will be converted from nsIContentParent into ContentBridgeParent and pass its ContentBridgeParentId to ContentParent::NotifyTabDestroying.
## TabParent::Recv__delete__() will be called in case PBrowser::Msg___delete____ID of PBrowserParent::OnMessageReceived after PBrowserParent::SendDestroy() is called in TabParent::DestroyInternal()
##* If TabParent is in chrome process, then its Manager() will be converted from nsIContentParent into ContentParent and pass its ContentParentId to ContentParent::DeallocateTabId. Next, ContentParent::NotifyTabDestroyed will be called.
##* Otherwise, if TabParent is in content process
### ContentBridgeParent::NotifyTabDestroyed() will be called first to check whether or not we should close the PContentBridge Channel. If the closed tab is the last one in its process, then the channel will be closed.
### Next, its Manager() will be converted from nsIContentParent into ContentBridgeParent and pass its ContentBridgeParentId to ContentParent::DeallocateTabId. ContentParent::DeallocateTabId here will fire a IPC calling, ContentChild::SendDeallocateTabId, to request its parent process to deallocate the closed tab
## After completing TabParent::Recv__delete__(), the closed tab will be removed from array mManagedPBrowserParent returned from ManagedPBrowserParent() in case PBrowserMsgStart of PContentBridgeParent::RemoveManagee
## Finally, ContentBridgeParent::DeallocPBrowserParent will be fired


=== Security ===
=== Security ===
36

edits