Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// This test was originally written to test Bug 1129957 - the ability to pass
// upload streams with headers included. That feature has been removed, so this
// test now just verifies basic POST data functionality with RemoteWebNavigation.
function makeInputStream(aString) {
let stream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(
Ci.nsIStringInputStream
);
stream.setByteStringData(aString);
return stream; // XPConnect will QI this to nsIInputStream for us.
}
add_task(async function test_remoteWebNavigation_postdata() {
let { HttpServer } = ChromeUtils.importESModule(
);
let { CommonUtils } = ChromeUtils.importESModule(
);
let server = new HttpServer();
server.start(-1);
await new Promise(resolve => {
server.registerPathHandler("/test", (request, response) => {
let body = CommonUtils.readBytesFromInputStream(request.bodyInputStream);
// Note: After removing requestBodyHasHeaders support, the body may be empty
// here depending on how the postData is passed through the navigation APIs.
// We now just verify that the POST method is correctly set.
is(request.method, "POST", "request was a post");
response.write("Received from POST: " + body);
resolve();
});
let i = server.identity;
let path =
i.primaryScheme + "://" + i.primaryHost + ":" + i.primaryPort + "/test";
let postdata = "success";
openTrustedLinkIn(path, "tab", {
allowThirdPartyFixup: null,
postData: makeInputStream(postdata),
});
});
BrowserTestUtils.removeTab(gBrowser.selectedTab);
await new Promise(resolve => {
server.stop(function () {
resolve();
});
});
});