test_httpcancel_wrap.js (1376B)
1 "use strict"; 2 3 const ReferrerInfo = Components.Constructor( 4 "@mozilla.org/referrer-info;1", 5 "nsIReferrerInfo", 6 "init" 7 ); 8 9 let observer = null; 10 11 function run_test() { 12 do_await_remote_message("register-observer").then(() => { 13 observer = { 14 QueryInterface: ChromeUtils.generateQI(["nsIObserver"]), 15 16 observe(subject) { 17 subject = subject.QueryInterface(Ci.nsIRequest); 18 subject.cancel(Cr.NS_BINDING_ABORTED); 19 20 // ENSURE_CALLED_BEFORE_CONNECT: setting values should still work 21 try { 22 subject.QueryInterface(Ci.nsIHttpChannel); 23 let currentReferrer = subject.getRequestHeader("Referer"); 24 Assert.equal(currentReferrer, "http://site1.com/"); 25 let uri = Services.io.newURI("http://site2.com"); 26 subject.referrerInfo = new ReferrerInfo( 27 Ci.nsIReferrerInfo.EMPTY, 28 true, 29 uri 30 ); 31 } catch (ex) { 32 do_throw("Exception: " + ex); 33 } 34 }, 35 }; 36 37 Services.obs.addObserver(observer, "http-on-modify-request"); 38 do_send_remote_message("register-observer-done"); 39 }); 40 41 do_await_remote_message("unregister-observer").then(() => { 42 Services.obs.removeObserver(observer, "http-on-modify-request"); 43 44 do_send_remote_message("unregister-observer-done"); 45 }); 46 47 run_test_in_child("../unit/test_httpcancel.js"); 48 }