<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<style>
/* Test 1: Invalid font data */
@font-face {
    font-family: myfont1;
    src: url('resources/invalidfont.png') format(opentype);
}

/* Test 2: Download error */
@font-face {
    font-family: myfont2;
    src: url('resources/DownLoadErrorAhem.otf');
}

/* Test 3: Empty data url */
@font-face {
    font-family: myfont3;
    src: url(data:application/x-truetype-font,) format(truetype);
}

/* Test 4: Download error followed by existing local font */
@font-face {
    font-family: myfont4;
    src: url('resources/DownLoadErrorAhem.otf'), local('Courier New');
}

/* Test 5: Multiple errors */
@font-face {
    font-family: myfont5;
    src: url('resources/DownLoadErrorAhem.otf'), url(data:application/x-truetype-font,) format(truetype);
}
</style>
<script>
description('Test download error cases. "load" or "error" events should be fired exactly once for each @font-face rule.');

window.jsTestIsAsync = true;

var events = {};

function logEvent(e) {
    var family = e.fontface.style.getPropertyValue('font-family');
    if (!events[family])
        events[family] = [];
    events[family].push(e.type);
}

function runTests() {
    document.fonts.addEventListener('loadstart', logEvent);
    document.fonts.addEventListener('load', logEvent);
    document.fonts.addEventListener('error', logEvent);

    document.fonts.notifyWhenFontsReady(function() {
        shouldBe("events['myfont1']", "['loadstart', 'error']");
        shouldBe("events['myfont2']", "['loadstart', 'error']");
        shouldBe("events['myfont3']", "['loadstart', 'error']");
        shouldBe("events['myfont4']", "['loadstart', 'load']");
        shouldBe("events['myfont5']", "['loadstart', 'error']");
        finishJSTest();
    });
}

if (document.fonts)
    runTests();
else {
    testFailed('document.fonts does not exist');
    finishJSTest();
}
</script>
</head>
<body>
  <div style="font-family: myfont1">font1</div>
  <div style="font-family: myfont2">font2</div>
  <div style="font-family: myfont3">font3</div>
  <div style="font-family: myfont4">font4</div>
  <div style="font-family: myfont5">font5</div>
  <script src="../../resources/js-test-post.js"></script>
</body>
</html>
