Projects/Acid3: Difference between revisions

From KDE TechBase
(remove fixed tests 44 & 4)
Line 11: Line 11:
! passes in FF3
! passes in FF3
! passes in FF3.1
! passes in FF3.1
|-
| 04 || HTML Parser || Parser bug: iframe missing text kid || discard_until = ID_IFRAME+ID_CLOSE_TAG --- added in http://lists.kde.org/?l=kde-commits&m=99906936412933&w=2. || No || Yes
|-
|-
| 13 || DOM Range || Unhandled mutation || || Yes || Yes
| 13 || DOM Range || Unhandled mutation || || Yes || Yes
Line 19: Line 17:
|-
|-
| 29 || HTML Parser || Parser bug: table missing whitespace kid || || Yes || Yes
| 29 || HTML Parser || Parser bug: table missing whitespace kid || || Yes || Yes
|-
| 44 || CSS Parser || Misparse of html*.test selector (see below) || || Yes || Yes
|-
|-
| 48 (red linktest failed) || CSS || :visited doesn't match URL of part || Bug in konqueror's history manager. Works in testkhtml || Yes || Yes
| 48 (red linktest failed) || CSS || :visited doesn't match URL of part || Bug in konqueror's history manager. Works in testkhtml || Yes || Yes
Line 72: Line 68:
     send( INF_MIME_TYPE, data );
     send( INF_MIME_TYPE, data );
     while(true)
     while(true)
</pre>
=== #4, iframe kids. ===
This one may be committable, actually
<pre>
--- a/html/htmlparser.cpp
+++ b/html/htmlparser.cpp
@@ -874,7 +874,7 @@ NodeImpl *KHTMLParser::getElement(Token* t)
        // a bit a special case, since the frame is inlined...
    case ID_IFRAME:
        n = new HTMLIFrameElementImpl(document);
-        if (!t->flat) discard_until = ID_IFRAME+ID_CLOSE_TAG;
+        //if (!t->flat) discard_until = ID_IFRAME+ID_CLOSE_TAG;
        break;
// form elements
</pre>
=== #44 testcase ===
<pre>
<style>
html*.test { border: 2px solid red; margin: 5px; }
</style>
<body class="test">
  <p class="test">There should be no red borders here.
</body>
</pre>
</pre>


=== #48, red linktest failed ===
=== #48, red linktest failed ===
It's a bug inside KonqHistoryManager --- it ignores some inserts, which makes the link not :visited.
It's a bug inside KonqHistoryManager --- it ignores some inserts, which makes the link not :visited.

Revision as of 20:24, 17 March 2009

Acid3 Test Failures of KHTML

This is an overview of the remaing failures of KHTML on the Acid3 test. FF3.1 beta2pre scores 92/100, with 4 of the 6 colored boxes filled in correctly.

Test No Area Diagnosis Comment passes in FF3 passes in FF3.1
13 DOM Range Unhandled mutation Yes Yes
26/27 JS + DOM Memory management Cycle breaking cleaning up too much Yes, but slow Yes, but slow
29 HTML Parser Parser bug: table missing whitespace kid Yes Yes
48 (red linktest failed) CSS :visited doesn't match URL of part Bug in konqueror's history manager. Works in testkhtml Yes Yes
51 DOM2 Table Stray row Buggy test. Raised with Ian Hickson. Yes Yes
53 DOM2 Forms Not managing form's element collection when not in document. Yes Yes
70 XML Parser " UTF-8 encoded XML document with invalid character did not have a well-formedness error" No
74 DOM "getSVGDocument missing on <iframe> element." Yes
75 SVG+SMIL DOM "SVG DOM interface SVGRectElement not supported." No
76 SVG+SMIL DOM ?? No
77,78,79 SVG Fonts ?? No

Note: An upgrade to PCRE 7.7 is required to make tests 89 and 90 pass.

Random patch storage

These are not meant for commit, but more as a proof of analysis, and starting point for proper fix:

#16, red cat.

Ugly, but roughly correct.

Index: kio/slavebase.cpp
===================================================================
--- kio/slavebase.cpp	(revision 793314)
+++ kio/slavebase.cpp	(working copy)
@@ -527,6 +527,7 @@
 void SlaveBase::errorPage()
 {
     send( INF_ERROR_PAGE );
+    mOutgoingMetaData["__kio_error_page"] = "1";
 }
 
 static bool isSubCommand(int cmd)
@@ -554,6 +555,11 @@
       KIO_DATA << mOutgoingMetaData;
       send( INF_META_DATA, data );
     }
+
+    // re-send the error-page flag as well.
+    if (mOutgoingMetaData.contains("__kio_error_page"))
+	send( INF_ERROR_PAGE );
+    
     KIO_DATA << _type;
     send( INF_MIME_TYPE, data );
     while(true)

#48, red linktest failed

It's a bug inside KonqHistoryManager --- it ignores some inserts, which makes the link not :visited.