loge.hixie.ch

Hixie's Natural Log

2010-04-02 20:29 UTC Acid3 update for :link/:visited privacy changes

David Baron has proposed a possible solution for the :link/:visited privacy problem. I've changed Acid3 so that it won't fail if you implement his proposal. The following is the diff:

--- index.html.prev  2009-08-14 00:00:00.000000000 +0000
+++ index.html       2010-04-02 20:13:49.000000000 +0000
@@ -129,8 +129,12 @@
 
   /* rules specific to the tests below */
   #instructions:last-child { white-space: pre-wrap; white-space: x-bogus; }
-  #linktest:link { display: block; color: red; text-align: center; text-decoration: none; }
-  #linktest.pending, #linktest:visited { display: none; }
+  /* replaced for http://dbaron.org/mozilla/visited-privacy with the three rules after it:
+     #linktest:link { display: block; color: red; text-align: center; text-decoration: none; }
+     #linktest.pending, #linktest:visited { display: none; } */
+  #linktest { position: absolute; left: 17px; top: 18px; color: red; width: 80px; text-decoration: none; font: 900 small-caps 10px sans-serif; }
+  #linktest:link { color: red; }
+  #linktest.pending, #linktest:visited { color: white; }
   #\ { color: transparent; color: hsla(0, 0, 0, 1); position: fixed; top: 10px; left: 10px; font: 40px Arial, sans-serif; }
   #\  #result, #\  #score { position: fixed; top: 10%; left: 10%; width: 4em; z-index: 1; color: yellow; font-size: 50px; background: fuchsia; border: solid 1em purple; }
  </style>
@@ -1869,7 +1873,7 @@
       var iframe = document.getElementById("selectors");
       var number = (new Date()).valueOf();
       var a = document.createElement('a');
-      a.appendChild(document.createTextNode('LINKTEST FAILED'));
+      a.appendChild(document.createTextNode('YOU SHOULD NOT SEE THIS AT ALL')); // changed text when fixing http://dbaron.org/mozilla/visited-privacy
       a.setAttribute('id', 'linktest');
       a.setAttribute('class', 'pending');
       a.setAttribute('href', iframe.getAttribute('src') + "?" + number);
@@ -3106,23 +3110,25 @@
     },
     function () {
       // test 80: remove the iframes and the object
+      // (when fixing the test for http://dbaron.org/mozilla/visited-privacy,
+      // this section was flipped around so the linktest check is done first;
+      // this is to prevent the 'retry' from failing the second time since by
+      // then the kungFuDeathGrip has been nullified, if we do it first)
+      // first, check that the linktest is loaded
+      var a = document.links[1];
+      assert(!(a == null), "linktest was null");
+      assert(a.textContent == "YOU SHOULD NOT SEE THIS AT ALL", "linktest link couldn't be found"); // changed text when fixing http://dbaron.org/mozilla/visited-privacy
+      if (a.hasAttribute('class'))
+        return "retry"; // linktest onload didn't fire -- could be a networking issue, check that first
       assert(!(kungFuDeathGrip == null), "kungFuDeathGrip was null");
       assert(!(kungFuDeathGrip.parentNode == null), "kungFuDeathGrip.parentNode was null");
+      // ok, now remove the iframes
       kungFuDeathGrip.parentNode.removeChild(kungFuDeathGrip);
       kungFuDeathGrip = null;
       // check that the xhtml files worked right
       assert(notifications['xhtml.1'], "Script in XHTML didn't execute");
       assert(!notifications['xhtml.2'], "XML well-formedness error didn't stop script from executing");
       assert(!notifications['xhtml.3'], "Script executed despite having wrong namespace");
-      // while we're at it, check that the linktest is loaded
-      // since the other iframes have forcibly loaded by now, we assume that
-      // there's no way this can't have loaded by now
-      // (probably a safe bet)
-      var a = document.links[1];
-      assert(!(a == null), "linktest was null");
-      assert(a.textContent == "LINKTEST FAILED", "linktest link couldn't be found");
-      if (a.hasAttribute('class'))
-        return "retry"; // linktest onload didn't fire -- could be a networking issue, check that first
       return 5;
     },
 

A new copy of the Acid3 tarball is now available also.

Pingbacks: 1 2