зеркало из https://github.com/mozilla/gecko-dev.git
Bug 704320 - Add tests for meta referrer implementation (r=bz)
This commit is contained in:
Родитель
4006e25456
Коммит
942fa49814
|
@ -0,0 +1,246 @@
|
|||
var BASE_URL = 'example.com/tests/dom/base/test/bug704320.sjs';
|
||||
|
||||
function createTestUrl(schemeFrom, schemeTo, policy, action, type) {
|
||||
return schemeTo + '://' + BASE_URL + '?' +
|
||||
'action=' + action + '&' +
|
||||
'scheme=' + schemeFrom + '-to-' + schemeTo + '&' +
|
||||
'policy=' + policy + '&' +
|
||||
'type=' + type;
|
||||
}
|
||||
|
||||
function create2ndLevelIframeUrl(schemeFrom, schemeTo, policy, type) {
|
||||
return schemeFrom + '://' + BASE_URL + '?' +
|
||||
'action=create-2nd-level-iframe&' +
|
||||
'scheme-from=' + schemeFrom + '&' +
|
||||
'scheme-to=' + schemeTo + '&' +
|
||||
'policy=' + policy + '&' +
|
||||
'type=' + type;
|
||||
}
|
||||
|
||||
// Creates the following test cases for the specified scheme and referrer
|
||||
// policy combination:
|
||||
// <link>
|
||||
// @import
|
||||
// font-face
|
||||
// bg-url
|
||||
// <script>
|
||||
// <img>
|
||||
// <iframe>
|
||||
// <audio>
|
||||
// <video>
|
||||
// <object type="bogus">
|
||||
// <object type="image/svg+xml">
|
||||
// <a>
|
||||
// <a ping>
|
||||
// <form>
|
||||
// window.location
|
||||
// window.open
|
||||
// XMLHttpRequest
|
||||
// EventSource
|
||||
// TODO: XSLT?
|
||||
//
|
||||
// This returns a page that loads all of the above resources and contains a
|
||||
// script that clicks a link after all resources are (hopefully)
|
||||
// loaded. The click triggers a redirection to file_bug704320_redirect.html,
|
||||
// which in turn notifies the main window that it's time to check the test
|
||||
// results.
|
||||
function createTest(schemeFrom, schemeTo, policy) {
|
||||
var _createTestUrl = createTestUrl.bind(
|
||||
null, schemeFrom, schemeTo, policy, 'test');
|
||||
|
||||
var _create2ndLevelIframeUrl = create2ndLevelIframeUrl.bind(
|
||||
null, schemeFrom, schemeTo, policy);
|
||||
|
||||
return '<!DOCTYPE HTML>\n\
|
||||
<html>\n\
|
||||
<head>\n\
|
||||
<meta name="referrer" content="' + policy + '">\n\
|
||||
<link rel="stylesheet" type="text/css" href="' + _createTestUrl('stylesheet') + '">\n\
|
||||
<style type="text/css">\n\
|
||||
@import "' + _createTestUrl('import-css') + '";\n\
|
||||
@font-face {\n\
|
||||
font-family: "Fake Serif Bold";\n\
|
||||
src: url("' + _createTestUrl('font-face') + '");\n\
|
||||
}\n\
|
||||
body {\n\
|
||||
font-family: "Fake Serif Bold", serif;\n\
|
||||
background: url("' + _createTestUrl('bg-url') + '");\n\
|
||||
}\n\
|
||||
</style>\n\
|
||||
</head>\n\
|
||||
<body>\n\
|
||||
<script src="' + _createTestUrl('script') + '"></script>\n\
|
||||
<img src="' + _createTestUrl('img') + '"></img>\n\
|
||||
<iframe src="' + _createTestUrl('iframe') + '"></iframe>\n\
|
||||
<audio src="' + _createTestUrl('audio') + '"></audio>\n\
|
||||
<video src="' + _createTestUrl('video') + '"></video>\n\
|
||||
<object type="bogus" data="' + _createTestUrl('object') + '"></object>\n\
|
||||
<object type="image/svg+xml" data="' + _createTestUrl('object-svg') + '"></object>\n\
|
||||
<a id="link" href="' + _createTestUrl('link') + '" ping="' + _createTestUrl('link-ping') + '"></a>\n\
|
||||
<iframe src="' + _create2ndLevelIframeUrl('form') + '"></iframe>\n\
|
||||
<iframe src="' + _create2ndLevelIframeUrl('window.location') + '"></iframe>\n\
|
||||
<script>\n\
|
||||
(function() {\n\
|
||||
var x = new XMLHttpRequest();\n\
|
||||
x.open("GET", "' + _createTestUrl('xmlhttprequest') + '");\n\
|
||||
x.send();\n\
|
||||
})();\n\
|
||||
(function() {\n\
|
||||
var eventSource = new EventSource("' + _createTestUrl('eventsource') + '");\n\
|
||||
})();' +
|
||||
|
||||
// LOAD EVENT (most of the tests)
|
||||
// fires when the resources for the page are loaded
|
||||
'var _isLoaded = false;\n\
|
||||
window.addEventListener("load", function() {\n\
|
||||
this._isLoaded = true;\n\
|
||||
this.checkForFinish();\n\
|
||||
}.bind(window), false);' +
|
||||
|
||||
// WINDOW.OPEN test
|
||||
// listen for incoming status from window.open, close the window
|
||||
// and check if we're done.
|
||||
'var _openedWindowLoaded = false;\n\
|
||||
window.addEventListener("message", function(message) {\n\
|
||||
if (message.data == "window.open") {\n\
|
||||
this._openedWindowLoaded = true;\n\
|
||||
this.win.close();\n\
|
||||
this.checkForFinish();\n\
|
||||
}\n\
|
||||
}.bind(window), false);\n\
|
||||
var win = window.open("' + _createTestUrl('window.open') + '", "");' +
|
||||
|
||||
// called by the two things that must complete: window.open page
|
||||
// and the window load event. When both are complete, this
|
||||
// "finishes" the iframe subtest by clicking the link.
|
||||
'function checkForFinish() {\n\
|
||||
if (window._isLoaded && window._openedWindowLoaded) {\n\
|
||||
document.getElementById("link").click();\n\
|
||||
}\n\
|
||||
}\n\
|
||||
</script>\n\
|
||||
</body>\n\
|
||||
</html>';
|
||||
}
|
||||
|
||||
function createIframedFormTest(schemeFrom, schemeTo, policy) {
|
||||
var actionUrl = schemeTo + '://' + BASE_URL;
|
||||
|
||||
return '<!DOCTYPE HTML>\n\
|
||||
<html>\n\
|
||||
<head>\n\
|
||||
<meta name="referrer" content="' + policy + '">\n\
|
||||
</head>\n\
|
||||
<body>\n\
|
||||
<form id="form" action="' + actionUrl + '">\n\
|
||||
<input type="hidden" name="action" value="test">\n\
|
||||
<input type="hidden" name="scheme" value="' + schemeFrom + '-to-' + schemeTo + '">\n\
|
||||
<input type="hidden" name="policy" value="' + policy + '">\n\
|
||||
<input type="hidden" name="type" value="form">\n\
|
||||
</form>\n\
|
||||
<script>\n\
|
||||
document.getElementById("form").submit();\n\
|
||||
</script>\n\
|
||||
</body>\n\
|
||||
</html>';
|
||||
}
|
||||
|
||||
function createIframedWindowLocationTest(schemeFrom, schemeTo, policy) {
|
||||
var url = createTestUrl(
|
||||
schemeFrom, schemeTo, policy, 'test', 'window.location');
|
||||
|
||||
return '<!DOCTYPE HTML>\n\
|
||||
<html>\n\
|
||||
<head>\n\
|
||||
<meta name="referrer" content="' + policy + '">\n\
|
||||
</head>\n\
|
||||
<body>\n\
|
||||
<script>\n\
|
||||
window.location = "' + url + '";\n\
|
||||
</script>\n\
|
||||
</body>\n\
|
||||
</html>';
|
||||
}
|
||||
|
||||
function handleRequest(request, response) {
|
||||
var sharedKey = 'bug704320.sjs';
|
||||
var params = request.queryString.split('&');
|
||||
var action = params[0].split('=')[1];
|
||||
|
||||
if (action === 'create-1st-level-iframe') {
|
||||
// ?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=origin
|
||||
var schemeFrom = params[1].split('=')[1];
|
||||
var schemeTo = params[2].split('=')[1];
|
||||
var policy = params[3].split('=')[1];
|
||||
|
||||
response.setHeader('Content-Type', 'text/html; charset=utf-8', false);
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.write(createTest(schemeFrom, schemeTo, policy));
|
||||
}
|
||||
else if (action === 'create-2nd-level-iframe') {
|
||||
// ?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=origin&type=form"
|
||||
var schemeFrom = params[1].split('=')[1];
|
||||
var schemeTo = params[2].split('=')[1];
|
||||
var policy = params[3].split('=')[1];
|
||||
var type = params[4].split('=')[1];
|
||||
|
||||
response.setHeader('Content-Type', 'text/html; charset=utf-8', false);
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
|
||||
if (type === 'form') {
|
||||
response.write(createIframedFormTest(schemeFrom, schemeTo, policy));
|
||||
} else if (type === 'window.location') {
|
||||
response.write(createIframedWindowLocationTest(
|
||||
schemeFrom, schemeTo, policy));
|
||||
}
|
||||
}
|
||||
else if (action === 'test') {
|
||||
// ?action=test&scheme=http-to-https&policy=origin&type=img
|
||||
var scheme = params[1].split('=')[1];
|
||||
var policy = params[2].split('=')[1];
|
||||
var type = params[3].split('=')[1];
|
||||
var result = getSharedState(sharedKey);
|
||||
|
||||
if (result === '') {
|
||||
result = {};
|
||||
} else {
|
||||
result = JSON.parse(result);
|
||||
}
|
||||
|
||||
if (!result[type]) {
|
||||
result[type] = {};
|
||||
}
|
||||
|
||||
if (!result[type][scheme]) {
|
||||
result[type][scheme] = {};
|
||||
}
|
||||
|
||||
if (request.hasHeader('Referer')) {
|
||||
result[type][scheme][policy] = request.getHeader('Referer');
|
||||
} else {
|
||||
result[type][scheme][policy] = '';
|
||||
}
|
||||
|
||||
setSharedState(sharedKey, JSON.stringify(result));
|
||||
|
||||
if (type === 'link') {
|
||||
var loc = 'https://example.com/tests/dom/base/test/file_bug704320_redirect.html';
|
||||
response.setStatusLine('1.1', 302, 'Found');
|
||||
response.setHeader('Location', loc, false);
|
||||
}
|
||||
|
||||
if (type === 'window.open') {
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/html', false);
|
||||
response.write('<html><body><script>'
|
||||
+ 'window.opener.postMessage("window.open", "*");'
|
||||
+ '</script></body></html>');
|
||||
}
|
||||
}
|
||||
else if (action === 'get-test-results') {
|
||||
// ?action=get-result
|
||||
response.setHeader('Cache-Control', 'no-cache', false);
|
||||
response.setHeader('Content-Type', 'text/plain', false);
|
||||
response.write(getSharedState(sharedKey));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script>
|
||||
parent.postMessage('', 'http://mochi.test:8888');
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
|
@ -52,6 +52,7 @@ support-files =
|
|||
bug696301-script-1.js
|
||||
bug696301-script-1.js^headers^
|
||||
bug696301-script-2.js
|
||||
bug704320.sjs
|
||||
bug819051.sjs
|
||||
copypaste.js
|
||||
delayedServerEvents.sjs
|
||||
|
@ -138,6 +139,7 @@ support-files =
|
|||
file_bug687859-http.js^headers^
|
||||
file_bug687859-inherit.js
|
||||
file_bug692434.xml
|
||||
file_bug704320_redirect.html
|
||||
file_bug707142_baseline.json
|
||||
file_bug707142_bom.json
|
||||
file_bug707142_utf-16.json
|
||||
|
@ -593,6 +595,8 @@ skip-if = buildapp == 'b2g'
|
|||
[test_bug698381.html]
|
||||
[test_bug698384.html]
|
||||
[test_bug704063.html]
|
||||
[test_bug704320.html]
|
||||
skip-if = buildapp == 'b2g' || toolkit == 'android' || e10s # b2g (Needs multiple window.open support) android(times out, bug 1100609) e10s(randomly fails, bug 1100362)
|
||||
[test_bug707142.html]
|
||||
[test_bug708620.html]
|
||||
[test_bug711047.html]
|
||||
|
|
|
@ -0,0 +1,232 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=704320
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test for Bug 704320</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=704320">Mozilla Bug 704320</a>
|
||||
<p id="display"></p>
|
||||
<pre id="content">
|
||||
</pre>
|
||||
<pre id="test">
|
||||
</pre>
|
||||
|
||||
<script type="application/javascript">
|
||||
|
||||
|
||||
var testIframeUrls = [
|
||||
// HTTP to HTTP
|
||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer-when-downgrade',
|
||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer',
|
||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url',
|
||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=origin',
|
||||
// HTTP to HTTPS
|
||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade',
|
||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer',
|
||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
||||
'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=origin',
|
||||
// HTTPS to HTTP
|
||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=no-referrer-when-downgrade',
|
||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=no-referrer',
|
||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url',
|
||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=origin',
|
||||
// HTTPS to HTTPS
|
||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer-when-downgrade',
|
||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer',
|
||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url',
|
||||
'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=origin'
|
||||
];
|
||||
|
||||
var expectedResults = {
|
||||
// From docshell/base/nsDocShell.cpp:
|
||||
// "If the document containing the hyperlink being audited was not retrieved
|
||||
// over an encrypted connection and its address does not have the same
|
||||
// origin as "ping URL", send a referrer."
|
||||
'link-ping': {
|
||||
// Same-origin
|
||||
'http-to-http': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': '',
|
||||
'origin': '',
|
||||
'no-referrer-when-downgrade': ''
|
||||
},
|
||||
'http-to-https': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
||||
'origin': 'http://example.com',
|
||||
'no-referrer-when-downgrade': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade'
|
||||
},
|
||||
// Encrypted and not same-origin
|
||||
'https-to-http': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': '',
|
||||
'origin': '',
|
||||
'no-referrer-when-downgrade': ''
|
||||
},
|
||||
// Encrypted
|
||||
'https-to-https': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': '',
|
||||
'origin': '',
|
||||
'no-referrer-when-downgrade': ''
|
||||
}
|
||||
},
|
||||
// form is tested in a 2nd level iframe.
|
||||
'form': {
|
||||
'http-to-http': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url&type=form',
|
||||
'origin': 'http://example.com',
|
||||
'no-referrer-when-downgrade': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer-when-downgrade&type=form'
|
||||
},
|
||||
'http-to-https': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url&type=form',
|
||||
'origin': 'http://example.com',
|
||||
'no-referrer-when-downgrade': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade&type=form'
|
||||
},
|
||||
'https-to-http': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url&type=form',
|
||||
'origin': 'https://example.com',
|
||||
'no-referrer-when-downgrade': ''
|
||||
},
|
||||
'https-to-https': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url&type=form',
|
||||
'origin': 'https://example.com',
|
||||
'no-referrer-when-downgrade': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer-when-downgrade&type=form'
|
||||
}
|
||||
},
|
||||
// window.location is tested in a 2nd level iframe.
|
||||
'window.location': {
|
||||
'http-to-http': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url&type=window.location',
|
||||
'origin': 'http://example.com',
|
||||
'no-referrer-when-downgrade': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer-when-downgrade&type=window.location'
|
||||
},
|
||||
'http-to-https': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url&type=window.location',
|
||||
'origin': 'http://example.com',
|
||||
'no-referrer-when-downgrade': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade&type=window.location'
|
||||
},
|
||||
'https-to-http': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url&type=window.location',
|
||||
'origin': 'https://example.com',
|
||||
'no-referrer-when-downgrade': ''
|
||||
},
|
||||
'https-to-https': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url&type=window.location',
|
||||
'origin': 'https://example.com',
|
||||
'no-referrer-when-downgrade': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-2nd-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer-when-downgrade&type=window.location'
|
||||
}
|
||||
},
|
||||
'default': {
|
||||
'http-to-http': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=unsafe-url',
|
||||
'origin': 'http://example.com',
|
||||
'no-referrer-when-downgrade': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=http&policy=no-referrer-when-downgrade'
|
||||
},
|
||||
'http-to-https': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=unsafe-url',
|
||||
'origin': 'http://example.com',
|
||||
'no-referrer-when-downgrade': 'http://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=http&scheme-to=https&policy=no-referrer-when-downgrade'
|
||||
},
|
||||
'https-to-http': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=http&policy=unsafe-url',
|
||||
'origin': 'https://example.com',
|
||||
'no-referrer-when-downgrade': ''
|
||||
},
|
||||
'https-to-https': {
|
||||
'no-referrer': '',
|
||||
'unsafe-url': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=unsafe-url',
|
||||
'origin': 'https://example.com',
|
||||
'no-referrer-when-downgrade': 'https://example.com/tests/dom/base/test/bug704320.sjs?action=create-1st-level-iframe&scheme-from=https&scheme-to=https&policy=no-referrer-when-downgrade'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function runit() {
|
||||
var url = 'bug704320.sjs?action=get-test-results';
|
||||
var xhr = new XMLHttpRequest();
|
||||
|
||||
xhr.open('GET', url);
|
||||
xhr.onreadystatechange = function() {
|
||||
//dump("\n\n >>>>>>>>>>> XHR ReadyState change \n" + url + "\n\n\n\n");
|
||||
if (this.readyState == 4) {
|
||||
document.getElementById('content').textContent +=
|
||||
JSON.stringify(JSON.parse(this.response), null, 4);
|
||||
|
||||
//dump("\n\n >>>>>>>>>>> GOT RESPONSE: \n" + this.response + "\n\n\n\n");
|
||||
var response = JSON.parse(this.response);
|
||||
|
||||
for (type in response) {
|
||||
for (scheme in response[type]) {
|
||||
for (policy in response[type][scheme]) {
|
||||
var expectedResult = expectedResults[type] === undefined ?
|
||||
expectedResults['default'][scheme][policy] :
|
||||
expectedResults[type][scheme][policy];
|
||||
|
||||
is(response[type][scheme][policy], expectedResult,
|
||||
type + ' ' + scheme + ' ' + policy);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
}
|
||||
|
||||
// BEGIN
|
||||
// Currently triggers assertions on e10s due to bug 820466. If you try to run
|
||||
// this on e10s, you'll get some ssl-related assertions and should add this line:
|
||||
// SimpleTest.expectAssertions(0,15);
|
||||
// But this test is disabled on e10s for unexpected failures. See bug 1100362.
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
SpecialPowers.pushPrefEnv({
|
||||
'set': [['security.mixed_content.block_active_content', false],
|
||||
['security.mixed_content.block_display_content', false],
|
||||
['browser.send_pings', true],
|
||||
['browser.send_pings.max_per_link', 1],
|
||||
['browser.send_pings.require_same_host', false]]
|
||||
},
|
||||
function() {
|
||||
var testContainer = document.getElementById('test');
|
||||
|
||||
testIframeUrls.forEach(function(url) {
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.setAttribute('class', 'test');
|
||||
iframe.src = url;
|
||||
testContainer.appendChild(iframe);
|
||||
});
|
||||
|
||||
var numFrames = testIframeUrls.length;
|
||||
var numFramesReady = 0;
|
||||
|
||||
window.addEventListener('message', function(event) {
|
||||
++numFramesReady;
|
||||
if (numFramesReady >= numFrames) {
|
||||
runit();
|
||||
}
|
||||
}, false);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
Загрузка…
Ссылка в новой задаче