Bug 1326189 part 5 - Add reftest for caret-color with :visited. r=dholbert draft
authorXidorn Quan <me@upsuper.org>
Fri, 20 Jan 2017 17:16:54 +1100
changeset 464852 6b06582d65b0e61f3f0721e4af6b2c686664428c
parent 464851 1fc4b8683d9eb10b6e9d90902bf6d177b7ac50cd
child 543016 f2f0695e65149cc7a758ee92c2fb58ace7de99a0
push id42456
push userxquan@mozilla.com
push dateMon, 23 Jan 2017 04:22:23 +0000
reviewersdholbert
bugs1326189
milestone53.0a1
Bug 1326189 part 5 - Add reftest for caret-color with :visited. r=dholbert MozReview-Commit-ID: Fw1gnUQSRbq
layout/reftests/css-visited/caret-color-on-visited-1-ref.html
layout/reftests/css-visited/caret-color-on-visited-1.html
layout/style/test/moz.build
layout/style/test/test_visited_reftests.html
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-visited/caret-color-on-visited-1-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<style>
+@font-face {
+  font-family: Ahem;
+  src: url(Ahem.ttf);
+}
+div {
+  font: 16px/1 Ahem;
+  width: 1em;
+  background: green;
+}
+</style>
+<div><span></span></div>
+<script>
+let $div = document.querySelector('div');
+let $span = document.querySelector('span');
+window.onload = function () {
+  document.fonts.ready.then(() => {
+    $div.style.height = $span.getBoundingClientRect().height + 'px';
+  });
+};
+</script>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/css-visited/caret-color-on-visited-1.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<style>
+@font-face {
+  font-family: Ahem;
+  src: url(Ahem.ttf);
+}
+a {
+  caret-color: red;
+}
+a:visited {
+  caret-color: green;
+}
+textarea {
+  caret-color: inherit;
+  font: 16px/1 Ahem;
+  outline: none;
+  border: 0 none;
+  resize: none;
+  padding: 0;
+  margin: 0;
+}
+</style>
+<a href="visited-page.html"><textarea></textarea></a>
+<script>
+  document.querySelector('textarea').focus();
+</script>
--- a/layout/style/test/moz.build
+++ b/layout/style/test/moz.build
@@ -39,16 +39,18 @@ TEST_HARNESS_FILES.testing.mochitest.tes
 TEST_HARNESS_FILES.testing.mochitest.tests.layout.style.test['css-visited'] += [
     '/layout/reftests/css-visited/border-1-ref.html',
     '/layout/reftests/css-visited/border-1.html',
     '/layout/reftests/css-visited/border-2-ref.html',
     '/layout/reftests/css-visited/border-2a.html',
     '/layout/reftests/css-visited/border-2b.html',
     '/layout/reftests/css-visited/border-collapse-1-ref.html',
     '/layout/reftests/css-visited/border-collapse-1.html',
+    '/layout/reftests/css-visited/caret-color-on-visited-1-ref.html',
+    '/layout/reftests/css-visited/caret-color-on-visited-1.html',
     '/layout/reftests/css-visited/color-choice-1-ref.html',
     '/layout/reftests/css-visited/color-choice-1.html',
     '/layout/reftests/css-visited/color-on-bullets-1-ref.html',
     '/layout/reftests/css-visited/color-on-bullets-1.html',
     '/layout/reftests/css-visited/color-on-link-1-ref.html',
     '/layout/reftests/css-visited/color-on-link-1.html',
     '/layout/reftests/css-visited/color-on-link-before-1.html',
     '/layout/reftests/css-visited/color-on-text-decoration-1-ref.html',
@@ -100,16 +102,17 @@ TEST_HARNESS_FILES.testing.mochitest.tes
     '/layout/reftests/css-visited/subject-of-selector-descendant-2-ref.xhtml',
     '/layout/reftests/css-visited/subject-of-selector-descendant-2.xhtml',
     '/layout/reftests/css-visited/visited-page.html',
     '/layout/reftests/css-visited/white-to-transparent-1-ref.html',
     '/layout/reftests/css-visited/white-to-transparent-1.html',
     '/layout/reftests/css-visited/width-1-ref.html',
     '/layout/reftests/css-visited/width-on-link-1.html',
     '/layout/reftests/css-visited/width-on-visited-1.html',
+    '/layout/reftests/fonts/Ahem.ttf',
     '/layout/reftests/svg/as-image/lime100x100.svg',
     '/layout/reftests/svg/as-image/svg-image-visited-1-helper.svg',
     '/layout/reftests/svg/as-image/svg-image-visited-2-helper.svg',
     '/layout/reftests/svg/pseudo-classes-02-ref.svg',
     '/layout/reftests/svg/pseudo-classes-02.svg',
 ]
 
 DEFINES['MOZILLA_INTERNAL_API'] = True
--- a/layout/style/test/test_visited_reftests.html
+++ b/layout/style/test/test_visited_reftests.html
@@ -27,16 +27,17 @@ var gTests = [
   // there's also an implicit "load visited-page.html" at the start,
   // thanks to the code below.
 
   // IMPORTANT NOTE: For these tests, the test and reference are not
   // snapshotted in the same way.  The REFERENCE (second file) is
   // assumed to be complete when loaded, but we poll for visited link
   // coloring on the TEST (first file) until the test passes.
   "== pseudo-classes-02.svg pseudo-classes-02-ref.svg",
+  "needs-focus == caret-color-on-visited-1.html caret-color-on-visited-1-ref.html",
   "!= color-on-link-1-ref.html color-on-visited-1-ref.html",
   "== color-on-link-1.html color-on-link-1-ref.html",
   "== color-on-link-before-1.html color-on-link-1-ref.html",
   "== color-on-visited-1.html color-on-visited-1-ref.html",
   "== color-on-visited-before-1.html color-on-visited-1-ref.html",
   "!= content-color-on-link-before-1-ref.html content-color-on-visited-before-1-ref.html",
   "== content-color-on-link-before-1.html content-color-on-link-before-1-ref.html",
   "== content-color-on-visited-before-1.html content-color-on-visited-before-1-ref.html",
@@ -93,17 +94,19 @@ var gTests = [
 // making a test failure just show up as a timeout.
 var gMaxPassingTries = 10;
 var gTimeoutFactor = 10;
 
 function startIframe(url) {
   return new Promise(resolve => {
     var element = document.createElement("iframe");
     element.addEventListener("load", () => {
-      resolve(element.contentWindow);
+      element.contentDocument.fonts.ready.then(() => {
+        resolve(element.contentWindow);
+      });
     }, {once: true});
     // smaller than normal reftests, but enough for these
     element.setAttribute("style", "width: 30em; height: 10em");
     element.src = "css-visited/" + url;
     document.body.appendChild(element);
   });
 }