Commit Graph

70 Commits

Author SHA1 Message Date
Perry Jiang
e2a4370f66 Bug 1622451 - minimize stream copying across IPC boundaries r=asuth,baku
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
2020-05-29 09:09:54 +00:00
Brindusan Cristian
1b37507f39 Backed out 1 changesets (bug 1622451) for assertion failures on UniquePtr.h. CLOSED TREE
Backed out changeset fb8e753340e4 (bug 1622451)
2020-05-28 23:31:26 +03:00
Perry Jiang
1ca6d83a44 Bug 1622451 - minimize stream copying across IPC boundaries r=asuth,baku
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
2020-05-28 15:15:43 +00:00
Simon Giesecke
bb42fddc93 Bug 1626570 - Improve handling of copying arrays in dom/fetch/. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D73652
2020-05-05 14:14:10 +00:00
Csoregi Natalia
a0d8976833 Backed out changeset e1be97ce43d1 (bug 1622451) for failures on browser_download_canceled.js. CLOSED TREE 2020-05-01 03:58:25 +03:00
Perry Jiang
d838add2ce Bug 1622451 - minimize stream copying across IPC boundaries r=asuth,baku
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
2020-04-30 23:52:54 +00:00
Perry Jiang
12002095aa Bug 1147178 - remove InternalResponse::mTerminationReason r=dom-workers-and-storage-reviewers,sg
The termination reason doesn't exist in the Fetch spec anymore. The member
variable isn't ever used either.

Differential Revision: https://phabricator.services.mozilla.com/D66539
2020-03-12 08:50:22 +00:00
Simon Giesecke
2a907b937d Bug 1613985 - Use default for equivalent-to-default constructors/destructors in dom/fetch. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D63165
2020-02-20 16:53:06 +00:00
Gabriele Svelto
eb403b8785 Bug 1600545 - Remove useless inclusions of header files generated from IDL files in dom/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55442
2019-12-06 09:24:56 +00:00
Dorel Luca
67889e1013 Backed out changeset f6e53d1c6518 (bug 1600545) for Android build bustage. CLOSED TREE 2019-12-04 17:32:27 +02:00
Gabriele Svelto
dc6fa2e86c Bug 1600545 - Remove useless inclusions of header files generated from IDL files in dom/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55442
2019-12-04 15:01:19 +00:00
Perry Jiang
3ca185af47 Bug 1231213 - Implement IPCInternal{Request,Response}. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D26163
2019-08-15 17:26:15 +00:00
Dorel Luca
4a52d3ad22 Backed out 22 changesets (bug 1231213) for Browser-chrome failures on /workers/remoteworkers/RemoteWorkerChild.cpp
Backed out changeset 7e09ad9ceea6 (bug 1231213)
Backed out changeset a275eb0b1a19 (bug 1231213)
Backed out changeset 906b80778539 (bug 1231213)
Backed out changeset 6a40ab6852cb (bug 1231213)
Backed out changeset 216591953f97 (bug 1231213)
Backed out changeset 1de357bc1921 (bug 1231213)
Backed out changeset 8e3fedf6502a (bug 1231213)
Backed out changeset 1b9a8b022fce (bug 1231213)
Backed out changeset 85df1959eb98 (bug 1231213)
Backed out changeset 666bf4260046 (bug 1231213)
Backed out changeset 0b03a19a6dc1 (bug 1231213)
Backed out changeset 11f010e6d6e7 (bug 1231213)
Backed out changeset 6ed55807374f (bug 1231213)
Backed out changeset 395062aef2ec (bug 1231213)
Backed out changeset bacf8499ba7b (bug 1231213)
Backed out changeset bf5d60c7a85a (bug 1231213)
Backed out changeset cd434b787ce6 (bug 1231213)
Backed out changeset ee4565104217 (bug 1231213)
Backed out changeset 581653ef33dd (bug 1231213)
Backed out changeset 2d5628a0e52d (bug 1231213)
Backed out changeset 3449c2eba4c6 (bug 1231213)
Backed out changeset ae221b628899 (bug 1231213)
2019-08-15 01:04:46 +03:00
Perry Jiang
7c8cf55d7f Bug 1231213 - Implement IPCInternal{Request,Response}. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D26163
2019-08-14 16:19:40 +00:00
Cosmin Sabou
4f160f0685 Backed out 22 changesets (bug 1231213) for build bustages on /mozilla/Attributes.h CLOSED TREE
Backed out changeset 4a45f2c447fd (bug 1231213)
Backed out changeset bcb4d348a847 (bug 1231213)
Backed out changeset ae78ac86cc86 (bug 1231213)
Backed out changeset d681c92a7f05 (bug 1231213)
Backed out changeset 1ac9661e7fb4 (bug 1231213)
Backed out changeset 796c617b989f (bug 1231213)
Backed out changeset c46b31113adb (bug 1231213)
Backed out changeset ea7334da65d9 (bug 1231213)
Backed out changeset 6e9273940bf5 (bug 1231213)
Backed out changeset 7df0e0ff9a82 (bug 1231213)
Backed out changeset 12aba06d169c (bug 1231213)
Backed out changeset e7d6d8d64e8a (bug 1231213)
Backed out changeset 097a29f3ff9a (bug 1231213)
Backed out changeset 1b7169b75760 (bug 1231213)
Backed out changeset 0fd1fd7c3f06 (bug 1231213)
Backed out changeset 3d539eb7faff (bug 1231213)
Backed out changeset 419f9bb7be3c (bug 1231213)
Backed out changeset caede0e4e888 (bug 1231213)
Backed out changeset 778eade5085d (bug 1231213)
Backed out changeset a84b262ff6f8 (bug 1231213)
Backed out changeset 97328368da02 (bug 1231213)
Backed out changeset 9c845d7e3b29 (bug 1231213)
2019-08-14 00:10:48 +03:00
Perry Jiang
ba5a894140 Bug 1231213 - Implement IPCInternal{Request,Response}. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D26163
2019-08-13 19:55:34 +00:00
Cosmin Sabou
45fe1b6693 Backed out 22 changesets (bug 1231213) for build bustages on RemoteWorkerChild.cpp. CLOSED TREE
Backed out changeset 06dba269fcfe (bug 1231213)
Backed out changeset 20b1ec70a6d0 (bug 1231213)
Backed out changeset be99adfb84ab (bug 1231213)
Backed out changeset 8cb30e5ef8d7 (bug 1231213)
Backed out changeset bdeff3d76292 (bug 1231213)
Backed out changeset 783bd2856798 (bug 1231213)
Backed out changeset e52869704d4d (bug 1231213)
Backed out changeset df97ea0bbe79 (bug 1231213)
Backed out changeset 822ade495b97 (bug 1231213)
Backed out changeset 06281fe76994 (bug 1231213)
Backed out changeset c8c1d3aa27c6 (bug 1231213)
Backed out changeset b96a12cd2c73 (bug 1231213)
Backed out changeset a1dcf2ea83be (bug 1231213)
Backed out changeset 6e2934410f95 (bug 1231213)
Backed out changeset d4ffae32539b (bug 1231213)
Backed out changeset d99f2cbe0ed2 (bug 1231213)
Backed out changeset 3bbea49c6d03 (bug 1231213)
Backed out changeset dac29b0340ce (bug 1231213)
Backed out changeset 0591a2a0cc41 (bug 1231213)
Backed out changeset afc3b2b9d472 (bug 1231213)
Backed out changeset 89fffd7b8740 (bug 1231213)
Backed out changeset 30b9a65a6294 (bug 1231213)
2019-08-13 21:30:20 +03:00
Perry Jiang
b9287f6ccc Bug 1231213 - Implement IPCInternal{Request,Response}. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D26163
2019-08-13 04:57:26 +00:00
Narcis Beleuzu
4b52b2671d Backed out 22 changesets (bug 1231213) for build bustages on RemoteWorkerChild.cpp . CLOSED TREE
Backed out changeset 6f25a7e73fe2 (bug 1231213)
Backed out changeset 5e88c3855fb6 (bug 1231213)
Backed out changeset a78d7b3e44af (bug 1231213)
Backed out changeset eb7f3a9b0a42 (bug 1231213)
Backed out changeset 87575a180ad5 (bug 1231213)
Backed out changeset 4e8369314e87 (bug 1231213)
Backed out changeset 039c34bc043c (bug 1231213)
Backed out changeset 0528ab68d94e (bug 1231213)
Backed out changeset 670e7d61d95c (bug 1231213)
Backed out changeset d61b9d65bd0a (bug 1231213)
Backed out changeset 9042ea694d40 (bug 1231213)
Backed out changeset bc0607e0d50b (bug 1231213)
Backed out changeset 196ee18781cb (bug 1231213)
Backed out changeset 4b588dec466b (bug 1231213)
Backed out changeset be6031a6fca7 (bug 1231213)
Backed out changeset 12e04c22f52f (bug 1231213)
Backed out changeset fd146f327f2d (bug 1231213)
Backed out changeset f2af7b66f50d (bug 1231213)
Backed out changeset 71d93fc98d3f (bug 1231213)
Backed out changeset 280271806864 (bug 1231213)
Backed out changeset ca4e828345a2 (bug 1231213)
Backed out changeset e41b984510ad (bug 1231213)
2019-08-13 07:47:05 +03:00
Perry Jiang
6bb7bbfcef Bug 1231213 - Implement IPCInternal{Request,Response}. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D26163
2019-08-13 04:03:20 +00:00
Kershaw Chang
e370b0c73a Bug 1309358 - P1: Add wildcard to Access-Control-Expose-Headers r=baku
For requests without credentials, add wildcard to Access-Control-Expose-Headers.

Differential Revision: https://phabricator.services.mozilla.com/D36624
2019-07-16 08:50:14 +00:00
shindli
b19001bdbf Bug 1539208 - P2 - Use RandomNum while failing to get a random number from RandomGenerator;
Reviewers: asuth, baku

Reviewed By: baku

Subscribers: reviewbot

Bug #: 1539208

Differential Revision: https://phabricator.services.mozilla.com/D25104
2019-04-01 17:34:38 +03:00
Andreea Pavel
a1e832c47c Backed out 2 changesets (bug 1539208) for causing bug 1540569 a=backout
Backed out changeset 7b17d77256be (bug 1539208)
Backed out changeset cec67adbdbb6 (bug 1539208)
2019-04-01 10:36:18 +03:00
Tom Tung
a7f5a41a00 Bug 1539208 - P2 - Use RandomNum while failing to get a random number from RandomGenerator; r=baku
Differential Revision: https://phabricator.services.mozilla.com/D25104
2019-03-29 09:04:10 +00:00
Andrea Marchesini
1cfb4d9d7a Bug 1487113 - Expose nsICacheInfoChannel in Respose object for wasm content-type, r=valentin,nbp
Differential Revision: https://phabricator.services.mozilla.com/D19823
2019-02-20 10:05:35 +00:00
Ciure Andrei
802d0480fd Backed out 3 changesets (bug 1487113) for perma failing test_alt-data_stream_wrap.js CLOSED TREE
Backed out changeset 831ac8c662c0 (bug 1487113)
Backed out changeset a8406df01e95 (bug 1487113)
Backed out changeset 1e97c3573ce6 (bug 1487113)
2019-02-19 11:43:13 +02:00
Andrea Marchesini
f9a72c192a Bug 1487113 - Expose nsICacheInfoChannel in Respose object for wasm content-type, r=valentin,nbp
Differential Revision: https://phabricator.services.mozilla.com/D19823
2019-02-19 07:38:03 +00:00
Andrea Marchesini
e9dab62a18 Bug 1513606 - Remove unused code in Fetch, r=smaug 2018-12-13 17:12:29 +01:00
Sylvestre Ledru
e5a134f73a Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset
2018-11-30 11:46:48 +01:00
Emilio Cobos Álvarez
4b8b5e1717 Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
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
2018-06-01 10:45:27 +02:00
Edouard Oger
1775282ce1 Bug 1416842 - Allow fetch to reject with nsresult in chrome code. r=bkelly
MozReview-Commit-ID: FD2NUJZtAhT
2017-11-15 14:53:42 -05:00
Tom Tung
388e584d55 Bug 1290481 - P5: Implement a function to generate padding size. r=bkelly
MozReview-Commit-ID: 6poDeyErBjc
2017-07-10 17:03:24 +08:00
Tom Tung
d54c8f4a66 Bug 1290481 - P1: Make InternalResponse and CacheResponse be able to keep padding size. r=bkelly
MozReview-Commit-ID: LIxkSdfPZtf
2017-07-10 17:11:29 +08:00
Andrea Marchesini
41515fa1ab Bug 1128959 - Implement the WHATWG Streams spec - part 9 - FetchStreamReader, r=bkelly 2017-08-10 18:04:55 -07:00
Andrea Marchesini
eb52001da4 Bug 1357286 - Fix warnings on release builds about unused return values from autoStream->Serialize, r=philor 2017-04-18 07:29:47 -07:00
Andrea Marchesini
30bbbae2fc Bug 1274343 - Add parent-to-child pipe streaming to IPCStream - part 2 - PParentToChild, r=smuag 2017-03-14 12:29:43 +01:00
Andrea Marchesini
2eeaed3a38 Bug 1288997 - memory blob should not be shared across processes - part 1 -PSendStream should use nsIContentChild, r=jld, f=bkelly 2016-09-21 12:27:26 +02:00
Kannan Vijayan
566872cf3b Bug 1287163 - Remove over-strict asserts in InternalResponse IPC code. r=sicking 2016-07-18 13:01:00 -04:00
Jonas Sicking
016e1cc875 Bug 1263991 part 4: Support response body. r=bkelly 2016-06-07 02:46:03 -07:00
Jonas Sicking
874148ed80 Bug 1263991 part 3: Support incoming and outgoing requests/responses. r=baku f=bkelly 2016-06-07 02:46:03 -07:00
Carsten "Tomcat" Book
cef62cc9ae Backed out changeset 5853ea69f6c4 (bug 1263991) 2016-06-07 12:10:27 +02:00
Carsten "Tomcat" Book
0c641a8723 Backed out changeset 9be76aad30b1 (bug 1263991) 2016-06-07 12:10:26 +02:00
Jonas Sicking
3aa8f92fa8 Bug 1263991 part 4: Support response body. r=bkelly 2016-06-07 02:46:03 -07:00
Jonas Sicking
f1715d14dd Bug 1263991 part 3: Support incoming and outgoing requests/responses. r=baku f=bkelly 2016-06-07 02:46:03 -07:00
Jonas Sicking
95493635e6 Bug 1273279 - Changes in preparation for FlyWeb landing. Change InternalResponse handling to track body size. r=baku f=bkelly 2016-06-01 17:02:29 -04:00
Tom Tung
15cf287086 Bug 1243792 - P1 implement response.redirected - Fetch API & Cache API & ServiceWorker changed. r=bkelly, r=baku. 2016-05-03 09:48:40 +08:00
Carsten "Tomcat" Book
33a3f16175 Backed out changeset dc42de66de8c (bug 1243791) landing with wrong bug number 2016-05-10 12:50:15 +02:00
Tom Tung
18d5be2fe8 Bug 1243791 - P1 implement response.redirected - Fetch API & Cache API & ServiceWorker changed. r=bkelly, r=baku. 2016-05-03 09:48:40 +08:00
Ben Kelly
1c6ca71507 Bug 1238134 P1 Provide a Response.cloneUnfiltered() method for chrome code to access internal Response state. r=ehsan 2016-01-12 12:15:12 -08:00
Ben Kelly
0a95ed690a Bug 1212904 P4 Set channel tainting in FetchEvent.respondWith(). r=ehsan 2015-10-22 11:07:32 -07:00