blob: 479f6778fa62968ad1054d641b58a5572e875fb7 [file] [log] [blame]
<!DOCTYPE html>
<title>FontFaceSet.ready attribute</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<div style="font-family: ahem">A</div>
<script>
promise_test(function(t) {
assert_equals(document.fonts.ready, document.fonts.ready,
'FontFaceSet.ready should return the same promise');
var face = new FontFace('test', 'url(../../resources/Ahem.ttf)');
return document.fonts.ready
.then(function(fonts) {
assert_equals(fonts, document.fonts,
'FontFaceSet.ready should be resolved with the FontFaceSet');
var oldReady = document.fonts.ready;
document.fonts.add(face);
assert_equals(document.fonts.ready, oldReady,
'FontFaceSet.ready should not be replaced when FontFace added to it is not loading');
assert_equals(document.fonts.status, 'loaded',
'FontFaceSet.status after adding unloaded FontFace');
face.load();
var newReady = document.fonts.ready;
assert_not_equals(newReady, oldReady,
'FontFaceSet.ready should be replaced when a FontFace in it started loading');
assert_equals(document.fonts.status, 'loading',
'FontFaceSet.status after calling load() on a FontFace in it');
return newReady;
}).then(function(fonts) {
assert_equals(face.status, 'loaded',
'FontFaceSet.ready should be resolved after all fonts have been loaded');
assert_equals(document.fonts.status, 'loaded',
'FontFaceSet.status after FontFaceSet.ready is resolved');
});
}, 'FontFaceSet.ready attribute');
promise_test(function(t) {
var face = new FontFace('ahem', 'url(../../resources/Ahem.ttf)');
return document.fonts.ready
.then(function(fonts) {
document.fonts.add(face);
return document.fonts.ready;
}).then(function(fonts) {
assert_equals(face.status, 'loaded');
});
}, 'FontFaceSet.ready should be resolved after layout operations which may cause font loads.');
</script>