Backed out changeset b71c8c052463 (bug 1943846) for causing mass failures. CLOSED...
[gecko.git] / netwerk / test / unit / test_channel_priority.js
blobb230042890861381de0c112b86bfa69abd1ed24a
1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
2 /* Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/publicdomain/zero/1.0/ */
5 "use strict";
7 const { HttpServer } = ChromeUtils.importESModule(
8 "resource://testing-common/httpd.sys.mjs"
9 );
11 let httpserver;
12 let port;
14 function startHttpServer() {
15 httpserver = new HttpServer();
17 httpserver.registerPathHandler("/resource", (metadata, response) => {
18 response.setStatusLine(metadata.httpVersion, 200, "OK");
19 response.setHeader("Content-Type", "text/plain", false);
20 response.setHeader("Cache-Control", "no-cache", false);
21 response.bodyOutputStream.write("data", 4);
22 });
24 httpserver.registerPathHandler("/redirect", (metadata, response) => {
25 response.setStatusLine(metadata.httpVersion, 302, "Redirect");
26 response.setHeader("Location", "/resource", false);
27 response.setHeader("Cache-Control", "no-cache", false);
28 });
30 httpserver.start(-1);
31 port = httpserver.identity.primaryPort;
34 function stopHttpServer() {
35 httpserver.stop(() => {});
38 function makeRequest(uri) {
39 let requestChannel = NetUtil.newChannel({
40 uri,
41 loadUsingSystemPrincipal: true,
42 });
43 requestChannel.QueryInterface(Ci.nsISupportsPriority);
44 requestChannel.priority = Ci.nsISupportsPriority.PRIORITY_HIGHEST;
45 requestChannel.asyncOpen(new ChannelListener(checkResponse, requestChannel));
48 function checkResponse(request, buffer, requestChannel) {
49 requestChannel.QueryInterface(Ci.nsISupportsPriority);
50 Assert.equal(
51 requestChannel.priority,
52 Ci.nsISupportsPriority.PRIORITY_HIGHEST
55 // the response channel can be different (if it was redirected)
56 let responseChannel = request.QueryInterface(Ci.nsISupportsPriority);
57 Assert.equal(
58 responseChannel.priority,
59 Ci.nsISupportsPriority.PRIORITY_HIGHEST
62 run_next_test();
65 add_test(function test_regular_request() {
66 makeRequest(`http://localhost:${port}/resource`);
67 });
69 add_test(function test_redirect() {
70 makeRequest(`http://localhost:${port}/redirect`);
71 });
73 function run_test() {
74 // jshint ignore:line
75 if (!runningInParent) {
76 // add a task to report test finished to parent process at the end of test queue,
77 // since do_register_cleanup is not available in child xpcshell test script.
78 add_test(function () {
79 do_send_remote_message("finished");
80 run_next_test();
81 });
83 // waiting for parent process to assign server port via configPort()
84 return;
87 startHttpServer();
88 registerCleanupFunction(stopHttpServer);
89 run_next_test();
92 // This is used by unit_ipc/test_channel_priority_wrap.js for e10s XPCShell test
93 /* exported configPort */
94 function configPort(serverPort) {
95 // jshint ignore:line
96 port = serverPort;
97 run_next_test();