| <head> |
| <style> |
| @font-face { |
| font-family: 'webfont'; |
| src: url(http://localhost:8000/css/resources/webfont-request.php?mode=getFont&filename=webfontRequestCount.txt) format('truetype'); |
| } |
| </style> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| var filename = 'filename=webfontRequestCount.txt'; |
| var xhr; |
| |
| function startTest() { |
| // Resets request count before starting the test. |
| xhr = new XMLHttpRequest; |
| xhr.onerror = function() { |
| document.getElementById('result').innerText = 'FAIL: Network error.'; |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| }; |
| xhr.onreadystatechange = function() { |
| if (xhr.readyState == xhr.DONE) |
| forceStyleSelectorRecreation(); |
| }; |
| xhr.open('GET', '/resources/reset-temp-file.php?' + filename, true); |
| xhr.send(); |
| } |
| |
| function forceStyleSelectorRecreation() { |
| document.head.appendChild(document.createElement("style")); |
| // Pauses for a moment to see whether font re-fetching occurs. |
| setTimeout(getRequestCount, 100); |
| } |
| |
| function getRequestCount() { |
| xhr.onreadystatechange = function() { |
| if (xhr.readyState == xhr.DONE) |
| checkRequestCount(); |
| }; |
| xhr.open('GET', 'http://localhost:8000/css/resources/webfont-request.php?mode=getRequestCount&' + filename, true); |
| xhr.send(); |
| } |
| |
| function checkRequestCount() { |
| var numRequest = xhr.responseText; |
| var result = document.getElementById('result'); |
| result.innerHTML = 'Number of requests after recalculation: ' + numRequest + '<br />'; |
| if (numRequest == '0') |
| result.innerHTML += 'SUCCESS'; |
| else |
| result.innerHTML += 'FAIL'; |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| }; |
| </script> |
| </head> |
| <body onload="startTest()"> |
| <p>This test ensures that webfonts are not re-fetched after style recalculation.</p> |
| <div style="font-family: webfont;">Text</div> |
| <div id="result"></div> |
| <script> |
| document.body.offsetTop; |
| </script> |
| </body> |