| Index: third_party/WebKit/LayoutTests/external/wpt/fetch/api/resources/redirect.py
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/resources/redirect.py b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/resources/redirect.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5184be1f611f3313bb65648ef21118a5588794ae
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/resources/redirect.py
|
| @@ -0,0 +1,60 @@
|
| +from urllib import urlencode
|
| +from urlparse import urlparse
|
| +
|
| +def main(request, response):
|
| + stashed_data = {'count': 0, 'preflight': "0"}
|
| + status = 302
|
| + headers = [("Content-Type", "text/plain"),
|
| + ("Cache-Control", "no-cache"),
|
| + ("Pragma", "no-cache"),
|
| + ("Access-Control-Allow-Origin", "*")]
|
| + token = None
|
| +
|
| + if "token" in request.GET:
|
| + token = request.GET.first("token")
|
| + data = request.server.stash.take(token)
|
| + if data:
|
| + stashed_data = data
|
| +
|
| + if request.method == "OPTIONS":
|
| + if "allow_headers" in request.GET:
|
| + headers.append(("Access-Control-Allow-Headers", request.GET['allow_headers']))
|
| + stashed_data['preflight'] = "1"
|
| + #Preflight is not redirected: return 200
|
| + if not "redirect_preflight" in request.GET:
|
| + if token:
|
| + request.server.stash.put(request.GET.first("token"), stashed_data)
|
| + return 200, headers, ""
|
| +
|
| + if "redirect_status" in request.GET:
|
| + status = int(request.GET['redirect_status'])
|
| +
|
| + stashed_data['count'] += 1
|
| +
|
| + if "location" in request.GET:
|
| + url = request.GET['location']
|
| + scheme = urlparse(url).scheme
|
| + if scheme == "" or scheme == "http" or scheme == "https":
|
| + url += "&" if '?' in url else "?"
|
| + #keep url parameters in location
|
| + url_parameters = {}
|
| + for item in request.GET.items():
|
| + url_parameters[item[0]] = item[1][0]
|
| + url += urlencode(url_parameters)
|
| + #make sure location changes during redirection loop
|
| + url += "&count=" + str(stashed_data['count'])
|
| + headers.append(("Location", url))
|
| +
|
| + if "redirect_referrerpolicy" in request.GET:
|
| + headers.append(("Referrer-Policy", request.GET['redirect_referrerpolicy']))
|
| +
|
| + if token:
|
| + request.server.stash.put(request.GET.first("token"), stashed_data)
|
| + if "max_count" in request.GET:
|
| + max_count = int(request.GET['max_count'])
|
| + #stop redirecting and return count
|
| + if stashed_data['count'] > max_count:
|
| + # -1 because the last is not a redirection
|
| + return str(stashed_data['count'] - 1)
|
| +
|
| + return status, headers, ""
|
|
|