mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
cd848381e8
CLOSED TREE Backed out changeset 9318cab3bd13 (bug 1117650) Backed out changeset aff44058c799 (bug 1117650) Backed out changeset eef01ed4d406 (bug 1117650) Backed out changeset 1b25392be437 (bug 1117650)
122 lines
2.9 KiB
HTML
122 lines
2.9 KiB
HTML
<!DOCTYPE HTML>
|
|
<!--
|
|
NOTE! The content of this file is duplicated in file_CrossSiteXHR_inner.jar
|
|
and file_CrossSiteXHR_inner_data.sjs
|
|
Please update those files if you update this one.
|
|
-->
|
|
|
|
<html>
|
|
<head>
|
|
<script>
|
|
function trimString(stringValue) {
|
|
return stringValue.replace(/^\s+|\s+$/g, '');
|
|
};
|
|
|
|
window.addEventListener("message", function(e) {
|
|
|
|
sendData = null;
|
|
|
|
req = eval(e.data);
|
|
var res = {
|
|
didFail: false,
|
|
events: [],
|
|
progressEvents: 0,
|
|
status: 0,
|
|
responseText: "",
|
|
statusText: "",
|
|
responseXML: null,
|
|
sendThrew: false
|
|
};
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
for (type of ["load", "abort", "error", "loadstart", "loadend"]) {
|
|
xhr.addEventListener(type, function(e) {
|
|
res.events.push(e.type);
|
|
}, false);
|
|
}
|
|
xhr.addEventListener("readystatechange", function(e) {
|
|
res.events.push("rs" + xhr.readyState);
|
|
}, false);
|
|
xhr.addEventListener("progress", function(e) {
|
|
res.progressEvents++;
|
|
}, false);
|
|
if (req.uploadProgress) {
|
|
xhr.upload.addEventListener(req.uploadProgress, function(e) {
|
|
res.progressEvents++;
|
|
}, false);
|
|
}
|
|
xhr.onerror = function(e) {
|
|
res.didFail = true;
|
|
};
|
|
xhr.onloadend = function (event) {
|
|
res.status = xhr.status;
|
|
try {
|
|
res.statusText = xhr.statusText;
|
|
} catch (e) {
|
|
delete(res.statusText);
|
|
}
|
|
res.responseXML = xhr.responseXML ?
|
|
(new XMLSerializer()).serializeToString(xhr.responseXML) :
|
|
null;
|
|
res.responseText = xhr.responseText;
|
|
|
|
res.responseHeaders = {};
|
|
for (responseHeader in req.responseHeaders) {
|
|
res.responseHeaders[responseHeader] =
|
|
xhr.getResponseHeader(responseHeader);
|
|
}
|
|
res.allResponseHeaders = {};
|
|
var splitHeaders = xhr.getAllResponseHeaders().split("\r\n");
|
|
for (var i = 0; i < splitHeaders.length; i++) {
|
|
var headerValuePair = splitHeaders[i].split(":");
|
|
if(headerValuePair[1] != null) {
|
|
var headerName = trimString(headerValuePair[0]);
|
|
var headerValue = trimString(headerValuePair[1]);
|
|
res.allResponseHeaders[headerName] = headerValue;
|
|
}
|
|
}
|
|
post(e, res);
|
|
}
|
|
|
|
if (req.withCred)
|
|
xhr.withCredentials = true;
|
|
if (req.body)
|
|
sendData = req.body;
|
|
|
|
res.events.push("opening");
|
|
// Allow passign in falsy usernames/passwords so we can test them
|
|
try {
|
|
xhr.open(req.method, req.url, true,
|
|
("username" in req) ? req.username : "",
|
|
("password" in req) ? req.password : "aa");
|
|
} catch (ex) {
|
|
res.didFail = true;
|
|
post(e, res);
|
|
}
|
|
|
|
for (header in req.headers) {
|
|
xhr.setRequestHeader(header, req.headers[header]);
|
|
}
|
|
|
|
res.events.push("sending");
|
|
try {
|
|
xhr.send(sendData);
|
|
} catch (ex) {
|
|
res.didFail = true;
|
|
res.sendThrew = true;
|
|
post(e, res);
|
|
}
|
|
|
|
}, false);
|
|
|
|
function post(e, res) {
|
|
e.source.postMessage(res.toSource(), "http://mochi.test:8888");
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
Inner page
|
|
</body>
|
|
</html>
|