Skip to content

Commit 19da86b

Browse files
pavelfeldmandgozman
authored andcommitted
browser(firefox): amend method & postData upon continue (#716)
1 parent 38b5f76 commit 19da86b

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

browser_patches/firefox/BUILD_NUMBER

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1018
1+
1019

browser_patches/firefox/patches/bootstrap.diff

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -648,10 +648,10 @@ index 0000000000000000000000000000000000000000..673e93b0278a3502d94006696cea7e6e
648648
+
649649
diff --git a/testing/juggler/NetworkObserver.js b/testing/juggler/NetworkObserver.js
650650
new file mode 100644
651-
index 0000000000000000000000000000000000000000..e38c9b37b531de4eac67c2a138b68a34053b155b
651+
index 0000000000000000000000000000000000000000..66f61d432f9ad2f50931b780ec5ea0e33da53803
652652
--- /dev/null
653653
+++ b/testing/juggler/NetworkObserver.js
654-
@@ -0,0 +1,674 @@
654+
@@ -0,0 +1,681 @@
655655
+"use strict";
656656
+
657657
+const {EventEmitter} = ChromeUtils.import('resource://gre/modules/EventEmitter.jsm');
@@ -766,8 +766,8 @@ index 0000000000000000000000000000000000000000..e38c9b37b531de4eac67c2a138b68a34
766766
+ return interceptor;
767767
+ }
768768
+
769-
+ resumeInterceptedRequest(browser, requestId, headers) {
770-
+ this._takeInterceptor(browser, requestId)._resume(headers);
769+
+ resumeInterceptedRequest(browser, requestId, method, headers, postData) {
770+
+ this._takeInterceptor(browser, requestId)._resume(method, headers, postData);
771771
+ }
772772
+
773773
+ getResponseBody(browser, requestId) {
@@ -806,14 +806,21 @@ index 0000000000000000000000000000000000000000..e38c9b37b531de4eac67c2a138b68a34
806806
+ const newRequestId = this._requestId(newHttpChannel);
807807
+ if (this._resumedRequestIdToHeaders.has(oldRequestId)) {
808808
+ // When we call resetInterception on a request, we get a new "redirected" request for it.
809-
+ const { headers } = this._resumedRequestIdToHeaders.get(oldRequestId);
809+
+ const { method, headers, postData } = this._resumedRequestIdToHeaders.get(oldRequestId);
810810
+ if (headers) {
811811
+ // Apply new request headers from interception resume.
812812
+ for (const header of requestHeaders(newChannel))
813813
+ newChannel.setRequestHeader(header.name, '', false /* merge */);
814814
+ for (const header of headers)
815815
+ newChannel.setRequestHeader(header.name, header.value, false /* merge */);
816816
+ }
817+
+ if (method)
818+
+ newChannel.requestMethod = method;
819+
+ if (postData && newChannel instanceof Ci.nsIUploadChannel) {
820+
+ const synthesized = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(Ci.nsIStringInputStream);
821+
+ synthesized.data = atob(postData);
822+
+ newChannel.setUploadStream(synthesized, 'application/octet-stream', -1);
823+
+ }
817824
+ // Use the old request id for the new "redirected" request for protocol consistency.
818825
+ this._resumedRequestIdToHeaders.delete(oldRequestId);
819826
+ this._postResumeChannelIdToRequestId.set(newRequestId, oldRequestId);
@@ -1273,8 +1280,8 @@ index 0000000000000000000000000000000000000000..e38c9b37b531de4eac67c2a138b68a34
12731280
+ this._networkObserver._onIntercepted(httpChannel, this);
12741281
+ }
12751282
+
1276-
+ _resume(headers) {
1277-
+ this._networkObserver._resumedRequestIdToHeaders.set(this._networkObserver._requestId(this._httpChannel), { headers });
1283+
+ _resume(method, headers, postData) {
1284+
+ this._networkObserver._resumedRequestIdToHeaders.set(this._networkObserver._requestId(this._httpChannel), { method, headers, postData });
12781285
+ this._intercepted.resetInterception();
12791286
+ }
12801287
+
@@ -4145,7 +4152,7 @@ index 0000000000000000000000000000000000000000..956988738079272be8d3998dcbbaa91a
41454152
+
41464153
diff --git a/testing/juggler/protocol/NetworkHandler.js b/testing/juggler/protocol/NetworkHandler.js
41474154
new file mode 100644
4148-
index 0000000000000000000000000000000000000000..22e7b4f9397e592f26ce447aafd6318398ad5b48
4155+
index 0000000000000000000000000000000000000000..5d776ab6f28ccff44ef4663e8618ad9cf800f869
41494156
--- /dev/null
41504157
+++ b/testing/juggler/protocol/NetworkHandler.js
41514158
@@ -0,0 +1,166 @@
@@ -4207,8 +4214,8 @@ index 0000000000000000000000000000000000000000..22e7b4f9397e592f26ce447aafd63183
42074214
+ await Promise.all(Array.from(this._pendingRequstWillBeSentEvents));
42084215
+ }
42094216
+
4210-
+ async resumeInterceptedRequest({requestId, headers}) {
4211-
+ this._networkObserver.resumeInterceptedRequest(this._browser, requestId, headers);
4217+
+ async resumeInterceptedRequest({requestId, method, headers, postData}) {
4218+
+ this._networkObserver.resumeInterceptedRequest(this._browser, requestId, method, headers, postData);
42124219
+ }
42134220
+
42144221
+ async abortInterceptedRequest({requestId, errorCode}) {
@@ -4757,10 +4764,10 @@ index 0000000000000000000000000000000000000000..78b6601b91d0b7fcda61114e6846aa07
47574764
+this.EXPORTED_SYMBOLS = ['t', 'checkScheme'];
47584765
diff --git a/testing/juggler/protocol/Protocol.js b/testing/juggler/protocol/Protocol.js
47594766
new file mode 100644
4760-
index 0000000000000000000000000000000000000000..a0913f7728931a938b850083213560a511b624a8
4767+
index 0000000000000000000000000000000000000000..d0d27b9bd8132190841a7a4785d31a20738e3b18
47614768
--- /dev/null
47624769
+++ b/testing/juggler/protocol/Protocol.js
4763-
@@ -0,0 +1,747 @@
4770+
@@ -0,0 +1,749 @@
47644771
+const {t, checkScheme} = ChromeUtils.import('chrome://juggler/content/protocol/PrimitiveTypes.js');
47654772
+
47664773
+// Protocol-specific types.
@@ -5102,7 +5109,9 @@ index 0000000000000000000000000000000000000000..a0913f7728931a938b850083213560a5
51025109
+ 'resumeInterceptedRequest': {
51035110
+ params: {
51045111
+ requestId: t.String,
5112+
+ method: t.Optional(t.String),
51055113
+ headers: t.Optional(t.Array(networkTypes.HTTPHeader)),
5114+
+ postData: t.Optional(t.String),
51065115
+ },
51075116
+ },
51085117
+ 'fulfillInterceptedRequest': {

0 commit comments

Comments
 (0)