Skip to content

Instantly share code, notes, and snippets.

@jdm
Last active May 12, 2016 03:07
Show Gist options
  • Select an option

  • Save jdm/5da497f6da4ac3d12bf824675d2f458f to your computer and use it in GitHub Desktop.

Select an option

Save jdm/5da497f6da4ac3d12bf824675d2f458f to your computer and use it in GitHub Desktop.
referrer-policy test harness changes to avoid postMessage
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