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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 import os, sys, json, urlparse, urllib
2
3 def get_template(template_basename):
4 script_directory = os.path.dirname(os.path.abspath(__file__))
5 template_directory = os.path.abspath(os.path.join(script_directory,
6 "..",
7 "template"))
8 template_filename = os.path.join(template_directory, template_basename);
9
10 with open(template_filename, "r") as f:
11 return f.read()
12
13 # TODO(kristijanburnik): subdomain_prefix is a hardcoded value aligned with
14 # referrer-policy-test-case.js. The prefix should be configured in one place.
15 def get_swapped_origin_netloc(netloc, subdomain_prefix = "www1."):
16 if netloc.startswith(subdomain_prefix):
17 return netloc[len(subdomain_prefix):]
18 else:
19 return subdomain_prefix + netloc
20
21 def create_redirect_url(request, cross_origin = False):
22 parsed = urlparse.urlsplit(request.url)
23 destination_netloc = parsed.netloc
24 if cross_origin:
25 destination_netloc = get_swapped_origin_netloc(parsed.netloc)
26
27 destination_url = urlparse.urlunsplit(urlparse.SplitResult(
28 scheme = parsed.scheme,
29 netloc = destination_netloc,
30 path = parsed.path,
31 query = None,
32 fragment = None))
33
34 return destination_url
35
36
37 def redirect(url, response):
38 response.add_required_headers = False
39 response.writer.write_status(301)
40 response.writer.write_header("access-control-allow-origin", "*")
41 response.writer.write_header("location", url)
42 response.writer.end_headers()
43 response.writer.write("")
44
45
46 def preprocess_redirection(request, response):
47 if "redirection" not in request.GET:
48 return False
49
50 redirection = request.GET["redirection"]
51
52 if redirection == "no-redirect":
53 return False
54 elif redirection == "keep-origin-redirect":
55 redirect_url = create_redirect_url(request, cross_origin = False)
56 elif redirection == "swap-origin-redirect":
57 redirect_url = create_redirect_url(request, cross_origin = True)
58 else:
59 raise ValueError("Invalid redirection type '%s'" % redirection)
60
61 redirect(redirect_url, response)
62 return True
63
64
65 def __noop(request, response):
66 return ""
67
68
69 def respond(request,
70 response,
71 status_code = 200,
72 content_type = "text/html",
73 payload_generator = __noop,
74 cache_control = "no-cache; must-revalidate",
75 access_control_allow_origin = "*"):
76 if preprocess_redirection(request, response):
77 return
78
79 response.add_required_headers = False
80 response.writer.write_status(status_code)
81
82 if access_control_allow_origin != None:
83 response.writer.write_header("access-control-allow-origin",
84 access_control_allow_origin)
85 response.writer.write_header("content-type", content_type)
86 response.writer.write_header("cache-control", cache_control)
87 response.writer.end_headers()
88
89 server_data = {"headers": json.dumps(request.headers, indent = 4)}
90
91 payload = payload_generator(server_data)
92 response.writer.write(payload)
93
94
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698