Index: LayoutTests/http/tests/serviceworker/appcache-ordering-main.html |
diff --git a/LayoutTests/http/tests/serviceworker/appcache-ordering-main.html b/LayoutTests/http/tests/serviceworker/appcache-ordering-main.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..968af5067507280acf6a9df2f7e3973922baff9d |
--- /dev/null |
+++ b/LayoutTests/http/tests/serviceworker/appcache-ordering-main.html |
@@ -0,0 +1,80 @@ |
+<!DOCTYPE html> |
+<script src="../resources/testharness.js"></script> |
+<script src="../resources/testharnessreport.js"></script> |
+<script src="resources/test-helpers.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; |
+ |
+// 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'); |
+ frame.src = INSTALL_APPCACHE_URL; |
+ document.body.appendChild(frame); |
+ resolve_install_appcache = function() { |
+ unload_iframe(frame); |
+ resolve(); |
+ }; |
+ reject_install_appcache = function() { |
+ unload_iframe(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'); |
+ frame.src = IS_APPCACHED_URL; |
+ document.body.appendChild(frame); |
+ resolve_is_appcached = function(is) { |
+ unload_iframe(frame); |
+ resolve(is); |
+ }; |
+ }); |
+} |
+ |
+async_test(function(t) { |
+ 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() { |
+ return is_appcached(); |
+ }) |
+ .then(function(result) { |
+ assert_false(result, 'but serviceworkers should take priority'); |
+ service_worker_unregister_and_done(t, SERVICE_WORKER_SCOPE); |
+ }) |
+ .catch(unreached_rejection(t)); |
+ }, 'serviceworkers take priority over appcaches'); |
+ |
+</script> |
+</body> |