test_bug401564.js (1224B)
1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ 2 "use strict"; 3 4 const { HttpServer } = ChromeUtils.importESModule( 5 "resource://testing-common/httpd.sys.mjs" 6 ); 7 8 var httpserver = null; 9 const noRedirectURI = "/content"; 10 const acceptType = "application/json"; 11 12 function redirectHandler(metadata, response) { 13 response.setStatusLine(metadata.httpVersion, 302, "Moved Temporarily"); 14 response.setHeader("Location", noRedirectURI, false); 15 } 16 17 function contentHandler(metadata) { 18 Assert.equal(metadata.getHeader("Accept"), acceptType); 19 httpserver.stop(do_test_finished); 20 } 21 22 function dummyHandler() {} 23 24 function run_test() { 25 httpserver = new HttpServer(); 26 httpserver.registerPathHandler("/redirect", redirectHandler); 27 httpserver.registerPathHandler("/content", contentHandler); 28 httpserver.start(-1); 29 30 Services.prefs.setBoolPref("network.http.prompt-temp-redirect", false); 31 32 var chan = NetUtil.newChannel({ 33 uri: "http://localhost:" + httpserver.identity.primaryPort + "/redirect", 34 loadUsingSystemPrincipal: true, 35 }); 36 chan.QueryInterface(Ci.nsIHttpChannel); 37 chan.setRequestHeader("Accept", acceptType, false); 38 39 chan.asyncOpen(new ChannelListener(dummyHandler, null)); 40 41 do_test_pending(); 42 }