| Index: third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/fetch-access-control.py
 | 
| diff --git a/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/fetch-access-control.py b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/fetch-access-control.py
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..862718ad03f7601209a2bb45259202485a58010c
 | 
| --- /dev/null
 | 
| +++ b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/resources/fetch-access-control.py
 | 
| @@ -0,0 +1,69 @@
 | 
| +import base64
 | 
| +import json
 | 
| +
 | 
| +def main(request, response):
 | 
| +    headers = []
 | 
| +    headers.append(('X-ServiceWorker-ServerHeader', 'SetInTheServer'))
 | 
| +
 | 
| +    if "ACAOrigin" in request.GET:
 | 
| +        for item in request.GET["ACAOrigin"].split(","):
 | 
| +            headers.append(("Access-Control-Allow-Origin", item))
 | 
| +
 | 
| +    for suffix in ["Headers", "Methods", "Credentials"]:
 | 
| +        query = "ACA%s" % suffix
 | 
| +        header = "Access-Control-Allow-%s" % suffix
 | 
| +        if query in request.GET:
 | 
| +            headers.append((header, request.GET[query]))
 | 
| +
 | 
| +    if "ACEHeaders" in request.GET:
 | 
| +        headers.append(("Access-Control-Expose-Headers", request.GET[query]))
 | 
| +
 | 
| +    if ("Auth" in request.GET and not request.auth.username) or "AuthFail" in request.GET:
 | 
| +        status = 401
 | 
| +        headers.append(('WWW-Authenticate', 'Basic realm="Restricted"'))
 | 
| +        body = 'Authentication canceled'
 | 
| +        return status, headers, body
 | 
| +
 | 
| +    if "PNGIMAGE" in request.GET:
 | 
| +        headers.append(("Content-Type", "image/png"))
 | 
| +        body = base64.decodestring("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B"
 | 
| +                                   "AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG"
 | 
| +                                   "jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=")
 | 
| +        return headers, body
 | 
| +
 | 
| +
 | 
| +    username = request.auth.username if request.auth.username else "undefined"
 | 
| +    password = request.auth.password if request.auth.username else "undefined"
 | 
| +    cookie = request.cookies['cookie'].value if 'cookie' in request.cookies else "undefined"
 | 
| +
 | 
| +    files = []
 | 
| +    for key, values in request.POST.iteritems():
 | 
| +        assert len(values) == 1
 | 
| +        value = values[0]
 | 
| +        if not hasattr(value, "file"):
 | 
| +            continue
 | 
| +        data = value.file.read()
 | 
| +        files.append({"key": key,
 | 
| +                      "name": value.file.name,
 | 
| +                      "type": value.type,
 | 
| +                      "error": 0, #TODO,
 | 
| +                      "size": len(data),
 | 
| +                      "content": data})
 | 
| +
 | 
| +    get_data = {key:request.GET[key] for key,value in request.GET.iteritems()}
 | 
| +    post_data = {key:request.POST[key] for key,value in request.POST.iteritems()
 | 
| +                 if not hasattr(request.POST[key], "file")}
 | 
| +    headers_data = {key:request.headers[key] for key,value in request.headers.iteritems()}
 | 
| +
 | 
| +    data = {"jsonpResult": "success",
 | 
| +            "method": request.method,
 | 
| +            "headers": headers_data,
 | 
| +            "body": request.body,
 | 
| +            "files": files,
 | 
| +            "GET": get_data,
 | 
| +            "POST": post_data,
 | 
| +            "username": username,
 | 
| +            "password": password,
 | 
| +            "cookie": cookie}
 | 
| +
 | 
| +    return headers, "report( %s )" % json.dumps(data)
 | 
| 
 |