diff --git a/html/dom/elements-metadata.js b/html/dom/elements-metadata.js
index 1b23a27a33053e..c463e2409ecba6 100644
--- a/html/dom/elements-metadata.js
+++ b/html/dom/elements-metadata.js
@@ -18,6 +18,13 @@ var metadataElements = {
defaultVal: "",
invalidVal: ""
},
+ scope: "string",
+ updateViaCache: {
+ type: "enum",
+ keywords: ["imports", "all", "none"],
+ defaultVal: "imports",
+ invalidVal: "imports"
+ },
media: "string",
nonce: "string",
integrity: "string",
diff --git a/service-workers/service-worker/registration-updateviacache.https.html b/service-workers/service-worker/registration-updateviacache.https.html
new file mode 100644
index 00000000000000..0df401efcc6786
--- /dev/null
+++ b/service-workers/service-worker/registration-updateviacache.https.html
@@ -0,0 +1,222 @@
+
+
Service Worker: Registration-updateViaCache
+
+
+
+
+
diff --git a/service-workers/service-worker/resources/update-max-aged-worker-imported-script.py b/service-workers/service-worker/resources/update-max-aged-worker-imported-script.py
new file mode 100644
index 00000000000000..3f7f88bafaac61
--- /dev/null
+++ b/service-workers/service-worker/resources/update-max-aged-worker-imported-script.py
@@ -0,0 +1,12 @@
+import time
+
+def main(request, response):
+ headers = [('Content-Type', 'application/javascript'),
+ ('Cache-Control', 'max-age=86400'),
+ ('Last-Modified', time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()))]
+
+ body = '''
+ const importTime = {time};
+ '''.format(time=time.time())
+
+ return headers, body
diff --git a/service-workers/service-worker/resources/update-max-aged-worker.py b/service-workers/service-worker/resources/update-max-aged-worker.py
new file mode 100644
index 00000000000000..0fc112d8b0f033
--- /dev/null
+++ b/service-workers/service-worker/resources/update-max-aged-worker.py
@@ -0,0 +1,28 @@
+import time
+import json
+
+def main(request, response):
+ headers = [('Content-Type', 'application/javascript'),
+ ('Cache-Control', 'max-age=86400'),
+ ('Last-Modified', time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()))]
+
+ test = request.GET['test']
+
+ body = '''
+ const mainTime = {time};
+ const testName = {test};
+ importScripts('update-max-aged-worker-imported-script.py');
+
+ addEventListener('message', event => {{
+ event.source.postMessage({{
+ mainTime,
+ importTime,
+ test: {test}
+ }});
+ }});
+ '''.format(
+ time=time.time(),
+ test=json.dumps(test)
+ )
+
+ return headers, body