mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 10:44:56 +00:00
bug 879963 - reftests for regressions caused when multiple rules refer to the same proxy. r=jdaggett
This commit is contained in:
parent
77becfce0e
commit
30cfe09d1d
35
layout/reftests/font-face/dynamic-duplicate-rule-1-ref.html
Normal file
35
layout/reftests/font-face/dynamic-duplicate-rule-1-ref.html
Normal file
@ -0,0 +1,35 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<style type="text/css" id="style1">
|
||||
@font-face {
|
||||
font-family: foo;
|
||||
src: local("Arial"),
|
||||
local("DejaVu Sans"),
|
||||
local("Free Sans"),
|
||||
local("Open Sans"),
|
||||
local("Droid Sans"),
|
||||
local("Roboto");
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: serif;
|
||||
}
|
||||
.test {
|
||||
font-family: foo;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div>
|
||||
foo <span class="test">bar</span> baz
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
65
layout/reftests/font-face/dynamic-duplicate-rule-1a.html
Normal file
65
layout/reftests/font-face/dynamic-duplicate-rule-1a.html
Normal file
@ -0,0 +1,65 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html class="reftest-wait">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<!-- Testcase for bug 879963 regression.
|
||||
We have two <style> elements with identical @font-face rules, which will
|
||||
share a common proxy font entry. When the entry is loaded, the references
|
||||
in both rules must be updated, otherwise text may disappear if the "wrong"
|
||||
(non-updated) rule is subsequently used.
|
||||
By disabling the first style element after the document has loaded (and the
|
||||
user font has been resolved to a real font entry), we can check that the
|
||||
second rule also works as expected.
|
||||
Note that if a platform doesn't have any of the local() fonts listed,
|
||||
the testcase will "pass" harmlessly as a no-op. -->
|
||||
|
||||
<style type="text/css" id="style1">
|
||||
@font-face {
|
||||
font-family: foo;
|
||||
src: local("Arial"),
|
||||
local("DejaVu Sans"),
|
||||
local("Free Sans"),
|
||||
local("Open Sans"),
|
||||
local("Droid Sans"),
|
||||
local("Roboto");
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css" id="style2">
|
||||
@font-face {
|
||||
font-family: foo;
|
||||
src: local("Arial"),
|
||||
local("DejaVu Sans"),
|
||||
local("Free Sans"),
|
||||
local("Open Sans"),
|
||||
local("Droid Sans"),
|
||||
local("Roboto");
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: serif;
|
||||
}
|
||||
.test {
|
||||
font-family: foo;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="application/javascript">
|
||||
function run() {
|
||||
document.getElementById("style1").disabled = true;
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="run()">
|
||||
<div>
|
||||
foo <span class="test">bar</span> baz
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
59
layout/reftests/font-face/dynamic-duplicate-rule-1b.html
Normal file
59
layout/reftests/font-face/dynamic-duplicate-rule-1b.html
Normal file
@ -0,0 +1,59 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html class="reftest-wait">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<!-- Testcase for bug 879963 regression.
|
||||
Identical to dynamic-duplicate-rule-1a, except that we disable the
|
||||
second rule (rather than the first), to allow for the possibility of
|
||||
changes in how rules are ordered/searched. -->
|
||||
|
||||
<style type="text/css" id="style1">
|
||||
@font-face {
|
||||
font-family: foo;
|
||||
src: local("Arial"),
|
||||
local("DejaVu Sans"),
|
||||
local("Free Sans"),
|
||||
local("Open Sans"),
|
||||
local("Droid Sans"),
|
||||
local("Roboto");
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css" id="style2">
|
||||
@font-face {
|
||||
font-family: foo;
|
||||
src: local("Arial"),
|
||||
local("DejaVu Sans"),
|
||||
local("Free Sans"),
|
||||
local("Open Sans"),
|
||||
local("Droid Sans"),
|
||||
local("Roboto");
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: serif;
|
||||
}
|
||||
.test {
|
||||
font-family: foo;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="application/javascript">
|
||||
function run() {
|
||||
document.getElementById("style2").disabled = true;
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="run()">
|
||||
<div>
|
||||
foo <span class="test">bar</span> baz
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
85
layout/reftests/font-face/dynamic-duplicate-rule-1c.html
Normal file
85
layout/reftests/font-face/dynamic-duplicate-rule-1c.html
Normal file
@ -0,0 +1,85 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html class="reftest-wait">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<!-- Testcase for bug 879963 regression.
|
||||
|
||||
This test is designed to hit the case where we were adding the same
|
||||
proxy font entry to a family multiple times during user font set updates.
|
||||
|
||||
Note that if a platform doesn't have any of the local() fonts listed,
|
||||
the testcase will "pass" harmlessly as a no-op. -->
|
||||
|
||||
<style type="text/css" id="style1">
|
||||
@font-face {
|
||||
font-family: foo;
|
||||
src: local("Arial"),
|
||||
local("DejaVu Sans"),
|
||||
local("Free Sans"),
|
||||
local("Open Sans"),
|
||||
local("Droid Sans"),
|
||||
local("Roboto");
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css" id="style2">
|
||||
@font-face {
|
||||
font-family: foo;
|
||||
src: local("Arial"),
|
||||
local("DejaVu Sans"),
|
||||
local("Free Sans"),
|
||||
local("Open Sans"),
|
||||
local("Droid Sans"),
|
||||
local("Roboto");
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css" id="style3">
|
||||
@font-face {
|
||||
font-family: foo;
|
||||
src: local("Arial"),
|
||||
local("DejaVu Sans"),
|
||||
local("Free Sans"),
|
||||
local("Open Sans"),
|
||||
local("Droid Sans"),
|
||||
local("Roboto");
|
||||
}
|
||||
</style>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
font-family: serif;
|
||||
}
|
||||
.test {
|
||||
font-family: foo;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="application/javascript">
|
||||
function run() {
|
||||
// Disable one of our three identical style elements.
|
||||
// This will trigger an update of the user font set,
|
||||
// and there will still be two identical rules present.
|
||||
document.getElementById("style3").disabled = true;
|
||||
|
||||
// Now we trigger the use of the 'foo' font family,
|
||||
// so that font loading occurs.
|
||||
// If there are duplicate proxy entries in the family,
|
||||
// and only the first one gets replaced by the real face,
|
||||
// blank text will result.
|
||||
document.getElementById("test").className = "test";
|
||||
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="run()">
|
||||
<div>
|
||||
foo <span id="test">bar</span> baz
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -153,3 +153,8 @@ HTTP(..) != font-error-404-1.html font-error-404-2.html # sanity-check that the
|
||||
|
||||
# Font load redirection
|
||||
HTTP(..) == font-redirect.html order-1-ref.html
|
||||
|
||||
# Tests for potential regressions from bug 879963
|
||||
== dynamic-duplicate-rule-1a.html dynamic-duplicate-rule-1-ref.html
|
||||
== dynamic-duplicate-rule-1b.html dynamic-duplicate-rule-1-ref.html
|
||||
== dynamic-duplicate-rule-1c.html dynamic-duplicate-rule-1-ref.html
|
||||
|
Loading…
Reference in New Issue
Block a user