3 const ReferrerInfo
= Components
.Constructor(
4 "@mozilla.org/referrer-info;1",
9 function test_policy(test
) {
10 info("Running test: " + test
.toSource());
12 var prefs
= Services
.prefs
;
13 if (test
.defaultReferrerPolicyPref
!== undefined) {
15 "network.http.referer.defaultPolicy",
16 test
.defaultReferrerPolicyPref
19 prefs
.setIntPref("network.http.referer.defaultPolicy", 3);
22 if (test
.disallowRelaxingDefault
) {
24 "network.http.referer.disallowCrossSiteRelaxingDefault",
25 test
.disallowRelaxingDefault
29 "network.http.referer.disallowCrossSiteRelaxingDefault",
34 var uri
= NetUtil
.newURI(test
.url
);
35 var chan
= NetUtil
.newChannel({
37 loadUsingSystemPrincipal
: true,
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) {
46 chan
.getRequestHeader("Referer");
47 do_throw("Should not find a Referer header!");
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
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");