prefetch_nvs_hint.py (1346B)
1 import time 2 3 # TODO(https://crbug.com/406819294): Simplify relative import for util. 4 import importlib 5 util = importlib.import_module("speculation-rules.prefetch.resources.util") 6 7 def main(request, response): 8 response.headers.set("Cache-Control", "no-store") 9 uuid = request.GET[b"uuid"] 10 wait_for_prefetch_start_uuid = None 11 if b"wait_for_prefetch_uuid" in request.GET: 12 wait_for_prefetch_start_uuid = request.GET[b"wait_for_prefetch_uuid"] 13 prefetch = request.headers.get( 14 "Sec-Purpose", b"").decode("utf-8").startswith("prefetch") 15 if b"unblock" in request.GET: 16 request.server.stash.put(uuid, 0) 17 return '' 18 19 if b"wait_for_prefetch" in request.GET: 20 if wait_for_prefetch_start_uuid is None: 21 return '' 22 wait_for_prefetch = None 23 while wait_for_prefetch is None: 24 time.sleep(0.1) 25 wait_for_prefetch = request.server.stash.take(wait_for_prefetch_start_uuid) 26 return '' 27 28 if b"nvs_header" in request.GET: 29 nvs_header = request.GET[b"nvs_header"] 30 response.headers.set("No-Vary-Search", nvs_header) 31 32 if prefetch: 33 if wait_for_prefetch_start_uuid is not None: 34 request.server.stash.put(wait_for_prefetch_start_uuid, 0) 35 nvswait = None 36 while nvswait is None: 37 time.sleep(0.1) 38 nvswait = request.server.stash.take(uuid) 39 40 return util.get_executor_html(request, '')