gecko-dev/ipc
Valentin Gosu a2675e9878 Bug 1476996 - Implement cross process redirection in Http on the parent process r=bagder,nika
This patch builds the foundation for the ability to relocate HTTP channels from one content process to another in order to ensure that origins are properly isolated. This relocation would normally occur when the response to an HTTP request is a redirect to a different origin.
The patch merely adds the mechanism for relocating the channel, rather than the logic of doing so. This will be provided in a follow-up patch by a specialized service. Right now that functionality is mocked in the test.

How this works:
In nsHttpChannel::OnStartRequest we will query the service that decides whether we need to direct the response to another process. If so, it will return a promise that resolves to a TabParent.
When the promise resolves, in HttpChannelParentListener::TriggerCrossProcessRedirect we call NeckoParent::SendCrossProcessRedirect passing along the required information to recreate the channel in the new process. The NeckoChild in the new process will then instantiate a new channel, call ConnectParent() which creates the associated parent channel, and connects it with the existing nsHttpChannel.
A listener in the new process is then notified of the existence of the new channel. It is required to call completeRedirectSetup on the channel, passing an nsIStreamListener to the call.
We then finish the entire operation with a call to HttpChannelChild::SendCrossProcessRedirectDone which causes us to close the old HttpChannelChild in the previous process and to resume the nsHttpChannel in the main process.

Differential Revision: https://phabricator.services.mozilla.com/D2958

--HG--
rename : netwerk/test/browser/browser_cookie_sync_across_tabs.js => netwerk/test/browser/browser_cross_process_redirect.js
rename : dom/media/test/redirect.sjs => netwerk/test/browser/redirect.sjs
extra : moz-landing-system : lando
2018-09-04 20:45:22 +00:00
..
app Bug 1467736: Add support for DllBlocklist_Shutdown;r=aklotz 2018-08-29 18:49:49 +00:00
chromium Bug 1475566 Disable #pragma comments for MinGW Builds r=glandium 2018-08-29 03:50:39 +00:00
contentproc Bug 1481719 - Disable profile-instr-out-of-date warnings explicitly rather than allowing all warnings where they appear. r=dmajor 2018-08-09 06:07:33 +09:00
glue Bug 1476996 - Implement cross process redirection in Http on the parent process r=bagder,nika 2018-09-04 20:45:22 +00:00
ipdl Bug 1486547 - renamed the mState field on generated protocol classes; r=froydnj 2018-08-27 18:20:17 +00:00
mscom Bug 1486039 - use a more-portable idiom for pausing in SpinEvent::Wait; r=aklotz 2018-08-28 09:27:57 -04:00
testshell Bug 1486577 - Don't #include "js/CompilationAndEvaluation.h" in jsapi.h, minimizing the scope of that header and reducing translation-unit size of anything that needs JSAPI but doesn't need to compile/evaluate JavaScript. r=jandem 2018-08-24 22:51:49 -05:00
moz.build
pull-chromium.py Bug 1468273 - Fix flake8/pep8 issue by hand in ipc/ r=froydnj 2018-07-12 12:03:02 +02:00