From e6a1d72158f6e7cb6db6d4c9fd6b5c024f404088 Mon Sep 17 00:00:00 2001 From: Martijn Wargers Date: Sat, 12 Oct 2013 02:18:34 +0200 Subject: [PATCH] Bug 901343 - Tests that use createSystemXHR are failing on b2g mochitest. r=sicking --- content/base/test/test_bug338583.html | 24 ++++---- content/base/test/test_bug426308.html | 17 ++++-- content/base/test/test_bug431701.html | 8 ++- content/base/test/test_bug804395.html | 10 ++-- .../base/test/test_xhr_forbidden_headers.html | 60 +++++++++++-------- testing/mochitest/android.json | 1 - testing/mochitest/androidx86.json | 1 - testing/mochitest/b2g.json | 6 +- .../tests/test_SpecialPowersExtension.html | 7 +-- .../specialpowers/content/specialpowersAPI.js | 4 -- 10 files changed, 75 insertions(+), 63 deletions(-) diff --git a/content/base/test/test_bug338583.html b/content/base/test/test_bug338583.html index 6a69ace086b..a189a978544 100644 --- a/content/base/test/test_bug338583.html +++ b/content/base/test/test_bug338583.html @@ -89,9 +89,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338583 e.target.hits['fn_other_event_name']++; } - var domBranch; - var oldPrefVal; - var gEventSourceObj1 = null, gEventSourceObj1_e, gEventSourceObj1_f; var gEventSourceObj2 = null; var gEventSourceObj3_a = null, gEventSourceObj3_b = null, @@ -250,6 +247,12 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338583 } function doTest3_b(test_id) { + // currently no support yet for local files for b2g/Android mochitest, see bug 838726 + if (navigator.appVersion.indexOf("Android") != -1 || SpecialPowers.Services.appinfo.name == "B2G") { + setTestHasFinished(test_id); + return; + } + var xhr = new XMLHttpRequest; xhr.open("GET", "/dynamic/getMyDirectory.sjs", false); xhr.send(); @@ -462,7 +465,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338583 function doTest5_c(test_id) { // credentials using the auth cache and cookies - var xhr = SpecialPowers.createSystemXHR(); + var xhr = new XMLHttpRequest({mozAnon: false, mozSystem: true}); xhr.withCredentials = true; // also, test mixed mode UI xhr.open("GET", "https://example.com/tests/content/base/test/file_restrictedEventSource.sjs?test=user1_xhr", true, "user 1", "password 1"); @@ -491,7 +494,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338583 function doTest5_d(test_id) { - var xhr = SpecialPowers.createSystemXHR(); + var xhr = new XMLHttpRequest({mozAnon: false, mozSystem: true}); xhr.withCredentials = true; xhr.open("GET", "https://example.com/tests/content/base/test/file_restrictedEventSource.sjs?test=user2_xhr", true, "user 2", "password 2"); xhr.send(); @@ -519,7 +522,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338583 function doTest5_e(test_id) { // credentials using the auth cache and cookies - var xhr = SpecialPowers.createSystemXHR(); + var xhr = new XMLHttpRequest({mozAnon: false, mozSystem: true}); xhr.withCredentials = true; xhr.open("GET", "http://example.org/tests/content/base/test/file_restrictedEventSource.sjs?test=user1_xhr", true, "user 1", "password 1"); xhr.send(); @@ -547,7 +550,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338583 function doTest5_f(test_id) { - var xhr = SpecialPowers.createSystemXHR(); + var xhr = new XMLHttpRequest({mozAnon: false, mozSystem: true}); xhr.withCredentials = true; xhr.open("GET", "http://example.org/tests/content/base/test/file_restrictedEventSource.sjs?test=user2_xhr", true, "user 2", "password 2"); xhr.send(); @@ -614,7 +617,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338583 gEventSourceObj7.msg_received[1] == "delayed1" && gEventSourceObj7.msg_received[2] == "delayed2", "Test 7 failed"); - SpecialPowers.setBoolPref("dom.server-events.enabled", oldPrefVal); document.getElementById('waitSpan').innerHTML = ''; setTestHasFinished(test_id); }, parseInt(8000*stress_factor)); @@ -623,13 +625,11 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=338583 function doTest() { // Allow all cookies, then run the actual test - SpecialPowers.pushPrefEnv({"set": [["network.cookie.cookieBehavior", 0]]}, doTestCallback); + SpecialPowers.pushPrefEnv({"set": [["network.cookie.cookieBehavior", 0], ["dom.server-events.enabled", true]]}, function() { SpecialPowers.pushPermissions([{'type': 'systemXHR', 'allow': true, 'context': document}], doTestCallback);}); } - + function doTestCallback() { - oldPrefVal = SpecialPowers.getBoolPref("dom.server-events.enabled"); - SpecialPowers.setBoolPref("dom.server-events.enabled", true); // we get a good stress_factor by testing 10 setTimeouts and some float // arithmetic taking my machine as stress_factor==1 (time=589) diff --git a/content/base/test/test_bug426308.html b/content/base/test/test_bug426308.html index ef10ea99f76..1654824596c 100644 --- a/content/base/test/test_bug426308.html +++ b/content/base/test/test_bug426308.html @@ -21,12 +21,21 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=426308 const SJS_URL = "http://example.org:80/tests/content/base/test/bug426308-redirect.sjs"; -var req = SpecialPowers.createSystemXHR(); -req.open("GET", SJS_URL + "?" + window.location.href, false); -req.send(null); +function startTest() { + var req = new XMLHttpRequest({mozAnon: false, mozSystem: true}); + req.open("GET", SJS_URL + "?" + window.location.href, false); + req.send(null); -is(req.status, 200, "Redirect did not happen"); + is(req.status, 200, "Redirect did not happen"); + SimpleTest.finish(); +} + +SimpleTest.waitForExplicitFinish(); + +addLoadEvent(function() { + SpecialPowers.pushPermissions([{'type': 'systemXHR', 'allow': true, 'context': document}], startTest); +}); diff --git a/content/base/test/test_bug431701.html b/content/base/test/test_bug431701.html index dbc04a77e26..e17e4418537 100644 --- a/content/base/test/test_bug431701.html +++ b/content/base/test/test_bug431701.html @@ -51,7 +51,7 @@ function createDoc() { function xhrDoc(idx) { return function() { // Defy same-origin restrictions! - var xhr = SpecialPowers.createSystemXHR(); + var xhr = new XMLHttpRequest({mozAnon: false, mozSystem: true}); xhr.open("GET", docSources[idx], false); xhr.send(); return xhr.responseXML; @@ -87,6 +87,10 @@ function doTest(idx) { } addLoadEvent(function() { + SpecialPowers.pushPermissions([{'type': 'systemXHR', 'allow': true, 'context': document}], startTest); +}); + +function startTest() { // sanity check isnot("", null, "Shouldn't be equal!"); @@ -104,7 +108,7 @@ addLoadEvent(function() { xhr.abort(); SimpleTest.finish(); -}); +}; diff --git a/content/base/test/test_bug804395.html b/content/base/test/test_bug804395.html index 8f6398ba1bf..f890595c4a5 100644 --- a/content/base/test/test_bug804395.html +++ b/content/base/test/test_bug804395.html @@ -19,7 +19,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=804395 diff --git a/content/base/test/test_xhr_forbidden_headers.html b/content/base/test/test_xhr_forbidden_headers.html index 041e66f88c1..c6dd919ff04 100644 --- a/content/base/test/test_xhr_forbidden_headers.html +++ b/content/base/test/test_xhr_forbidden_headers.html @@ -49,37 +49,47 @@ var headers = [ ]; var i, request; -// Try setting headers in unprivileged context -request = new XMLHttpRequest(); -request.open("GET", window.location.href); -for (i = 0; i < headers.length; i++) - request.setRequestHeader(headers[i], "test" + i); +function startTest() { + // Try setting headers in unprivileged context + request = new XMLHttpRequest(); + request.open("GET", window.location.href); + for (i = 0; i < headers.length; i++) + request.setRequestHeader(headers[i], "test" + i); -// Read out headers -var channel = SpecialPowers.wrap(request).channel.QueryInterface(SpecialPowers.Ci.nsIHttpChannel); -for (i = 0; i < headers.length; i++) { - // Retrieving Content-Length will throw an exception - var value = null; - try { - value = channel.getRequestHeader(headers[i]); + // Read out headers + var channel = SpecialPowers.wrap(request).channel.QueryInterface(SpecialPowers.Ci.nsIHttpChannel); + for (i = 0; i < headers.length; i++) { + // Retrieving Content-Length will throw an exception + var value = null; + try { + value = channel.getRequestHeader(headers[i]); + } + catch(e) {} + + isnot(value, "test" + i, "Setting " + headers[i] + " header in unprivileged context"); } - catch(e) {} - isnot(value, "test" + i, "Setting " + headers[i] + " header in unprivileged context"); + // Try setting headers in privileged context + request = new XMLHttpRequest({mozAnon: false, mozSystem: true}); + request.open("GET", window.location.href); + for (i = 0; i < headers.length; i++) + request.setRequestHeader(headers[i], "test" + i); + + // Read out headers + var channel = SpecialPowers.wrap(request).channel.QueryInterface(SpecialPowers.Ci.nsIHttpChannel); + for (i = 0; i < headers.length; i++) { + var value = channel.getRequestHeader(headers[i]); + is(value, "test" + i, "Setting " + headers[i] + " header in privileged context"); + } + + SimpleTest.finish(); } -// Try setting headers in privileged context -request = SpecialPowers.createSystemXHR(); -request.open("GET", window.location.href); -for (i = 0; i < headers.length; i++) - request.setRequestHeader(headers[i], "test" + i); +SimpleTest.waitForExplicitFinish(); -// Read out headers -var channel = request.channel.QueryInterface(SpecialPowers.Ci.nsIHttpChannel); -for (i = 0; i < headers.length; i++) { - var value = channel.getRequestHeader(headers[i]); - is(value, "test" + i, "Setting " + headers[i] + " header in privileged context"); -} +addLoadEvent(function() { + SpecialPowers.pushPermissions([{'type': 'systemXHR', 'allow': true, 'context': document}], startTest); +}); diff --git a/testing/mochitest/android.json b/testing/mochitest/android.json index ec0d4976037..796167a52a9 100644 --- a/testing/mochitest/android.json +++ b/testing/mochitest/android.json @@ -36,7 +36,6 @@ "content/base/test/test_websocket_hello.html": "", "content/base/test/test_x-frame-options.html": "", "content/base/test/test_xhr_abort_after_load.html": "", - "content/base/test/test_xhr_forbidden_headers.html": "", "content/base/test/test_xhr_progressevents.html": "", "content/base/test/websocket_hybi/test_receive-arraybuffer.html": "", "content/base/test/websocket_hybi/test_receive-blob.html": "", diff --git a/testing/mochitest/androidx86.json b/testing/mochitest/androidx86.json index 0a2a054ac02..00d0eccdccb 100644 --- a/testing/mochitest/androidx86.json +++ b/testing/mochitest/androidx86.json @@ -37,7 +37,6 @@ "content/base/test/test_websocket_hello.html": "", "content/base/test/test_x-frame-options.html": "", "content/base/test/test_xhr_abort_after_load.html": "", - "content/base/test/test_xhr_forbidden_headers.html": "", "content/base/test/test_xhr_progressevents.html": "", "content/base/test/websocket_hybi/test_receive-arraybuffer.html": "", "content/base/test/websocket_hybi/test_receive-blob.html": "", diff --git a/testing/mochitest/b2g.json b/testing/mochitest/b2g.json index 195171dc995..8ca9e2ffcd5 100644 --- a/testing/mochitest/b2g.json +++ b/testing/mochitest/b2g.json @@ -92,8 +92,7 @@ "content/base/test/test_bug431701.html":"xmlhttprequest causes crash, bug 902271", "content/base/test/test_bug422537.html":"xmlhttprequest causes crash, bug 902271", - "content/base/test/test_bug338583.html":"43 total - bug 901343, specialpowers.wrap issue createsystemxhr", - "content/base/test/test_bug804395.html":"bug 901343, specialpowers.wrap issue createsystemxhr", + "content/base/test/test_bug338583.html":"https not working, bug 907770", "content/base/test/test_bug475156.html":"36 total - bug 902611", "content/base/test/test_bug422403-1.html":"bug 901343, specialpowers.wrap issue [nsIChannel.open]", @@ -249,7 +248,6 @@ "content/base/test/test_bug422403-2.xhtml":"", "content/base/test/test_bug424359-1.html":"", "content/base/test/test_bug424359-2.html":"", - "content/base/test/test_bug426308.html":"", "content/base/test/test_mixed_content_blocker_bug803225.html":"", "content/html/document/test/test_non-ascii-cookie.html":"", @@ -321,7 +319,7 @@ "dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html":"", "dom/network/tests/test_networkstats_basics.html":"Will be fixed in bug 858005", - "dom/permission/tests/test_permission_basics.html":"Bug 907770", + "dom/permission/tests/test_permission_basics.html":"https not working, bug 907770", "dom/tests/mochitest/bugs/test_bug335976.xhtml":"", "dom/tests/mochitest/bugs/test_bug369306.html":"test timed out, can't focus back from popup window to opener?", diff --git a/testing/mochitest/tests/test_SpecialPowersExtension.html b/testing/mochitest/tests/test_SpecialPowersExtension.html index 840aff15e44..2f160d26020 100644 --- a/testing/mochitest/tests/test_SpecialPowersExtension.html +++ b/testing/mochitest/tests/test_SpecialPowersExtension.html @@ -78,11 +78,6 @@ function starttest(){ // Test a DOMWindowUtils method and property is(SpecialPowers.DOMWindowUtils.getClassName(window), "Proxy"); is(SpecialPowers.DOMWindowUtils.docCharsetIsForced, false); - - //Run the createSystemXHR method - var xhr = SpecialPowers.createSystemXHR(); - ok(xhr, "createSystemXHR should not return null"); - is(xhr.readyState, XMLHttpRequest.UNSENT, "createSystemXHR should create an unsent XMLHttpRequest object"); // QueryInterface and getPrivilegedProps tests is(SpecialPowers.can_QI(SpecialPowers), false); @@ -99,7 +94,7 @@ function starttest(){ // Try some basic stuff with XHR. var xhr2 = SpecialPowers.Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(SpecialPowers.Ci.nsIXMLHttpRequest); - is(xhr.readyState, XMLHttpRequest.UNSENT, "Should be able to get props off privileged objects"); + is(xhr2.readyState, XMLHttpRequest.UNSENT, "Should be able to get props off privileged objects"); var testURI = SpecialPowers.Cc['@mozilla.org/network/standard-url;1'] .createInstance(SpecialPowers.Ci.nsIURI); testURI.spec = "http://www.foobar.org/"; diff --git a/testing/specialpowers/content/specialpowersAPI.js b/testing/specialpowers/content/specialpowersAPI.js index a04f5e307ab..8ffb69286ca 100644 --- a/testing/specialpowers/content/specialpowersAPI.js +++ b/testing/specialpowers/content/specialpowersAPI.js @@ -1178,10 +1178,6 @@ SpecialPowersAPI.prototype = { this._getMUDV(window).stopEmulatingMedium(); }, - createSystemXHR: function() { - return this.wrap(Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest)); - }, - snapshotWindowWithOptions: function (win, rect, bgcolor, options) { var el = this.window.get().document.createElementNS("http://www.w3.org/1999/xhtml", "canvas"); if (rect === undefined) {