Projects/Acid3: Difference between revisions
< Projects
Neverendingo (talk | contribs) m (Text replace - "<code diff>" to "<syntaxhighlight lang="diff">") |
|||
(57 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
== Acid3 Test Failures of KHTML == | == Acid3 Test Failures of KHTML == | ||
This is an overview of the remaing [https://bugs.kde.org/show_bug.cgi?id=156947 failures] of KHTML on the [http://acid3.acidtests.org/ Acid3] test. FF3.1 beta2pre scores 92/100, with 4 of the 6 colored boxes filled in correctly. | |||
{| border="1" | {| border="1" | ||
Line 7: | Line 9: | ||
! Diagnosis | ! Diagnosis | ||
! Comment | ! Comment | ||
! passes in FF3 | |||
! passes in FF3.1 | |||
|- | |- | ||
| | | 13 || DOM Range || Unhandled mutation (will port wc patch. Sp.)|| || 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 || Yes | ||
|- | |- | ||
| | | 74 || DOM || "getSVGDocument missing on <iframe> element." || || Yes || Yes | ||
|- | |- | ||
| | | 75 || SVG+SMIL DOM || "SVG DOM interface SVGRectElement not supported." || || No || No | ||
|- | |- | ||
| | | 76 || SVG+SMIL DOM || ?? || || No || No | ||
|- | |- | ||
| | | 77,78,79 || SVG Fonts || ?? || || No || No | ||
| | |||
| | |||
|} | |} | ||
Note: An upgrade to PCRE 7.7 is required to make tests 89 and 90 pass. | |||
== Acid3 Error report == | |||
Error obtained with Konqueror 4.2.1, using Qt4.5RC. 20-march-2009. | |||
<pre> | |||
Failed 15 tests. | |||
Test 04 failed: expected 'null' but got '[object HTMLIFrameElement]' - expectation 21 failed | |||
Test 08 passed, but took 86ms (less than 30fps) | |||
Test 09 passed, but took 59ms (less than 30fps) | |||
Test 13 failed: collapsed is wrong after deletion | |||
Test 26 failed: e1 - parent element doesn't exist after looping | |||
Test 27 failed: e1 - parent element doesn't exist after waiting | |||
Test 29 failed: expected '2' but got '1' - cloned table had wrong number of children | |||
Test 33 passed, but took 61ms (less than 30fps) | |||
Test 40 passed, but took 46ms (less than 30fps) | |||
Test 44 failed: expected '0' but got '1' - misparsed selectors | |||
Test 46 passed, but took 57ms (less than 30fps) | |||
Test 47 passed, but took 52ms (less than 30fps) | |||
Test 51 failed: expected '6' but got '5' - wrong number of rows | |||
Test 53 failed: expected '1' but got '0' - form's elements array has wrong size | |||
Test 69 passed, but took 213 attempts (less than perfect). | |||
Test 70 failed: UTF-8 encoded XML document with invalid character did not have a well-formedness error | |||
Test 74 failed: getSVGDocument missing on <iframe> element. | |||
Test 75 failed: SVG DOM interface SVGRectElement not supported. | |||
Test 76 failed: Undefined value | |||
Test 77 failed: SVGTextContentElement.getNumberOfChars() not supported. | |||
Test 78 failed: Attempt to use a non-function object or a value as a function. | |||
Test 79 failed: Attempt to use a non-function object or a value as a function. | |||
Test 98 passed, but took 63ms (less than 30fps) | |||
Total elapsed time: 17.30s | |||
</pre> | |||
== 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. | |||
<syntaxhighlight lang="diff"> | |||
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) | |||
</syntaxhighlight> | |||
=== #48, red linktest failed === | |||
It's a bug inside KonqHistoryManager --- it ignores some inserts, which makes the link not :visited. |
Latest revision as of 21:14, 29 June 2011
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 (will port wc patch. Sp.) | 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 | Yes | |
74 | DOM | "getSVGDocument missing on <iframe> element." | Yes | Yes | |
75 | SVG+SMIL DOM | "SVG DOM interface SVGRectElement not supported." | No | No | |
76 | SVG+SMIL DOM | ?? | No | No | |
77,78,79 | SVG Fonts | ?? | No | No |
Note: An upgrade to PCRE 7.7 is required to make tests 89 and 90 pass.
Acid3 Error report
Error obtained with Konqueror 4.2.1, using Qt4.5RC. 20-march-2009.
Failed 15 tests. Test 04 failed: expected 'null' but got '[object HTMLIFrameElement]' - expectation 21 failed Test 08 passed, but took 86ms (less than 30fps) Test 09 passed, but took 59ms (less than 30fps) Test 13 failed: collapsed is wrong after deletion Test 26 failed: e1 - parent element doesn't exist after looping Test 27 failed: e1 - parent element doesn't exist after waiting Test 29 failed: expected '2' but got '1' - cloned table had wrong number of children Test 33 passed, but took 61ms (less than 30fps) Test 40 passed, but took 46ms (less than 30fps) Test 44 failed: expected '0' but got '1' - misparsed selectors Test 46 passed, but took 57ms (less than 30fps) Test 47 passed, but took 52ms (less than 30fps) Test 51 failed: expected '6' but got '5' - wrong number of rows Test 53 failed: expected '1' but got '0' - form's elements array has wrong size Test 69 passed, but took 213 attempts (less than perfect). Test 70 failed: UTF-8 encoded XML document with invalid character did not have a well-formedness error Test 74 failed: getSVGDocument missing on <iframe> element. Test 75 failed: SVG DOM interface SVGRectElement not supported. Test 76 failed: Undefined value Test 77 failed: SVGTextContentElement.getNumberOfChars() not supported. Test 78 failed: Attempt to use a non-function object or a value as a function. Test 79 failed: Attempt to use a non-function object or a value as a function. Test 98 passed, but took 63ms (less than 30fps) Total elapsed time: 17.30s
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.