3 const { HttpServer
} = ChromeUtils
.importESModule(
4 "resource://testing-common/httpd.sys.mjs"
7 ChromeUtils
.defineLazyGetter(this, "URL", function () {
8 return "http://localhost:" + httpserv
.identity
.primaryPort
+ "/cached";
12 var handlers_called
= 0;
14 function cached_handler(metadata
, response
) {
15 response
.setHeader("Content-Type", "text/plain", false);
16 response
.setHeader("Cache-Control", "max-age=10000", false);
17 response
.setStatusLine(metadata
.httpVersion
, 200, "OK");
18 var body
= "0123456789";
19 response
.bodyOutputStream
.write(body
, body
.length
);
23 function makeChan(url
, userContextId
) {
24 var chan
= NetUtil
.newChannel({
26 loadUsingSystemPrincipal
: true,
27 }).QueryInterface(Ci
.nsIHttpChannel
);
28 chan
.loadInfo
.originAttributes
= { userContextId
};
32 // [userContextId, expected_handlers_called]
43 async
function run_all_tests() {
44 for (let test
of firstTests
) {
46 await
test_channel(...test
);
49 // We can't easily cause webapp data to be cleared from the child process, so skip
50 // the rest of these tests.
51 let procType
= Services
.appinfo
.processType
;
52 if (procType
!= Ci
.nsIXULRuntime
.PROCESS_TYPE_DEFAULT
) {
56 Services
.clearData
.deleteDataFromOriginAttributesPattern({
60 for (let test
of secondTests
) {
62 await
test_channel(...test
);
71 Services
.prefs
.setBoolPref("network.http.rcwn.enabled", false);
73 httpserv
= new HttpServer();
74 httpserv
.registerPathHandler("/cached", cached_handler
);
76 run_all_tests().then(() => {
81 function test_channel(userContextId
, expected
) {
82 return new Promise(resolve
=> {
83 var chan
= makeChan(URL
, userContextId
);
85 new ChannelListener(doneFirstLoad
.bind(null, resolve
), expected
)
90 function doneFirstLoad(resolve
, req
, buffer
, expected
) {
91 // Load it again, make sure it hits the cache
92 var oa
= req
.loadInfo
.originAttributes
;
93 var chan
= makeChan(URL
, oa
.userContextId
);
95 new ChannelListener(doneSecondLoad
.bind(null, resolve
), expected
)
99 function doneSecondLoad(resolve
, req
, buffer
, expected
) {
100 Assert
.equal(handlers_called
, expected
);