Last active
May 12, 2016 03:07
-
-
Save jdm/5da497f6da4ac3d12bf824675d2f458f to your computer and use it in GitHub Desktop.
referrer-policy test harness changes to avoid postMessage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/common.js b/tests/wpt/web-platform-tests/referrer-policy/generic/common.js | |
| index 4920318..2005cb7 100644 | |
| --- a/tests/wpt/web-platform-tests/referrer-policy/generic/common.js | |
| +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/common.js | |
| @@ -100,15 +100,28 @@ function wrapResult(url, server_data) { | |
| } | |
| function queryIframe(url, callback, referrer_policy) { | |
| - var iframe = appendIframeToBody(url, referrer_policy); | |
| - var listener = function(event) { | |
| - if (event.source != iframe.contentWindow) | |
| - return; | |
| - | |
| - callback(event.data, url); | |
| - window.removeEventListener("message", listener); | |
| + var x = document.createElement('script'); | |
| + x.src = '/common/utils.js'; | |
| + x.onerror = function() { console.log('whoops') }; | |
| + x.onload = function() { doQuery() }; | |
| + document.getElementsByTagName("head")[0].appendChild(x); | |
| + | |
| + function doQuery() { | |
| + var id = token(); | |
| + var iframe = appendIframeToBody(url + "&id=" + id, referrer_policy); | |
| + iframe.addEventListener("load", function listener() { | |
| + var xhr = new XMLHttpRequest(); | |
| + xhr.open('GET', '/referrer-policy/generic/subresource/stash.py?id=' + id, true); | |
| + xhr.onreadystatechange = function(e) { | |
| + if (this.readyState == 4 && this.status == 200) { | |
| + var server_data = JSON.parse(this.responseText); | |
| + callback(wrapResult(url, server_data), url); | |
| + } | |
| + }; | |
| + xhr.send(); | |
| + iframe.removeEventListener("load", listener); | |
| + }); | |
| } | |
| - window.addEventListener("message", listener); | |
| } | |
| function queryImage(url, callback, referrer_policy) { | |
| diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/subresource/stash.py b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource/stash.py | |
| new file mode 100644 | |
| index 0000000..0fecca1 | |
| --- /dev/null | |
| +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/subresource/stash.py | |
| @@ -0,0 +1,6 @@ | |
| +def main(request, response): | |
| + print request.GET['id'] | |
| + if request.method == 'POST': | |
| + request.server.stash.put(request.GET["id"], request.body) | |
| + return '' | |
| + return request.server.stash.take(request.GET["id"]) | |
| diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/template/document.html.template b/tests/wpt/web-platform-tests/referrer-policy/generic/template/document.html.template | |
| index 141711c..f06fee1 100644 | |
| --- a/tests/wpt/web-platform-tests/referrer-policy/generic/template/document.html.template | |
| +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/template/document.html.template | |
| @@ -5,12 +5,26 @@ | |
| </head> | |
| <body> | |
| <script> | |
| +function getQueryVariable(variable) | |
| +{ | |
| + var query = window.location.search.substring(1); | |
| + var vars = query.split("&"); | |
| + for (var i=0;i<vars.length;i++) { | |
| + var pair = vars[i].split("="); | |
| + if(pair[0] == variable){return pair[1];} | |
| + } | |
| + return(false); | |
| +} | |
| + | |
| +document.referrer = "ffff"; | |
| var result = { | |
| location: document.location.toString(), | |
| referrer: document.referrer.length > 0 ? document.referrer : undefined, | |
| headers: %(headers)s | |
| }; | |
| - parent.postMessage(result, "*"); | |
| + var xhr = new XMLHttpRequest(); | |
| + xhr.open('POST', 'stash.py?id=' + getQueryVariable("id"), true); | |
| + xhr.send(JSON.stringify(result)); | |
| </script> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment