Index: third_party/WebKit/LayoutTests/http/tests/webfont/cache-aware-font-display.html |
diff --git a/third_party/WebKit/LayoutTests/http/tests/webfont/cache-aware-font-display.html b/third_party/WebKit/LayoutTests/http/tests/webfont/cache-aware-font-display.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5808a678ef2e4609d6130dd7992e2c30b3a7cfde |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/http/tests/webfont/cache-aware-font-display.html |
@@ -0,0 +1,86 @@ |
+<!DOCTYPE html> |
+<title>Test for font-display @font-face descriptor</title> |
+<style> |
+td > div { |
+ height: 1em; |
+ line-height: 1em; |
+} |
+</style> |
+<table id="container"> |
+ <tr> |
+ <th>Callback order</th> |
+ <th>auto</th> |
+ <th>block</th> |
+ <th>swap</th> |
+ <th>fallback</th> |
+ <th>optional</th> |
+ </tr> |
+</table> |
+<script> |
+if (window.testRunner) |
+ testRunner.waitUntilDone(); |
+ |
+const fontDisplayValues = ['auto', 'block', 'swap', 'fallback', 'optional']; |
+const configs = [[], |
+ ['short'], |
+ ['cacheMiss'], |
+ ['short', 'long'], |
+ ['short', 'cacheMiss'], |
+ ['cacheMiss', 'short'], |
+ ['short', 'long', 'cacheMiss'], |
+ ['short', 'cacheMiss', 'long'], |
+ ['cacheMiss', 'short', 'long']]; |
+const delayMs = 200; |
+const table = document.getElementById('container'); |
+ |
+window.onload = () => { |
+ for (let finish of [true, false]) { |
+ for (let callbackList1 of configs) { |
+ const callbackList = callbackList1.slice(); |
+ if (finish) |
+ callbackList.push('finish'); |
+ |
+ const tr = document.createElement('tr'); |
+ const td1 = document.createElement('td'); |
+ td1.textContent = callbackList.join(' > '); |
+ tr.appendChild(td1); |
+ |
+ const url = 'cachable-slow-ahem-loading.cgi' + |
+ '?delay=' + (finish ? delayMs : delayMs * 100) + |
+ '&x=' + callbackList.join('-'); |
+ const testObject = window.internals |
+ ? window.internals.cacheAwareFontDisplayTest(url) |
+ : undefined; |
+ |
+ for (let display of fontDisplayValues) { |
+ const family = 'A' + callbackList.join('-') + '-' + display; |
+ console.log(family); |
+ const rule = '@font-face { font-family: ' + family + '; src: url(' + url + '); font-display: ' + display + '; }'; |
+ document.styleSheets[0].insertRule(rule, 0); |
+ const td = document.createElement('td'); |
+ td.innerHTML = '<div>a</div>'; |
+ td.style.fontFamily = family + ', Arial'; |
+ tr.appendChild(td); |
+ } |
+ table.appendChild(tr); |
+ |
+ if (testObject) { |
+ setTimeout(() => { |
+ for (let callback of callbackList) { |
+ if (callback == 'short') |
+ testObject.fontLoadShortLimitCallback(); |
+ else if (callback == 'long') |
+ testObject.fontLoadLongLimitCallback(); |
+ else if (callback == 'cacheMiss') |
+ testObject.willReloadAfterDiskCacheMiss(); |
+ } |
+ }, delayMs / 2); |
+ } |
+ } |
+ } |
+ |
+ if (window.testRunner) |
+ setTimeout(() => { testRunner.notifyDone(); }, delayMs * 5); |
+}; |
+ |
+</script> |