summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/referrer-policy/generic/common.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/referrer-policy/generic/common.js')
-rw-r--r--testing/web-platform/tests/referrer-policy/generic/common.js212
1 files changed, 0 insertions, 212 deletions
diff --git a/testing/web-platform/tests/referrer-policy/generic/common.js b/testing/web-platform/tests/referrer-policy/generic/common.js
deleted file mode 100644
index 492031859..000000000
--- a/testing/web-platform/tests/referrer-policy/generic/common.js
+++ /dev/null
@@ -1,212 +0,0 @@
-// NOTE: This method only strips the fragment and is not in accordance to the
-// recommended draft specification:
-// https://w3c.github.io/webappsec/specs/referrer-policy/#null
-// TODO(kristijanburnik): Implement this helper as defined by spec once added
-// scenarios for URLs containing username/password/etc.
-function stripUrlForUseAsReferrer(url) {
- return url.replace(/#.*$/, "");
-}
-
-function parseUrlQueryString(queryString) {
- var queries = queryString.replace(/^\?/, "").split("&");
- var params = {};
-
- for (var i in queries) {
- var kvp = queries[i].split("=");
- params[kvp[0]] = kvp[1];
- }
-
- return params;
-};
-
-function appendIframeToBody(url, attributes) {
- var iframe = document.createElement("iframe");
- iframe.src = url;
- // Extend element with attributes. (E.g. "referrerPolicy" or "rel")
- if (attributes) {
- for (var attr in attributes) {
- iframe[attr] = attributes[attr];
- }
- }
- document.body.appendChild(iframe);
-
- return iframe;
-}
-
-function loadImage(src, callback, attributes) {
- var image = new Image();
- image.crossOrigin = "Anonymous";
- image.onload = function() {
- callback(image);
- }
- image.src = src;
- // Extend element with attributes. (E.g. "referrerPolicy" or "rel")
- if (attributes) {
- for (var attr in attributes) {
- image[attr] = attributes[attr];
- }
- }
- document.body.appendChild(image)
-}
-
-function decodeImageData(rgba) {
- var rgb = new Uint8ClampedArray(rgba.length);
-
- // RGBA -> RGB.
- var rgb_length = 0;
- for (var i = 0; i < rgba.length; ++i) {
- // Skip alpha component.
- if (i % 4 == 3)
- continue;
-
- // Zero is the string terminator.
- if (rgba[i] == 0)
- break;
-
- rgb[rgb_length++] = rgba[i];
- }
-
- // Remove trailing nulls from data.
- rgb = rgb.subarray(0, rgb_length);
- var string_data = (new TextDecoder("ascii")).decode(rgb);
-
- return JSON.parse(string_data);
-}
-
-function decodeImage(url, callback, referrer_policy) {
- loadImage(url, function(img) {
- var canvas = document.createElement("canvas");
- var context = canvas.getContext('2d');
- context.drawImage(img, 0, 0);
- var imgData = context.getImageData(0, 0, img.clientWidth, img.clientHeight);
- callback(decodeImageData(imgData.data))
- }, referrer_policy);
-}
-
-function normalizePort(targetPort) {
- var defaultPorts = [80, 443];
- var isDefaultPortForProtocol = (defaultPorts.indexOf(targetPort) >= 0);
-
- return (targetPort == "" || isDefaultPortForProtocol) ?
- "" : ":" + targetPort;
-}
-
-function wrapResult(url, server_data) {
- return {
- location: url,
- referrer: server_data.headers.referer,
- headers: server_data.headers
- }
-}
-
-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);
- }
- window.addEventListener("message", listener);
-}
-
-function queryImage(url, callback, referrer_policy) {
- decodeImage(url, function(server_data) {
- callback(wrapResult(url, server_data), url);
- }, referrer_policy)
-}
-
-function queryXhr(url, callback) {
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url, 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();
-}
-
-function queryWorker(url, callback) {
- var worker = new Worker(url);
- worker.onmessage = function(event) {
- var server_data = event.data;
- callback(wrapResult(url, server_data), url);
- };
-}
-
-function queryFetch(url, callback) {
- fetch(url).then(function(response) {
- response.json().then(function(server_data) {
- callback(wrapResult(url, server_data), url);
- });
- }
- );
-}
-
-function queryNavigable(element, url, callback, attributes) {
- var navigable = element
- navigable.href = url;
- navigable.target = "helper-iframe";
-
- var helperIframe = document.createElement("iframe")
- helperIframe.name = "helper-iframe"
- document.body.appendChild(helperIframe)
-
- // Extend element with attributes. (E.g. "referrer_policy" or "rel")
- if (attributes) {
- for (var attr in attributes) {
- navigable[attr] = attributes[attr];
- }
- }
-
- var listener = function(event) {
- if (event.source != helperIframe.contentWindow)
- return;
-
- callback(event.data, url);
- window.removeEventListener("message", listener);
- }
- window.addEventListener("message", listener);
-
- navigable.click();
-}
-
-function queryLink(url, callback, referrer_policy) {
- var a = document.createElement("a");
- a.innerHTML = "Link to subresource";
- document.body.appendChild(a);
- queryNavigable(a, url, callback, referrer_policy)
-}
-
-function queryAreaLink(url, callback, referrer_policy) {
- var area = document.createElement("area");
- // TODO(kristijanburnik): Append to map and add image.
- document.body.appendChild(area);
- queryNavigable(area, url, callback, referrer_policy)
-}
-
-function queryScript(url, callback) {
- var script = document.createElement("script");
- script.src = url;
-
- var listener = function(event) {
- var server_data = event.data;
- callback(wrapResult(url, server_data), url);
- window.removeEventListener("message", listener);
- }
- window.addEventListener("message", listener);
-
- document.body.appendChild(script);
-}
-
- // SanityChecker does nothing in release mode.
-function SanityChecker() {}
-SanityChecker.prototype.checkScenario = function() {};
-SanityChecker.prototype.checkSubresourceResult = function() {};
-
-// TODO(kristijanburnik): document.origin is supported since Chrome 41,
-// other browsers still don't support it. Remove once they do.
-document.origin = document.origin || (location.protocol + "//" + location.host);