diff options
Diffstat (limited to 'testing/web-platform/tests/css/css-fonts/font-display/font-display.html')
-rw-r--r-- | testing/web-platform/tests/css/css-fonts/font-display/font-display.html | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-fonts/font-display/font-display.html b/testing/web-platform/tests/css/css-fonts/font-display/font-display.html new file mode 100644 index 0000000000..a2b62c0676 --- /dev/null +++ b/testing/web-platform/tests/css/css-fonts/font-display/font-display.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<title>Test for font-display @font-face descriptor</title> +<meta name="timeout" content="long"> +<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-display-desc"> +<link rel="match" href="font-display-ref.html"> +<link rel="preload" href="/fonts/Ahem.ttf?pipe=trickle(d0)" as="font" crossorigin> +<style> +.hidden { display: none; } +</style> +<p>Tests how text with a font that takes <i>delay</i> seconds to load look like after <i>T</i> seconds from load start.</p> +<table id="container"> + <tr> + <th>T[sec]</th> + <th>delay[sec]</th> + <th>block</th> + <th>swap</th> + <th>fallback</th> + <th>optional</th> + </tr> +</table> +<script> +var fontDisplayValues = ['block', 'swap', 'fallback', 'optional']; +var configs = [{time: 0, delay: 1000}, + {time: 1000, delay: 0}, + {time: 1000, delay: 500}, + {time: 1000, delay: 3000}, + {time: 5000, delay: 2000}, + {time: 5000, delay: 4000}, + {time: 5000, delay: 8000}]; + +function makeFontFaceDeclaration(family, config, display) { + url = '/fonts/Ahem.ttf?pipe=trickle(d' + config.delay / 1000 + ')'; + return '@font-face { font-family: ' + family + '; src: url("' + url + '"); font-display: ' + display + '; }'; +} + + +var maxTime = Math.max.apply(null, configs.map((config) => config.time)); +var table = document.getElementById('container'); + +window.onload = function() { + for (var config, i = 0; config = configs[i]; i++) { + var tr = document.createElement('tr'); + tr.classList.add('hidden'); + var td1 = document.createElement('td'); + td1.textContent = config.time / 1000; + tr.appendChild(td1); + var td2 = document.createElement('td'); + td2.textContent = config.delay / 1000; + tr.appendChild(td2); + + for (var display, j = 0; display = fontDisplayValues[j]; j++) { + var family = [display, config.time, config.delay].join('-'); + var rule = makeFontFaceDeclaration(family, config, display); + document.styleSheets[0].insertRule(rule, 0); + var td = document.createElement('td'); + td.textContent = 'a'; + td.style.fontFamily = family + ', Arial'; + tr.appendChild(td); + } + table.appendChild(tr); + if (config.time == 0) { + setTimeout((function(tr){ + tr.classList.remove('hidden'); + document.documentElement.classList.remove("reftest-wait"); + }).bind(null, tr), maxTime); + } else { + setTimeout((function(tr){tr.classList.remove('hidden')}).bind(null, tr), maxTime - config.time); + } + } +} + +</script> +</html> |