| OLD | NEW | 
 | (Empty) | 
|   1 <!DOCTYPE html> |  | 
|   2 <title>Test for font-display @font-face descriptor</title> |  | 
|   3 <style> |  | 
|   4 .hidden { display: none; } |  | 
|   5 </style> |  | 
|   6 <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> |  | 
|   7 <table id="container"> |  | 
|   8  <tr> |  | 
|   9   <th>T[sec]</th> |  | 
|  10   <th>delay[sec]</th> |  | 
|  11   <th>auto</th> |  | 
|  12   <th>block</th> |  | 
|  13   <th>swap</th> |  | 
|  14   <th>fallback</th> |  | 
|  15   <th>optional</th> |  | 
|  16  </tr> |  | 
|  17 </table> |  | 
|  18 <script> |  | 
|  19 if (window.testRunner) |  | 
|  20     testRunner.waitUntilDone(); |  | 
|  21  |  | 
|  22 var fontDisplayValues = ['auto', 'block', 'swap', 'fallback', 'optional']; |  | 
|  23 var configs = [{time: 0, delay: 1000}, |  | 
|  24                {time: 1000, delay: 0}, |  | 
|  25                {time: 1000, delay: 500}, |  | 
|  26                {time: 1000, delay: 3000}, |  | 
|  27                {time: 5000, delay: 2000}, |  | 
|  28                {time: 5000, delay: 4000}, |  | 
|  29                {time: 5000, delay: 8000}]; |  | 
|  30  |  | 
|  31 function makeFontFaceDeclaration(family, config, display) { |  | 
|  32     var url = '/resources/Ahem.ttf'; |  | 
|  33     if (config.delay > 0) |  | 
|  34         url = 'slow-ahem-loading.cgi?delay=' + config.delay + '&t=' + config.tim
    e; |  | 
|  35     return '@font-face { font-family: ' + family + '; src: url(' + url + '); fon
    t-display: ' + display + '; }'; |  | 
|  36 } |  | 
|  37  |  | 
|  38  |  | 
|  39 var maxTime = Math.max.apply(null, configs.map((config) => config.time)); |  | 
|  40 var table = document.getElementById('container'); |  | 
|  41  |  | 
|  42 window.onload = function() { |  | 
|  43     for (var config, i = 0; config = configs[i]; i++) { |  | 
|  44         var tr = document.createElement('tr'); |  | 
|  45         tr.classList.add('hidden'); |  | 
|  46         var td1 = document.createElement('td'); |  | 
|  47         td1.textContent = config.time / 1000; |  | 
|  48         tr.appendChild(td1); |  | 
|  49         var td2 = document.createElement('td'); |  | 
|  50         td2.textContent = config.delay / 1000; |  | 
|  51         tr.appendChild(td2); |  | 
|  52  |  | 
|  53         for (var display, j = 0; display = fontDisplayValues[j]; j++) { |  | 
|  54             var family = [display, config.time, config.delay].join('-'); |  | 
|  55             var rule = makeFontFaceDeclaration(family, config, display); |  | 
|  56             document.styleSheets[0].insertRule(rule, 0); |  | 
|  57             var td = document.createElement('td'); |  | 
|  58             td.textContent = 'a'; |  | 
|  59             td.style.fontFamily = family + ', Arial'; |  | 
|  60             tr.appendChild(td); |  | 
|  61         } |  | 
|  62         table.appendChild(tr); |  | 
|  63         if (config.time == 0) { |  | 
|  64             setTimeout((function(tr){ |  | 
|  65                 tr.classList.remove('hidden'); |  | 
|  66                 if (window.testRunner) |  | 
|  67                     testRunner.notifyDone(); |  | 
|  68             }).bind(null, tr), maxTime); |  | 
|  69         } else { |  | 
|  70             setTimeout((function(tr){tr.classList.remove('hidden')}).bind(null, 
    tr), maxTime - config.time); |  | 
|  71         } |  | 
|  72     } |  | 
|  73 } |  | 
|  74  |  | 
|  75 </script> |  | 
| OLD | NEW |