104 lines
3.6 KiB
HTML
104 lines
3.6 KiB
HTML
<!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\")", {}));
|
|
fontFaceSet.add(document.fonts.keys().next().value);
|
|
shouldBe("fontFaceSet.size", "2");
|
|
iterator = fontFaceSet.keys();
|
|
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");
|
|
|
|
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> |