Initially, IPCInternal{Request,Response} had contained IPCStreams which would
result in unecessary copying when sending the objects over IPC. The patch
makes these streams either:
1) ParentToParentStream (just a UUID)
2) ParentToChildStream (a PIPCBlobInputStream actor, acting as a handle)
3) ChildToParentStream (a real IPCStream)
These three types are union-ed together by the BodyStreamVariant IPDL structure.
This structure replaces the IPCStream members in IPCInternal{Request,Response}
so that, depending on the particular IPDL protocol, we can avoid cloning streams
and just pass handles/IDs instead.
As a side effect, this makes file-backed Response objects cloneable. Initially,
these Responses would be backed by an nsFileInputStream, which is not cloneable
outside the parent process. They are now backed by IPCBlobInputStreams, which
are cloneable.
One thing that's not really satisfactory (IMO), is the manual management of
IPCBlobInputStreamStorage so that no streams are leaked, e.g. if we store a
stream in the IPCBlobInputStreamStorage but fail to send an IPC message and
therefore fail to remove the stream from storage on the other side of the IPC
boundary (only parent-to-parent in this case).
Differential Revision: https://phabricator.services.mozilla.com/D73173
This member variable is never used and I can't find the corresponding property
in the Fetch spec.
Differential Revision: https://phabricator.services.mozilla.com/D60077
--HG--
extra : moz-landing-system : lando
This member variable is never used and I can't find the corresponding property
in the Fetch spec.
Differential Revision: https://phabricator.services.mozilla.com/D60076
--HG--
extra : moz-landing-system : lando
Fetch spec says "A request has an associated service-workers mode, that is
"all" or "none". Unless stated otherwise it is "all"." "all" corresponds to
don't skip ServiceWorkers.
Differential Revision: https://phabricator.services.mozilla.com/D60075
--HG--
extra : moz-landing-system : lando
Fetch spec says "A request has an associated response tainting, which is
"basic", "cors", or "opaque". Unless stated otherwise, it is "basic"."
Differential Revision: https://phabricator.services.mozilla.com/D60074
--HG--
extra : moz-landing-system : lando
Fetch spec says "A request has an associated unsafe-request flag. Unless stated otherwise it is unset."
Differential Revision: https://phabricator.services.mozilla.com/D60073
--HG--
extra : moz-landing-system : lando
Fetch spec says "A request has an associated synchronous flag. Unless stated otherwise it is unset.""
Differential Revision: https://phabricator.services.mozilla.com/D60072
--HG--
extra : moz-landing-system : lando
This member variable is never used. It's also not defined by in the Fetch spec
AFAICT. The spec does define a "authentication-fetch flag", but it is not
the property of a request.
Differential Revision: https://phabricator.services.mozilla.com/D60071
--HG--
extra : moz-landing-system : lando
"A request has an associated use-URL-credentials flag. Unless stated otherwise, it is unset."
A quick search shows that this member variable is never actually used. It's
defined by the Fetch spec though, so I didn't delete it in the event that it is
used in the future.
Differential Revision: https://phabricator.services.mozilla.com/D60070
--HG--
extra : moz-landing-system : lando
ReferrerPolicy gets tossed back and forth as a uint32_t and
ReferrerPolicy enum in header file. Expose ReferrerPolicyValues from
webidl file and use consistently in native code.
Differential Revision: https://phabricator.services.mozilla.com/D41954
--HG--
extra : moz-landing-system : lando
Summary: Really sorry for the size of the patch. It's mostly automatic
s/nsIDocument/Document/ but I had to fix up in a bunch of places manually to
add the right namespacing and such.
Overall it's not a very interesting patch I think.
nsDocument.cpp turns into Document.cpp, nsIDocument.h into Document.h and
nsIDocumentInlines.h into DocumentInlines.h.
I also changed a bunch of nsCOMPtr usage to RefPtr, but not all of it.
While fixing up some of the bits I also removed some unneeded OwnerDoc() null
checks and such, but I didn't do anything riskier than that.
This was done automatically replacing:
s/mozilla::Move/std::move/
s/ Move(/ std::move(/
s/(Move(/(std::move(/
Removing the 'using mozilla::Move;' lines.
And then with a few manual fixups, see the bug for the split series..
MozReview-Commit-ID: Jxze3adipUh
Adds a new TYPE_SPECULATIVE to nsIContentPolicy uses it as the type for
speculative connection channels from the IO service. I believe I've added it to
all the content policies in tree to make sure it behaves the same as TYPE_OTHER
used to.
The webextension test shows that the webextension proxy API sees speculative
lookups requested through the IO service.
MozReview-Commit-ID: DQ4Kq0xdUOD
--HG--
extra : rebase_source : d9460fdac118bc68f0db79749a16f181b580f2e7