Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/referrer-policy/generic/subresource/subresource.py

Issue 2697453005: Import wpt@758b3b4cfa805067f36121333ba031e583d3a62c (Closed)
Patch Set: Add -expected.txt files. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/external/wpt/referrer-policy/generic/subresource/subresource.py
diff --git a/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/generic/subresource/subresource.py b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/generic/subresource/subresource.py
new file mode 100644
index 0000000000000000000000000000000000000000..7571b32d0fa758919790dbb2f0abc9a2925e4b75
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/referrer-policy/generic/subresource/subresource.py
@@ -0,0 +1,94 @@
+import os, sys, json, urlparse, urllib
+
+def get_template(template_basename):
+ script_directory = os.path.dirname(os.path.abspath(__file__))
+ template_directory = os.path.abspath(os.path.join(script_directory,
+ "..",
+ "template"))
+ template_filename = os.path.join(template_directory, template_basename);
+
+ with open(template_filename, "r") as f:
+ return f.read()
+
+# TODO(kristijanburnik): subdomain_prefix is a hardcoded value aligned with
+# referrer-policy-test-case.js. The prefix should be configured in one place.
+def get_swapped_origin_netloc(netloc, subdomain_prefix = "www1."):
+ if netloc.startswith(subdomain_prefix):
+ return netloc[len(subdomain_prefix):]
+ else:
+ return subdomain_prefix + netloc
+
+def create_redirect_url(request, cross_origin = False):
+ parsed = urlparse.urlsplit(request.url)
+ destination_netloc = parsed.netloc
+ if cross_origin:
+ destination_netloc = get_swapped_origin_netloc(parsed.netloc)
+
+ destination_url = urlparse.urlunsplit(urlparse.SplitResult(
+ scheme = parsed.scheme,
+ netloc = destination_netloc,
+ path = parsed.path,
+ query = None,
+ fragment = None))
+
+ return destination_url
+
+
+def redirect(url, response):
+ response.add_required_headers = False
+ response.writer.write_status(301)
+ response.writer.write_header("access-control-allow-origin", "*")
+ response.writer.write_header("location", url)
+ response.writer.end_headers()
+ response.writer.write("")
+
+
+def preprocess_redirection(request, response):
+ if "redirection" not in request.GET:
+ return False
+
+ redirection = request.GET["redirection"]
+
+ if redirection == "no-redirect":
+ return False
+ elif redirection == "keep-origin-redirect":
+ redirect_url = create_redirect_url(request, cross_origin = False)
+ elif redirection == "swap-origin-redirect":
+ redirect_url = create_redirect_url(request, cross_origin = True)
+ else:
+ raise ValueError("Invalid redirection type '%s'" % redirection)
+
+ redirect(redirect_url, response)
+ return True
+
+
+def __noop(request, response):
+ return ""
+
+
+def respond(request,
+ response,
+ status_code = 200,
+ content_type = "text/html",
+ payload_generator = __noop,
+ cache_control = "no-cache; must-revalidate",
+ access_control_allow_origin = "*"):
+ if preprocess_redirection(request, response):
+ return
+
+ response.add_required_headers = False
+ response.writer.write_status(status_code)
+
+ if access_control_allow_origin != None:
+ response.writer.write_header("access-control-allow-origin",
+ access_control_allow_origin)
+ response.writer.write_header("content-type", content_type)
+ response.writer.write_header("cache-control", cache_control)
+ response.writer.end_headers()
+
+ server_data = {"headers": json.dumps(request.headers, indent = 4)}
+
+ payload = payload_generator(server_data)
+ response.writer.write(payload)
+
+

Powered by Google App Engine
This is Rietveld 408576698