blob: 0bfe6e02d96c7f787c3724cac51d0c5476a3000c [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<style id="styleElement">
@font-face {
font-family: "MyFont1";
src: url("../../resources/Ahem.ttf") format("truetype");
}
@font-face {
font-family: "MyFont2";
src: url("../../resources/Ahem.otf") format("opentype");
}
</style>
</head>
<body>
<div id="onLoadElement"></div>
<span id="testElement" style="font: 50px AppliedFont">l</span>
<script>
window.onload = function() {
document.getElementById("onLoadElement").innerText = "On Load Executed.";
}
var originalWidth = document.getElementById("testElement").offsetWidth;
shouldBe("document.fonts.size", "2");
var iterator = document.fonts.keys();
var object = iterator.next();
shouldBeFalse("object.done");
shouldBeEqualToString("object.value.family", "MyFont1");
object = iterator.next();
shouldBeFalse("object.done");
shouldBeEqualToString("object.value.family", "MyFont2");
object = iterator.next();
shouldBeTrue("object.done");
var fontFaceSet = new FontFaceSet([]);
fontFaceSet.add(new FontFace("MyFont2", "url(\"asdf\")", {}));
shouldThrow("fontFaceSet.add(document.fonts.keys().next().value)");
shouldBe("fontFaceSet.size", "1");
iterator = fontFaceSet.keys();
object = iterator.next();
shouldBeFalse("object.done");
shouldBeEqualToString("object.value.family", "MyFont2");
object = iterator.next();
shouldBeTrue("object.done");
iterator = undefined;
object = undefined;
self.jsTestIsAsync = true;
function startLoading() {
var appliedFont = undefined;
document.fonts.keys().next().value.load().then(function() {
return document.fonts.keys().next().value.loaded;
}, function() {
testFailed("Loading should succeed.");
finishJSTest();
}).then(function() {
document.fonts.keys().next().value.family = "AppliedFont";
shouldNotBe("document.getElementById(\"testElement\").offsetWidth", "originalWidth");
document.fonts.keys().next().value.family = "MyFont1";
shouldBe("document.getElementById(\"testElement\").offsetWidth", "originalWidth");
document.fonts.add(new FontFace("MyFont3", "url(\"../../resources/Ahem.otf\")", {}));
return document.fonts.load("MyFont3");
}, function() {
testFailed("The same promise should not fail and then succeed.");
finishJSTest();
}).then(function() {
testFailed("Should not be able to parse as a font: property.");
finishJSTest();
}, function() {
document.fonts.add(new FontFace("MyFont3", "url(\"../../resources/Ahem.ttf\")", {'variant': 'small-caps'}));
return document.fonts.load("50px MyFont3");
}).then(function(x) {
object = x;
shouldBe("object.length", "1");
shouldBeEqualToString("object[0].family", "MyFont3");
object = undefined;
appliedFont = new FontFace("AppliedFont", "url(\"../../resources/Ahem.otf\")", {});
document.fonts.add(appliedFont);
return appliedFont.loaded;
}, function() {
testFailed("Loading should succeed.");
finishJSTest();
}).then(function(x) {
shouldNotBe("document.getElementById(\"testElement\").offsetWidth", "originalWidth");
document.fonts.delete(appliedFont);
shouldBe("document.getElementById(\"testElement\").offsetWidth", "originalWidth");
finishJSTest();
}, function() {
testFailed("Loading should succeed.");
finishJSTest();
});
}
if (window.GCController)
window.GCController.collect();
startLoading();
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>