Bug 1129957 - Test that RemoteWebNavigation accept postdata headers. r=Mossop
☠☠ backed out by 1fd19d8fc936 ☠ ☠
authorFelipe Gomes <felipc@gmail.com>
Wed, 10 Jun 2015 11:18:15 -0300
changeset 248145 9ac1d4aadc38dbec98cd0cd4bae6a9ff474dd8e8
parent 248144 109474240d8cd0fb38839d92b2d2722ef16f0911
child 248146 f537b304247e9f275459a24a76afd50ef58aa1a7
push id60888
push userkwierso@gmail.com
push dateThu, 11 Jun 2015 01:38:38 +0000
treeherdermozilla-inbound@39e638ed06bf [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMossop
bugs1129957
milestone41.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1129957 - Test that RemoteWebNavigation accept postdata headers. r=Mossop
browser/base/content/test/general/browser.ini
browser/base/content/test/general/browser_remoteWebNavigation_postdata.js
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -350,16 +350,17 @@ skip-if = buildapp == 'mulet' || e10s # 
 [browser_private_browsing_window.js]
 skip-if = buildapp == 'mulet'
 [browser_private_no_prompt.js]
 skip-if = buildapp == 'mulet'
 [browser_relatedTabs.js]
 [browser_remoteTroubleshoot.js]
 support-files =
   test_remoteTroubleshoot.html
+[browser_remoteWebNavigation_postdata.js]
 [browser_removeTabsToTheEnd.js]
 [browser_removeUnsafeProtocolsFromURLBarPaste.js]
 [browser_restore_isAppTab.js]
 [browser_sanitize-passwordDisabledHosts.js]
 [browser_sanitize-sitepermissions.js]
 [browser_sanitize-timespans.js]
 skip-if = buildapp == 'mulet'
 [browser_sanitizeDialog.js]
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/general/browser_remoteWebNavigation_postdata.js
@@ -0,0 +1,50 @@
+/* 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/. */
+
+Cu.import("resource://gre/modules/BrowserUtils.jsm");
+Cu.import("resource://gre/modules/Promise.jsm");
+
+function makeInputStream(aString) {
+  let stream = Cc["@mozilla.org/io/string-input-stream;1"]
+                 .createInstance(Ci.nsIStringInputStream);
+  stream.data = aString;
+  return stream; // XPConnect will QI this to nsIInputStream for us.
+}
+
+add_task(function* test_remoteWebNavigation_postdata() {
+  let obj = {};
+  Cu.import("resource://testing-common/httpd.js", obj);
+  Cu.import("resource://services-common/utils.js", obj);
+
+  let server = new obj.HttpServer();
+  server.start(-1);
+
+  let loadDeferred = Promise.defer();
+
+  server.registerPathHandler("/test", (request, response) => {
+    let body = obj.CommonUtils.readBytesFromInputStream(request.bodyInputStream);
+    is(body, "success", "request body is correct");
+    is(request.method, "POST", "request was a post");
+    response.write("Received from POST: " + body);
+    loadDeferred.resolve();
+  });
+
+  let i = server.identity;
+  let path = i.primaryScheme + "://" + i.primaryHost + ":" + i.primaryPort + "/test";
+
+  let postdata =
+    "Content-Length: 7\r\n" +
+    "Content-Type: application/x-www-form-urlencoded\r\n" +
+    "\r\n" +
+    "success";
+
+  openUILinkIn(path, "tab", null, makeInputStream(postdata));
+
+  yield loadDeferred.promise;
+  yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
+
+  let serverStoppedDeferred = Promise.defer();
+  server.stop(function() { serverStoppedDeferred.resolve(); });
+  yield serverStoppedDeferred.promise;
+});