summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/service-workers/service-worker/resources/update-worker-from-file.py
blob: ac0850f47622f3c6f16fc25424fc2c23a5a40c28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import os

from wptserve.utils import isomorphic_encode

def serve_js_from_file(request, response, filename):
  body = b''
  path = os.path.join(os.path.dirname(isomorphic_encode(__file__)), filename)
  with open(path, 'rb') as f:
    body = f.read()
  return (
    [
      (b'Cache-Control', b'no-cache, must-revalidate'),
      (b'Pragma', b'no-cache'),
      (b'Content-Type', b'application/javascript')
    ], body)

def main(request, response):
  key = request.GET[b"Key"]

  visited_count = request.server.stash.take(key)
  if visited_count is None:
    visited_count = 0

  # Keep how many times the test requested this resource.
  visited_count += 1
  request.server.stash.put(key, visited_count)

  # Serve a file based on how many times it's requested.
  if visited_count == 1:
    return serve_js_from_file(request, response, request.GET[b"First"])
  if visited_count == 2:
    return serve_js_from_file(request, response, request.GET[b"Second"])
  raise u"Unknown state"