| <!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() { |
| 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'); |
| 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'); |
| service_worker_unregister_and_done(t, SERVICE_WORKER_SCOPE); |
| }) |
| .catch(unreached_rejection(t)); |
| }, 'serviceworkers take priority over appcaches'); |
| |
| </script> |
| </body> |