tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }