<!DOCTYPE HTML>
<html>
<head>
<title>CSS Test: Supported format specifiers should load</title>
<link rel="help" href="https://drafts.csswg.org/css-fonts-4/#src-desc"/>
<meta name="assert" content="Supported format specifiers should load"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
setup({
    explicit_done: true
});

var formatSpecifiers = [
    "woff",
    "truetype",
    "opentype",
    "woff2",
    "woff-variations",
    "truetype-variations",
    "opentype-variations",
    "woff2-variations"
];

var defaultAhemSrc = 'url("/fonts/Ahem.ttf") format("INSERT_FORMAT")';

function runTestOnFormatSpecifiers(formats, expectFail) {
    for (var i = 0; i < formats.length; ++i) {
        promise_test((testDetails) => {
            var familyName = "load_ahem_" + i;
            var ahemSrcFormat = defaultAhemSrc.replace("INSERT_FORMAT", testDetails.properties.format);
            var fontFace = new FontFace(familyName, ahemSrcFormat);
            if (!expectFail) {
                return fontFace.load();
            } else {
                return promise_rejects_dom(testDetails, "NetworkError", fontFace.load());
            }
        }, (expectFail ? "Do not load" : "Load") + " Ahem with format " + formats[i], {
            "format": formats[i]
        });
    }
}

runTestOnFormatSpecifiers(formatSpecifiers, false);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => "xyz" + x), true);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => x + "xyz"), true);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => x.slice(0, -2)), true);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => x.slice(2)), true);
runTestOnFormatSpecifiers(formatSpecifiers.map(x => x.slice(0, x.length / 3) + x.slice(x.length / 3 + 1)), true);

done();
</script>
</body>
</html>
