import time # TODO(https://crbug.com/406819294): Simplify relative import for util. import importlib util = importlib.import_module("speculation-rules.prefetch.resources.util") def main(request, response): response.headers.set("Cache-Control", "no-store") uuid = request.GET[b"uuid"] wait_for_prefetch_start_uuid = None if b"wait_for_prefetch_uuid" in request.GET: wait_for_prefetch_start_uuid = request.GET[b"wait_for_prefetch_uuid"] prefetch = request.headers.get( "Sec-Purpose", b"").decode("utf-8").startswith("prefetch") if b"unblock" in request.GET: request.server.stash.put(uuid, 0) return '' if b"wait_for_prefetch" in request.GET: if wait_for_prefetch_start_uuid is None: return '' wait_for_prefetch = None while wait_for_prefetch is None: time.sleep(0.1) wait_for_prefetch = request.server.stash.take(wait_for_prefetch_start_uuid) return '' if b"nvs_header" in request.GET: nvs_header = request.GET[b"nvs_header"] response.headers.set("No-Vary-Search", nvs_header) if prefetch: if wait_for_prefetch_start_uuid is not None: request.server.stash.put(wait_for_prefetch_start_uuid, 0) nvswait = None while nvswait is None: time.sleep(0.1) nvswait = request.server.stash.take(uuid) return util.get_executor_html(request, '')