| <!-- webkit-test-runner [ enableBackForwardCache=true ] --> |
| <head> |
| <script src="../../resources/js-test.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Tests that pages with workers can go into the page cache."); |
| jsTestIsAsync = true; |
| |
| let restoredFromPageCache = false; |
| |
| window.addEventListener("pageshow", function(event) { |
| debug("pageshow - " + (event.persisted ? "" : "not ") + "from page cache"); |
| if (event.persisted) { |
| testPassed("Page entered page cache"); |
| restoredFromPageCache = true; |
| } |
| }); |
| |
| window.addEventListener("pagehide", function(event) { |
| debug("pagehide - " + (event.persisted ? "" : "not ") + "entering page cache"); |
| if (!event.persisted) { |
| testFailed("Page failed to enter page cache"); |
| finishJSTest(); |
| } |
| }); |
| |
| let firstMessage = true; |
| let messageCountAfterResume = 0; |
| onload = () => { |
| worker = new Worker('resources/worker-setInterval.js'); |
| worker.postMessage(""); |
| |
| worker.onmessage = function(evt) { |
| if (firstMessage) { |
| firstMessage = false; |
| testPassed("Received message before restoring from page cache."); |
| window.location = "../history/resources/page-cache-helper.html"; |
| return; |
| } |
| if (restoredFromPageCache) { |
| messageCountAfterResume++; |
| if (messageCountAfterResume == 10) { |
| restoredFromPageCache = false; |
| testPassed("Received message after restoring from page cache."); |
| finishJSTest(); |
| } |
| } |
| }; |
| } |
| </script> |
| </body> |
| </html> |