Backed out changeset b71c8c052463 (bug 1943846) for causing mass failures. CLOSED...
[gecko.git] / netwerk / test / unit / test_referrer_policy.js
blob18b1cb3a1680e4cea36ee49a1257b05ac89bdd30
1 "use strict";
3 const ReferrerInfo = Components.Constructor(
4 "@mozilla.org/referrer-info;1",
5 "nsIReferrerInfo",
6 "init"
7 );
9 function test_policy(test) {
10 info("Running test: " + test.toSource());
12 var prefs = Services.prefs;
13 if (test.defaultReferrerPolicyPref !== undefined) {
14 prefs.setIntPref(
15 "network.http.referer.defaultPolicy",
16 test.defaultReferrerPolicyPref
18 } else {
19 prefs.setIntPref("network.http.referer.defaultPolicy", 3);
22 if (test.disallowRelaxingDefault) {
23 prefs.setBoolPref(
24 "network.http.referer.disallowCrossSiteRelaxingDefault",
25 test.disallowRelaxingDefault
27 } else {
28 prefs.setBoolPref(
29 "network.http.referer.disallowCrossSiteRelaxingDefault",
30 false
34 var uri = NetUtil.newURI(test.url);
35 var chan = NetUtil.newChannel({
36 uri,
37 loadUsingSystemPrincipal: true,
38 });
40 var referrer = NetUtil.newURI(test.referrer);
41 chan.QueryInterface(Ci.nsIHttpChannel);
42 chan.referrerInfo = new ReferrerInfo(test.policy, true, referrer);
44 if (test.expectedReferrerSpec === undefined) {
45 try {
46 chan.getRequestHeader("Referer");
47 do_throw("Should not find a Referer header!");
48 } catch (e) {}
49 } else {
50 var header = chan.getRequestHeader("Referer");
51 Assert.equal(header, test.expectedReferrerSpec);
55 const nsIReferrerInfo = Ci.nsIReferrerInfo;
56 // Assuming cross origin because we have no triggering principal available
57 var gTests = [
59 policy: nsIReferrerInfo.EMPTY,
60 defaultReferrerPolicyPref: 0,
61 url: "https://test.example/foo",
62 referrer: "https://test.example/referrer",
63 expectedReferrerSpec: undefined,
66 policy: nsIReferrerInfo.EMPTY,
67 defaultReferrerPolicyPref: 1,
68 url: "http://test.example/foo",
69 referrer: "http://test1.example/referrer",
70 expectedReferrerSpec: undefined,
73 policy: nsIReferrerInfo.EMPTY,
74 defaultReferrerPolicyPref: 2,
75 url: "https://sub1.\xe4lt.example/foo",
76 referrer: "https://sub1.\xe4lt.example/referrer",
77 expectedReferrerSpec: "https://sub1.xn--lt-uia.example/",
80 policy: nsIReferrerInfo.EMPTY,
81 defaultReferrerPolicyPref: 2,
82 url: "https://test.example/foo",
83 referrer: "https://test1.example/referrer",
84 expectedReferrerSpec: "https://test1.example/",
87 policy: nsIReferrerInfo.EMPTY,
88 defaultReferrerPolicyPref: 3,
89 url: "https://test.example/foo",
90 referrer: "https://test.example/referrer",
91 expectedReferrerSpec: "https://test.example/referrer",
94 policy: nsIReferrerInfo.EMPTY,
95 defaultReferrerPolicyPref: 3,
96 url: "https://sub1.\xe4lt.example/foo",
97 referrer: "https://sub1.\xe4lt.example/referrer",
98 expectedReferrerSpec: "https://sub1.xn--lt-uia.example/referrer",
101 policy: nsIReferrerInfo.EMPTY,
102 defaultReferrerPolicyPref: 3,
103 url: "http://test.example/foo",
104 referrer: "https://test.example/referrer",
105 expectedReferrerSpec: undefined,
108 policy: nsIReferrerInfo.NO_REFERRER,
109 url: "https://test.example/foo",
110 referrer: "https://test.example/referrer",
111 expectedReferrerSpec: undefined,
114 policy: nsIReferrerInfo.ORIGIN,
115 url: "https://test.example/foo",
116 referrer: "https://test.example/referrer",
117 expectedReferrerSpec: "https://test.example/",
120 policy: nsIReferrerInfo.ORIGIN,
121 url: "https://sub1.\xe4lt.example/foo",
122 referrer: "https://sub1.\xe4lt.example/referrer",
123 expectedReferrerSpec: "https://sub1.xn--lt-uia.example/",
126 policy: nsIReferrerInfo.UNSAFE_URL,
127 url: "https://test.example/foo",
128 referrer: "https://test.example/referrer",
129 expectedReferrerSpec: "https://test.example/referrer",
132 policy: nsIReferrerInfo.UNSAFE_URL,
133 url: "https://sub1.\xe4lt.example/foo",
134 referrer: "https://sub1.\xe4lt.example/referrer",
135 expectedReferrerSpec: "https://sub1.xn--lt-uia.example/referrer",
138 policy: nsIReferrerInfo.UNSAFE_URL,
139 url: "http://test.example/foo",
140 referrer: "https://test.example/referrer",
141 expectedReferrerSpec: "https://test.example/referrer",
144 policy: nsIReferrerInfo.UNSAFE_URL,
145 url: "http://sub1.\xe4lt.example/foo",
146 referrer: "https://sub1.\xe4lt.example/referrer",
147 expectedReferrerSpec: "https://sub1.xn--lt-uia.example/referrer",
151 function run_test() {
152 gTests.forEach(test => test_policy(test));
153 Services.prefs.clearUserPref("network.http.referer.disallowRelaxingDefault");