nsHttpChannelInterceptedChannelChromeHttpChannelParentListenerHttpChannelParentHttpChannelChildInterceptedChannelContentnsDocShellAsyncOpen()ShouldPrepareForInterceptYes if sub-resource andmShouldIntercept from child, orif SWM::IsAvailable().OpenCacheEntry()new()NotifyControllermResponseBody opened frommSynthesizedCacheEntryChannelInterceptedDispatchFetchEventnew()NotifyControllerChannelInterceptedServiceWorker processes fetchuntil respondWith() invoked.GetResponseBodySW NS_AsyncCopy to returnedoutput stream.FinishSynthesizedResponseSynthesizeResponseSynthesizeResponseSynthesizeResponseGetResponseBodyNS_AsyncCopyResponseSynthesizedMaybeFlushPendingDiversion()FinishSynthesizedResponseMarkInterceptedStartRedirectChannelToURIOpenCacheEntryContinueConnectalt[ redirect ][ not redirect ]nsHttpChannelInterceptedChannelChromeHttpChannelParentListenerHttpChannelParentHttpChannelChildInterceptedChannelContentnsDocShell