Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add IDL test for the CSS Font Loading spec (#10049)
- Loading branch information
Showing
2 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<!DOCTYPE html> | ||
<title>Font Loading API IDL tests</title> | ||
<link rel="help" href="https://drafts.csswg.org/css-font-loading/#fontfacesetloadevent"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="/resources/WebIDLParser.js"></script> | ||
<script src="/resources/idlharness.js"></script> | ||
<script> | ||
"use strict"; | ||
|
||
function doTest([dom, cssfontloading]) { | ||
const idl_array = new IdlArray(); | ||
idl_array.add_untested_idls(dom); | ||
idl_array.add_untested_idls("[Exposed=Worker] interface WorkerGlobalScope : EventTarget { };"); | ||
idl_array.add_objects({Document: ["document"]}); | ||
idl_array.add_idls(cssfontloading); | ||
idl_array.test(); | ||
} | ||
|
||
function fetchText(url) { | ||
return fetch(url).then((response) => response.text()); | ||
} | ||
|
||
promise_test(() => { | ||
return Promise.all([ | ||
"/interfaces/dom.idl", | ||
"/interfaces/css-font-loading.idl", | ||
].map(fetchText)).then(doTest); | ||
}, "Test IDL implementation of CSS Font Loading"); | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
typedef (ArrayBuffer or ArrayBufferView) BinaryData; | ||
|
||
dictionary FontFaceDescriptors { | ||
CSSOMString style = "normal"; | ||
CSSOMString weight = "normal"; | ||
CSSOMString stretch = "normal"; | ||
CSSOMString unicodeRange = "U+0-10FFFF"; | ||
CSSOMString variant = "normal"; | ||
CSSOMString featureSettings = "normal"; | ||
CSSOMString variationSettings = "normal"; | ||
CSSOMString display = "auto"; | ||
}; | ||
|
||
enum FontFaceLoadStatus { "unloaded", "loading", "loaded", "error" }; | ||
|
||
[Constructor(CSSOMString family, (CSSOMString or BinaryData) source, | ||
optional FontFaceDescriptors descriptors), | ||
Exposed=(Window,Worker)] | ||
interface FontFace { | ||
attribute CSSOMString family; | ||
attribute CSSOMString style; | ||
attribute CSSOMString weight; | ||
attribute CSSOMString stretch; | ||
attribute CSSOMString unicodeRange; | ||
attribute CSSOMString variant; | ||
attribute CSSOMString featureSettings; | ||
attribute CSSOMString variationSettings; | ||
attribute CSSOMString display; | ||
|
||
readonly attribute FontFaceLoadStatus status; | ||
|
||
Promise<FontFace> load(); | ||
readonly attribute Promise<FontFace> loaded; | ||
}; | ||
|
||
dictionary FontFaceSetLoadEventInit : EventInit { | ||
sequence<FontFace> fontfaces = []; | ||
}; | ||
|
||
[Constructor(CSSOMString type, optional FontFaceSetLoadEventInit eventInitDict), | ||
Exposed=(Window,Worker)] | ||
interface FontFaceSetLoadEvent : Event { | ||
[SameObject] readonly attribute FrozenArray<FontFace> fontfaces; | ||
}; | ||
|
||
enum FontFaceSetLoadStatus { "loading", "loaded" }; | ||
|
||
callback ForEachCallback = void (FontFace font, long index, FontFaceSet self); | ||
|
||
[Exposed=(Window,Worker), | ||
Constructor(sequence<FontFace> initialFaces)] | ||
interface FontFaceSet : EventTarget { | ||
// FontFaceSet is Set-like! | ||
setlike<FontFace>; | ||
FontFaceSet add(FontFace font); | ||
boolean delete(FontFace font); | ||
void clear(); | ||
|
||
// events for when loading state changes | ||
attribute EventHandler onloading; | ||
attribute EventHandler onloadingdone; | ||
attribute EventHandler onloadingerror; | ||
|
||
// check and start loads if appropriate | ||
// and fulfill promise when all loads complete | ||
Promise<sequence<FontFace>> load(CSSOMString font, optional CSSOMString text = " "); | ||
|
||
// return whether all fonts in the fontlist are loaded | ||
// (does not initiate load if not available) | ||
boolean check(CSSOMString font, optional CSSOMString text = " "); | ||
|
||
// async notification that font loading and layout operations are done | ||
readonly attribute Promise<FontFaceSet> ready; | ||
|
||
// loading state, "loading" while one or more fonts loading, "loaded" otherwise | ||
readonly attribute FontFaceSetLoadStatus status; | ||
}; | ||
|
||
[Exposed=(Window,Worker), | ||
NoInterfaceObject] | ||
interface FontFaceSource { | ||
readonly attribute FontFaceSet fonts; | ||
}; | ||
|
||
Document implements FontFaceSource; | ||
WorkerGlobalScope implements FontFaceSource; |