mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 09:15:35 +00:00
3a958eaecb
* * * Bug 1331680 - modification part5 -- fixed try server errors. r=jdm
90 lines
2.5 KiB
HTML
90 lines
2.5 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
-->
|
|
<head>
|
|
<title>Cookie changes from XHR requests are observed in content processes.</title>
|
|
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
|
|
<script type="text/javascript">
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
let {utils: Cu, classes: Cc, interfaces: Ci } = Components;
|
|
const XHR_COOKIE_NAMES = ["xhr1", "xhr2"];
|
|
|
|
var gScript = SpecialPowers.loadChromeScript(SimpleTest.getTestFileURL('file_1331680.js'));
|
|
gScript.addMessageListener("cookieName", confirmCookieName);
|
|
gScript.addMessageListener("removeObserver:return", finishTest);
|
|
gScript.sendAsyncMessage('createObserver');
|
|
|
|
// Confirm the notify which represents the cookie is updating.
|
|
var testsNum = 0;
|
|
function confirmCookieName(name) {
|
|
testsNum++;
|
|
switch(testsNum) {
|
|
case 1:
|
|
is(name, "xhr1=xhr_val1", "The cookie which names " + name + " is update to db");
|
|
break;
|
|
case 2:
|
|
is(document.cookie, "xhr1=xhr_val1", "Confirm the cookie string");
|
|
for (var i = 0; i < XHR_COOKIE_NAMES.length; i++) {
|
|
document.cookie = XHR_COOKIE_NAMES[i] + "=; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT";
|
|
}
|
|
break;
|
|
case 3:
|
|
is(document.cookie, "", "Confirm the cookie string");
|
|
gScript.sendAsyncMessage('removeObserver');
|
|
break;
|
|
}
|
|
}
|
|
|
|
function finishTest() {
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
function createXHR(url) {
|
|
return new Promise(function (resolve, reject) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("GET", url, true); // async request
|
|
xhr.onload = function () {
|
|
if (this.status >= 200 && this.status < 300) {
|
|
resolve(xhr.response);
|
|
} else {
|
|
reject({
|
|
status: this.status,
|
|
statusText: xhr.statusText
|
|
});
|
|
}
|
|
};
|
|
xhr.onerror = function () {
|
|
reject({
|
|
status: this.status,
|
|
statusText: xhr.statusText
|
|
});
|
|
};
|
|
xhr.send();
|
|
});
|
|
}
|
|
|
|
/* Test XHR
|
|
* 1. Create two XHR.
|
|
* 2. One of the XHR create a cookie names "xhr1", and other one create a http-only cookie names "xhr2".
|
|
* 3. Child process only set xhr1 to cookies hash table.
|
|
* 4. Child process only can get the xhr1 cookie from cookies hash table.
|
|
*/
|
|
Promise.resolve()
|
|
.then(_ => createXHR('set_cookie_xhr.sjs?xhr1'))
|
|
.then(_ => createXHR('set_cookie_xhr.sjs?xhr2'));
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<p id="display"></p>
|
|
<div id="content" style="display: none"></div>
|
|
<pre id="test">
|
|
</pre>
|
|
</body>
|
|
</html>
|
|
|