| <!DOCTYPE html> |
| <meta charset="utf-8"> |
| <title>Tests Stale While Revalidate works for css</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/common/utils.js"></script> |
| <body> |
| <script> |
| |
| var request_token = token(); |
| let link_src = "./resources/stale-css.py?token=" + request_token; |
| |
| let loadLink = async() => { |
| let link = document.createElement("link"); |
| link.rel = "stylesheet"; |
| link.type = "text/css"; |
| link.href = "resources/stale-css.py?token=" + request_token; |
| let loaded = new Promise(r => link.onload = r); |
| document.body.appendChild(link); |
| await loaded; |
| return window |
| .getComputedStyle(document.body) |
| .getPropertyValue('background-color'); |
| }; |
| |
| promise_test(async t => { |
| await new Promise(r => window.onload = r); |
| |
| let bgColor1 = await loadLink(); |
| assert_equals(bgColor1, "rgb(0, 128, 0)", "(initial version loaded)"); |
| |
| let bgColor2 = await loadLink(); |
| assert_equals(bgColor2, "rgb(0, 128, 0)", "(stale version loaded)"); |
| |
| // Query the server again and again. At some point it must have received the |
| // revalidation request. We poll, because we don't know when the revalidation |
| // will occur. |
| while(true) { |
| await new Promise(r => step_timeout(r, 25)); |
| let response = await fetch(link_src + "&query"); |
| let count = response.headers.get("Count"); |
| if (count == '2') |
| break; |
| } |
| |
| let bgColor3 = await loadLink(); |
| assert_equals(bgColor3, "rgb(255, 0, 0)", "(revalidated version loaded)"); |
| }, 'Cache returns stale resource'); |
| |
| </script> |
| </body> |