diff --git a/layout/style/test/test_font_loading_api.html b/layout/style/test/test_font_loading_api.html index 1770383d5de9..7b1e44eb521c 100644 --- a/layout/style/test/test_font_loading_api.html +++ b/layout/style/test/test_font_loading_api.html @@ -615,7 +615,8 @@ function runTest() { }).then(function() { // (TEST 29) Test that a loadingdone and a loadingerror event is dispatched - // when a FontFace with status "error" is added to the FontFaceSet. + // when a FontFace that eventually becomes status "error" is added to the + // FontFaceSet. var face; var awaitEvents = new Promise(function(aResolve, aReject) { @@ -657,14 +658,16 @@ function runTest() { }; }); - face = new FontFace("test", new ArrayBuffer(0)); + face = new FontFace("test", "url(x)"); + face.load(); + is(face.status, "loading", "FontFace should have status \"loading\" (TEST 29)"); + document.fonts.add(face); return face.loaded .then(function() { ok(false, "the FontFace should not load (TEST 29)"); }, function(aError) { is(face.status, "error", "FontFace should have status \"error\" (TEST 29)"); - document.fonts.add(face); return awaitEvents; }) .then(function() { @@ -675,7 +678,7 @@ function runTest() { }).then(function() { // (TEST 30) Test that a loadingdone event is dispatched when a FontFace - // with status "loaded" is added to the FontFaceSet. + // that eventually becomes status "loaded" is added to the FontFaceSet. var face; var awaitEvents = new Promise(function(aResolve, aReject) { @@ -701,12 +704,14 @@ function runTest() { }; }); - face = new FontFace("test", fontData); + face = new FontFace("test", "url(BitPattern.woff)"); + face.load(); + is(face.status, "loading", "FontFace should have status \"loading\" (TEST 30)"); + document.fonts.add(face); return face.loaded .then(function() { is(face.status, "loaded", "FontFace should have status \"loaded\" (TEST 30)"); - document.fonts.add(face); return awaitEvents; }) .then(function() { @@ -744,14 +749,15 @@ function runTest() { }); face = new FontFace("test", "url(BitPattern.woff)"); + is(face.status, "unloaded", "FontFace should have status \"unloaded\" (TEST 31)"); + document.fonts.add(face); return face.load() .then(function() { - is(face.status, "loaded", "FontFace should have status \"loaded\" (TEST 31)"); - document.fonts.add(face); return awaitEvents; }) .then(function() { + is(face.status, "loaded", "FontFace should have status \"loaded\" (TEST 31)"); document.fonts.clear(); return document.fonts.ready; }); @@ -863,6 +869,63 @@ function runTest() { style.textContent = ""; + }).then(function() { + + // (TEST 35) Test that no loadingdone event is dispatched when a FontFace + // with "loaded" status is added to a "loaded" FontFaceSet. + var gotLoadingDone = false; + document.fonts.onloadingdone = function(aEvent) { + gotLoadingDone = true; + }; + + is(document.fonts.status, "loaded", "document.fonts.status should have status \"loaded\" (TEST 35)"); + var face = new FontFace("test", fontData); + + return face.loaded + .then(function() { + is(face.status, "loaded", "FontFace should have status \"loaded\" (TEST 35)"); + document.fonts.add(face); + is(document.fonts.status, "loaded", "document.fonts.status should still have status \"loaded\" (TEST 35)"); + return document.fonts.ready; + }) + .then(function() { + ok(!gotLoadingDone, "loadingdone event should not be dispatched (TEST 35)"); + document.fonts.onloadingdone = null; + document.fonts.clear(); + }); + + }).then(function() { + + // (TEST 36) Test that no loadingdone or loadingerror event is dispatched + // when a FontFace with "error" status is added to a "loaded" FontFaceSet. + var gotLoadingDone = false, gotLoadingError = false; + document.fonts.onloadingdone = function(aEvent) { + gotLoadingDone = true; + }; + document.fonts.onloadingerror = function(aEvent) { + gotLoadingError = true; + }; + + is(document.fonts.status, "loaded", "document.fonts.status should have status \"loaded\" (TEST 36)"); + var face = new FontFace("test", new ArrayBuffer(0)); + + return face.loaded + .then(function() { + ok(false, "FontFace should not have loaded (TEST 36)"); + }, function() { + is(face.status, "error", "FontFace should have status \"error\" (TEST 36)"); + document.fonts.add(face); + is(document.fonts.status, "loaded", "document.fonts.status should still have status \"loaded\" (TEST 36)"); + return document.fonts.ready; + }) + .then(function() { + ok(!gotLoadingDone, "loadingdone event should not be dispatched (TEST 36)"); + ok(!gotLoadingError, "loadingerror event should not be dispatched (TEST 36)"); + document.fonts.onloadingdone = null; + document.fonts.onloadingerror = null; + document.fonts.clear(); + }); + }).then(function() { // (TEST LAST) Test that a pending style sheet load prevents