summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/service-workers/service-worker/appcache-ordering-main.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/service-workers/service-worker/appcache-ordering-main.https.html')
-rw-r--r--testing/web-platform/tests/service-workers/service-worker/appcache-ordering-main.https.html91
1 files changed, 91 insertions, 0 deletions
diff --git a/testing/web-platform/tests/service-workers/service-worker/appcache-ordering-main.https.html b/testing/web-platform/tests/service-workers/service-worker/appcache-ordering-main.https.html
new file mode 100644
index 000000000..609d67e45
--- /dev/null
+++ b/testing/web-platform/tests/service-workers/service-worker/appcache-ordering-main.https.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<body>
+<script>
+
+var INSTALL_APPCACHE_URL = "resources/appcache-ordering.install.html";
+var IS_APPCACHED_URL = "resources/appcache-ordering.is-appcached.html";
+var SERVICE_WORKER_SCOPE = "resources/appcache-ordering";
+var SERVICE_WORKER_SCRIPT = "resources/empty-worker.js";
+
+var resolve_install_appcache = undefined;
+var reject_install_appcache = undefined;
+
+var frames = [];
+
+// Called by the INSTALL_APPCACHE_URL child frame.
+function notify_appcache_installed(success) {
+ if (success)
+ resolve_install_appcache();
+ else
+ reject_install_appcache();
+}
+
+function install_appcache() {
+ return new Promise(function(resolve, reject) {
+ var frame = document.createElement('iframe');
+ frames.push(frame);
+ frame.src = INSTALL_APPCACHE_URL;
+ document.body.appendChild(frame);
+ resolve_install_appcache = function() {
+ document.body.removeChild(frame);
+ resolve();
+ };
+ reject_install_appcache = function() {
+ document.body.removeChild(frame);
+ reject();
+ };
+ });
+}
+
+var resolve_is_appcached = undefined;
+
+// Called by the IS_APPCACHED_URL child frame.
+function notify_is_appcached(is) {
+ resolve_is_appcached(is);
+}
+
+function is_appcached() {
+ return new Promise(function(resolve) {
+ var frame = document.createElement('iframe');
+ frames.push(frame);
+ frame.src = IS_APPCACHED_URL;
+ document.body.appendChild(frame);
+ resolve_is_appcached = function(is) {
+ document.body.removeChild(frame);
+ resolve(is);
+ };
+ });
+}
+
+async_test(function(t) {
+ service_worker_unregister(t, SERVICE_WORKER_SCOPE)
+ .then(function() {
+ return install_appcache();
+ })
+ .then(function() {
+ return is_appcached();
+ })
+ .then(function(result) {
+ assert_true(result, 'appcache should initially be utilized');
+ return service_worker_unregister_and_register(
+ t, SERVICE_WORKER_SCRIPT, SERVICE_WORKER_SCOPE);
+ })
+ .then(function(r) {
+ return wait_for_state(t, r.installing, 'activated');
+ })
+ .then(function() {
+ return is_appcached();
+ })
+ .then(function(result) {
+ assert_false(result, 'but serviceworkers should take priority');
+ frames.forEach(function(f) { f.remove(); });
+ service_worker_unregister_and_done(t, SERVICE_WORKER_SCOPE);
+ })
+ .catch(unreached_rejection(t));
+ }, 'serviceworkers take priority over appcaches');
+
+</script>
+</body>