1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const TEST_URI = "data:text/html;charset=utf-8,<p>Web Console test for " +
"bug 630733";
const TEST_URI2 = "http://example.com/browser/devtools/client/webconsole/" +
"test/test-bug-630733-response-redirect-headers.sjs";
var lastFinishedRequests = {};
var webConsoleClient;
add_task(function* () {
yield loadTab(TEST_URI);
let hud = yield openConsole();
yield consoleOpened(hud);
yield getHeaders();
yield getContent();
performTest();
});
function consoleOpened(hud) {
let deferred = promise.defer();
webConsoleClient = hud.ui.webConsoleClient;
HUDService.lastFinishedRequest.callback = (aHttpRequest) => {
let status = aHttpRequest.response.status;
lastFinishedRequests[status] = aHttpRequest;
if ("301" in lastFinishedRequests &&
"404" in lastFinishedRequests) {
deferred.resolve();
}
};
BrowserTestUtils.loadURI(gBrowser.selectedBrowser, TEST_URI2);
return deferred.promise;
}
function getHeaders() {
let deferred = promise.defer();
HUDService.lastFinishedRequest.callback = null;
ok("301" in lastFinishedRequests, "request 1: 301 Moved Permanently");
ok("404" in lastFinishedRequests, "request 2: 404 Not found");
webConsoleClient.getResponseHeaders(lastFinishedRequests["301"].actor,
function (response) {
lastFinishedRequests["301"].response.headers = response.headers;
webConsoleClient.getResponseHeaders(lastFinishedRequests["404"].actor,
function (resp) {
lastFinishedRequests["404"].response.headers = resp.headers;
executeSoon(deferred.resolve);
});
});
return deferred.promise;
}
function getContent() {
let deferred = promise.defer();
webConsoleClient.getResponseContent(lastFinishedRequests["301"].actor,
function (response) {
lastFinishedRequests["301"].response.content = response.content;
lastFinishedRequests["301"].discardResponseBody = response.contentDiscarded;
webConsoleClient.getResponseContent(lastFinishedRequests["404"].actor,
function (resp) {
lastFinishedRequests["404"].response.content = resp.content;
lastFinishedRequests["404"].discardResponseBody =
resp.contentDiscarded;
webConsoleClient = null;
executeSoon(deferred.resolve);
});
});
return deferred.promise;
}
function performTest() {
function readHeader(name) {
for (let header of headers) {
if (header.name.toLowerCase() == name.toLowerCase()) {
return header.value;
}
}
return null;
}
let headers = lastFinishedRequests["301"].response.headers;
is(readHeader("Content-Type"), "text/html",
"we do have the Content-Type header");
is(readHeader("Content-Length"), 71, "Content-Length is correct");
is(readHeader("Location"), "/redirect-from-bug-630733",
"Content-Length is correct");
is(readHeader("x-foobar-bug630733"), "bazbaz",
"X-Foobar-bug630733 is correct");
let body = lastFinishedRequests["301"].response.content;
ok(!body.text, "body discarded for request 1");
ok(lastFinishedRequests["301"].discardResponseBody,
"body discarded for request 1 (confirmed)");
headers = lastFinishedRequests["404"].response.headers;
ok(!readHeader("Location"), "no Location header");
ok(!readHeader("x-foobar-bug630733"), "no X-Foobar-bug630733 header");
body = lastFinishedRequests["404"].response.content.text;
isnot(body.indexOf("404"), -1,
"body is correct for request 2");
lastFinishedRequests = webConsoleClient = null;
}
|