Fix by Trey Matteson, reviewed by Maciej.
authorap <ap@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 31 Mar 2006 20:30:07 +0000 (20:30 +0000)
committerap <ap@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 31 Mar 2006 20:30:07 +0000 (20:30 +0000)
        http://bugzilla.opendarwin.org/show_bug.cgi?id=7739
        REGRESSION: Assertion failure loading acid2 test in -[WebCoreFrameBridge installInFrame:]

        Tests: http/tests/misc/acid2.html, http/tests/misc/acid2-pixel.html

        The gist of this change is that we must cancel the load from the Webkit side when we
        realize we're switching to the fallback content.  This is somewhat a temp workaround
        since control of loading will be moving to WebCore.

        * WebView/WebMainResourceLoader.m:
        (-[WebMainResourceLoader continueAfterContentPolicy:response:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@13615 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/http/tests/misc/acid2-expected.checksum [new file with mode: 0644]
LayoutTests/http/tests/misc/acid2-expected.png [new file with mode: 0644]
LayoutTests/http/tests/misc/acid2-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/misc/acid2-pixel-expected.checksum [new file with mode: 0644]
LayoutTests/http/tests/misc/acid2-pixel-expected.png [new file with mode: 0644]
LayoutTests/http/tests/misc/acid2-pixel-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/misc/acid2-pixel.html [new file with mode: 0644]
LayoutTests/http/tests/misc/acid2.html [new file with mode: 0644]
WebKit/ChangeLog
WebKit/WebView/WebMainResourceLoader.m

index 480e127997dfee8f0c88956e10791187bd59fc87..0c27d54b0f8571082b1ed2012765f1b3a1bcd9cd 100644 (file)
@@ -1,3 +1,24 @@
+2006-03-31  Trey Matteson  <trey@usa.net>
+
+        Reviewed by Maciej, landed by ap.
+
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=7739
+        REGRESSION: Assertion failure loading acid2 test in -[WebCoreFrameBridge installInFrame:]
+
+        Copy Acid2 to http directory, change failing object URL from a non-existent
+        file back to a 404 failure, as in the original test. The modified versions
+        are preserved just to keep something in fast/css.
+
+        * http/tests/misc: Added.
+        * http/tests/misc/acid2-expected.checksum: Added.
+        * http/tests/misc/acid2-expected.png: Added.
+        * http/tests/misc/acid2-expected.txt: Added.
+        * http/tests/misc/acid2-pixel-expected.checksum: Added.
+        * http/tests/misc/acid2-pixel-expected.png: Added.
+        * http/tests/misc/acid2-pixel-expected.txt: Added.
+        * http/tests/misc/acid2-pixel.html: Added.
+        * http/tests/misc/acid2.html: Added.
+
 2006-03-31  Mitz Pettel  <opendarwin.org@mitzpettel.com>
 
         Reviewed by Darin, landed by Beth.
diff --git a/LayoutTests/http/tests/misc/acid2-expected.checksum b/LayoutTests/http/tests/misc/acid2-expected.checksum
new file mode 100644 (file)
index 0000000..9eb90a2
--- /dev/null
@@ -0,0 +1 @@
+aac719edc87528afa855eb8806e41855
\ No newline at end of file
diff --git a/LayoutTests/http/tests/misc/acid2-expected.png b/LayoutTests/http/tests/misc/acid2-expected.png
new file mode 100644 (file)
index 0000000..cb12bb1
Binary files /dev/null and b/LayoutTests/http/tests/misc/acid2-expected.png differ
diff --git a/LayoutTests/http/tests/misc/acid2-expected.txt b/LayoutTests/http/tests/misc/acid2-expected.txt
new file mode 100644 (file)
index 0000000..bcab844
--- /dev/null
@@ -0,0 +1,88 @@
+layer at (0,0) size 800x4064
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x4064
+  RenderBlock {HTML} at (0,0) size 800x4064 [color=#FF0000] [bgcolor=#FFFFFF]
+    RenderBody {BODY} at (0,84) size 800x2780
+      RenderBlock {H2} at (72,2482) size 656x72 [color=#000080]
+        RenderText {TEXT} at (12,46) size 129x24
+          text run at (12,46) width 129: "Hello World!"
+layer at (36,2638) size 764x226
+  RenderBlock (relative positioned) {DIV} at (36,2554) size 764x226 [border: (12px solid #00000000)]
+    RenderTable {TABLE} at (12,12) size 1x0
+      RenderTableSection {TBODY} at (0,0) size 0x0
+        RenderTableRow {TR} at (0,0) size 0x0
+          RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
+    RenderBlock {DIV} at (60,60) size 120x12 [bgcolor=#FF0000] [border: (12px solid #000000) none (12px solid #000000)]
+      RenderBlock {DIV} at (12,0) size 144x12
+        RenderText {TEXT} at (0,-1) size 90x12
+          text run at (0,-1) width 90: "                              "
+    RenderBlock (floating) {DIV} at (36,96) size 168x48 [border: none (12px solid #000000)]
+      RenderBlock {DIV} at (12,0) size 144x48 [bgcolor=#FFFF00]
+        RenderBlock {DIV} at (60,12) size 24x24 [bgcolor=#FF0000]
+          RenderBlock (generated) at (0,0) size 24x12 [border: none (12px solid #FFFF00) (12px solid #000000) (12px solid #FFFF00)]
+            RenderText at (0,0) size 0x0
+          RenderBlock (generated) at (0,12) size 24x12 [border: (12px solid #000000) (12px solid #FFFF00) none (12px solid #FFFF00)]
+            RenderText at (0,0) size 0x0
+    RenderBlock {DIV} at (87,75) size 590x0
+      RenderBlock {DIV} at (48,0) size 518x0
+    RenderBlock {DIV} at (48,132) size 668x24
+    RenderBlock {DIV} at (60,168) size 120x12 [bgcolor=#FFFF00] [border: (12px solid #000000) none (12px solid #000000)]
+      RenderInline {DIV} at (0,0) size 2x10
+        RenderText {TEXT} at (12,2) size 2x4
+          text run at (12,2) width 2: " "
+    RenderBlock {DIV} at (12,180) size 740x12
+      RenderBlock {DIV} at (60,0) size 96x12 [color=#FFA500] [bgcolor=#FFFF00] [border: none (24px solid #000000) none (24px solid #000000)]
+    RenderTable {UL} at (96,192) size 48x12 [bgcolor=#FF0000]
+      RenderTableSection at (0,0) size 0x12
+        RenderTableRow at (0,0) size 0x0
+          RenderTableCell {LI} at (0,12) size 12x0 [bgcolor=#000000] [r=0 c=0 rs=1 cs=1]
+          RenderTableCell at (12,0) size 12x12 [r=0 c=1 rs=1 cs=1]
+            RenderTable {LI} at (0,0) size 12x12 [bgcolor=#000000]
+          RenderTableCell {LI} at (24,12) size 12x0 [bgcolor=#000000] [r=0 c=2 rs=1 cs=1]
+          RenderTableCell at (36,0) size 12x12 [r=0 c=3 rs=1 cs=1]
+            RenderListItem {LI} at (0,0) size 12x12 [bgcolor=#000000]
+layer at (132,108) size 48x18
+  RenderBlock (positioned) {P} at (132,108) size 48x18 [bgcolor=#000000] [border: none (6px solid #FFFF00) none]
+layer at (132,144) size 48x15
+  RenderBlock (positioned) {P} at (132,144) size 48x15 [bgcolor=#000000] [border: none (3px solid #FF0000) none]
+layer at (108,2686) size 96x12
+  RenderBlock (positioned) {BLOCKQUOTE} at (72,48) size 96x12 [border: none (24px solid #000000) none (24px solid #000000)]
+    RenderBlock (floating) {ADDRESS} at (24,0) size 48x12 [bgcolor=#FFFF00]
+layer at (84,2710) size 144x24
+  RenderBlock (positioned) {DIV} at (48,72) size 144x24 [bgcolor=#FF0000]
+    RenderBlock {DIV} at (0,0) size 144x0
+      RenderInline {OBJECT} at (0,0) size 131x14
+        RenderInline {OBJECT} at (0,0) size 131x14
+          RenderImage {OBJECT} at (13,0) size 131x24 [border: (12px solid #000000) none]
+    RenderBlock (floating) {DIV} at (0,0) size 144x24 [border: (12px solid #FF0000) none (12px solid #000000)]
+    RenderBlock {DIV} at (0,0) size 144x24 [border: (24px solid #FFFF00)]
+layer at (84,2782) size 144x24
+  RenderBlock (relative positioned) {DIV} at (0,0) size 144x24 [bgcolor=#000000]
+layer at (96,2782) size 120x24
+  RenderBlock (positioned) {DIV} at (12,0) size 120x24 [border: (12px solid #FFFF00)]
+    RenderBlock (floating) {SPAN} at (12,0) size 96x12 [border: none (12px solid #00000000) none (12px solid #00000000)]
+      RenderBlock (floating) {EM} at (12,0) size 72x24 [border: (12px solid #FFFF00) none (12px solid #000000) none]
+        RenderBlock {STRONG} at (0,12) size 72x0
+layer at (48,2842) size 740x10 scrollHeight 276
+  RenderBlock {DIV} at (12,204) size 740x10
+    RenderTable {TABLE} at (0,0) size 64x276
+      RenderTableSection {TBODY} at (0,0) size 0x276
+        RenderTableRow {TR} at (0,0) size 0x0
+          RenderTableCell {TD} at (0,0) size 64x276 [r=0 c=0 rs=1 cs=1]
+            RenderImage {IMG} at (0,152) size 64x64
+layer at (48,84) size 704x82
+  RenderBlock (relative positioned) zI: 2 {DIV} at (48,0) size 704x82 [color=#000000] [bgcolor=#FFFFFF] [border: (1px solid #000000)]
+    RenderBlock {H1} at (13,13) size 678x28
+      RenderText {TEXT} at (0,0) size 253x28
+        text run at (0,0) width 253: "Standards compliant?"
+    RenderBlock {P} at (13,41) size 678x28
+      RenderInline {A} at (0,0) size 221x28 [color=#0000FF]
+        RenderText {TEXT} at (0,0) size 221x28
+          text run at (0,0) width 221: "Take The Acid2 Test"
+      RenderText {TEXT} at (221,0) size 198x28
+        text run at (221,0) width 198: " and compare it to "
+      RenderInline {A} at (0,0) size 246x28 [color=#0000FF]
+        RenderText {TEXT} at (419,0) size 246x28
+          text run at (419,0) width 246: "the reference rendering"
+      RenderText {TEXT} at (665,0) size 7x28
+        text run at (665,0) width 7: "."
diff --git a/LayoutTests/http/tests/misc/acid2-pixel-expected.checksum b/LayoutTests/http/tests/misc/acid2-pixel-expected.checksum
new file mode 100644 (file)
index 0000000..3c78638
--- /dev/null
@@ -0,0 +1 @@
+7538bd1f7adf7184b578e4234c11d720
\ No newline at end of file
diff --git a/LayoutTests/http/tests/misc/acid2-pixel-expected.png b/LayoutTests/http/tests/misc/acid2-pixel-expected.png
new file mode 100644 (file)
index 0000000..6ad8a7d
Binary files /dev/null and b/LayoutTests/http/tests/misc/acid2-pixel-expected.png differ
diff --git a/LayoutTests/http/tests/misc/acid2-pixel-expected.txt b/LayoutTests/http/tests/misc/acid2-pixel-expected.txt
new file mode 100644 (file)
index 0000000..320c103
--- /dev/null
@@ -0,0 +1,72 @@
+layer at (0,0) size 800x600
+  RenderCanvas at (0,0) size 800x600
+layer at (0,0) size 800x298
+  RenderBlock {HTML} at (0,0) size 800x298 [color=#FF0000] [bgcolor=#FFFFFF]
+    RenderBody {BODY} at (0,0) size 800x298
+      RenderBlock {H2} at (72,0) size 656x72 [color=#000080]
+        RenderText {TEXT} at (12,46) size 129x24
+          text run at (12,46) width 129: "Hello World!"
+layer at (36,72) size 764x226
+  RenderBlock (relative positioned) {DIV} at (36,72) size 764x226 [border: (12px solid #00000000)]
+    RenderTable {TABLE} at (12,12) size 1x0
+      RenderTableSection {TBODY} at (0,0) size 0x0
+        RenderTableRow {TR} at (0,0) size 0x0
+          RenderTableCell {TD} at (0,0) size 1x0 [r=0 c=0 rs=1 cs=1]
+    RenderBlock {DIV} at (60,60) size 120x12 [bgcolor=#FF0000] [border: (12px solid #000000) none (12px solid #000000)]
+      RenderBlock {DIV} at (12,0) size 144x12
+        RenderText {TEXT} at (0,-1) size 90x12
+          text run at (0,-1) width 90: "                              "
+    RenderBlock (floating) {DIV} at (36,96) size 168x48 [border: none (12px solid #000000)]
+      RenderBlock {DIV} at (12,0) size 144x48 [bgcolor=#FFFF00]
+        RenderBlock {DIV} at (60,12) size 24x24 [bgcolor=#FF0000]
+          RenderBlock (generated) at (0,0) size 24x12 [border: none (12px solid #FFFF00) (12px solid #000000) (12px solid #FFFF00)]
+            RenderText at (0,0) size 0x0
+          RenderBlock (generated) at (0,12) size 24x12 [border: (12px solid #000000) (12px solid #FFFF00) none (12px solid #FFFF00)]
+            RenderText at (0,0) size 0x0
+    RenderBlock {DIV} at (87,75) size 590x0
+      RenderBlock {DIV} at (48,0) size 518x0
+    RenderBlock {DIV} at (48,132) size 668x24
+    RenderBlock {DIV} at (60,168) size 120x12 [bgcolor=#FFFF00] [border: (12px solid #000000) none (12px solid #000000)]
+      RenderInline {DIV} at (0,0) size 2x10
+        RenderText {TEXT} at (12,2) size 2x4
+          text run at (12,2) width 2: " "
+    RenderBlock {DIV} at (12,180) size 740x12
+      RenderBlock {DIV} at (60,0) size 96x12 [color=#FFA500] [bgcolor=#FFFF00] [border: none (24px solid #000000) none (24px solid #000000)]
+    RenderTable {UL} at (96,192) size 48x12 [bgcolor=#FF0000]
+      RenderTableSection at (0,0) size 0x12
+        RenderTableRow at (0,0) size 0x0
+          RenderTableCell {LI} at (0,12) size 12x0 [bgcolor=#000000] [r=0 c=0 rs=1 cs=1]
+          RenderTableCell at (12,0) size 12x12 [r=0 c=1 rs=1 cs=1]
+            RenderTable {LI} at (0,0) size 12x12 [bgcolor=#000000]
+          RenderTableCell {LI} at (24,12) size 12x0 [bgcolor=#000000] [r=0 c=2 rs=1 cs=1]
+          RenderTableCell at (36,0) size 12x12 [r=0 c=3 rs=1 cs=1]
+            RenderListItem {LI} at (0,0) size 12x12 [bgcolor=#000000]
+layer at (132,108) size 48x18
+  RenderBlock (positioned) {P} at (132,108) size 48x18 [bgcolor=#000000] [border: none (6px solid #FFFF00) none]
+layer at (132,144) size 48x15
+  RenderBlock (positioned) {P} at (132,144) size 48x15 [bgcolor=#000000] [border: none (3px solid #FF0000) none]
+layer at (108,120) size 96x12
+  RenderBlock (positioned) {BLOCKQUOTE} at (72,48) size 96x12 [border: none (24px solid #000000) none (24px solid #000000)]
+    RenderBlock (floating) {ADDRESS} at (24,0) size 48x12 [bgcolor=#FFFF00]
+layer at (84,144) size 144x24
+  RenderBlock (positioned) {DIV} at (48,72) size 144x24 [bgcolor=#FF0000]
+    RenderBlock {DIV} at (0,0) size 144x0
+      RenderInline {OBJECT} at (0,0) size 131x14
+        RenderInline {OBJECT} at (0,0) size 131x14
+          RenderImage {OBJECT} at (13,0) size 131x24 [border: (12px solid #000000) none]
+    RenderBlock (floating) {DIV} at (0,0) size 144x24 [border: (12px solid #FF0000) none (12px solid #000000)]
+    RenderBlock {DIV} at (0,0) size 144x24 [border: (24px solid #FFFF00)]
+layer at (84,216) size 144x24
+  RenderBlock (relative positioned) {DIV} at (0,0) size 144x24 [bgcolor=#000000]
+layer at (96,216) size 120x24
+  RenderBlock (positioned) {DIV} at (12,0) size 120x24 [border: (12px solid #FFFF00)]
+    RenderBlock (floating) {SPAN} at (12,0) size 96x12 [border: none (12px solid #00000000) none (12px solid #00000000)]
+      RenderBlock (floating) {EM} at (12,0) size 72x24 [border: (12px solid #FFFF00) none (12px solid #000000) none]
+        RenderBlock {STRONG} at (0,12) size 72x0
+layer at (48,276) size 740x10 scrollHeight 276
+  RenderBlock {DIV} at (12,204) size 740x10
+    RenderTable {TABLE} at (0,0) size 64x276
+      RenderTableSection {TBODY} at (0,0) size 0x276
+        RenderTableRow {TR} at (0,0) size 0x0
+          RenderTableCell {TD} at (0,0) size 64x276 [r=0 c=0 rs=1 cs=1]
+            RenderImage {IMG} at (0,152) size 64x64
diff --git a/LayoutTests/http/tests/misc/acid2-pixel.html b/LayoutTests/http/tests/misc/acid2-pixel.html
new file mode 100644 (file)
index 0000000..50fa398
--- /dev/null
@@ -0,0 +1,140 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+  <title>The Second Acid Test</title>
+  <style type="text/css">
+   /* section numbers refer to CSS2.1 */
+
+   /* page setup */
+   html { font: 12px sans-serif; margin: 0; padding: 0; overflow: hidden; /* hides scrollbars on viewport, see 11.1.1:3 */ background: white; color: red; }
+   body { margin: 0; padding: 0; }
+
+   /* introduction message */
+   .intro { font: 2em sans-serif; margin: 3.5em 2em; padding: 0.5em; border: solid thin; background: white; color: black; position: relative; z-index: -2; /* should cover the black and red bars that are fixed-positioned */ }
+   .intro * { font: inherit; margin: 0; padding: 0; }
+   .intro h1 { font-size: 1em; font-weight: bolder; margin: 0; padding: 0; }
+   .intro :link { color: blue; }
+   .intro :visited { color: purple; }
+
+   /* picture setup */
+   #top { margin: 0 3em 0; padding: 2em 0 0 .5em; text-align: left; font: 2em/24px sans-serif; color: navy; white-space: pre; } /* "Hello World!" text */
+   .picture { position: relative; border: 1em solid transparent; margin: 0 0 0 3em; } /* containing block for face */
+   .picture { background: red; } /* overriden by preferred stylesheet below */
+
+   /* top line of face (scalp): fixed positioning and min/max height/width */
+   .picture p { position: fixed; margin: 0; padding: 0; border: 0; top: 9em; left: 11em; width: 140%; max-width: 4em; height: 8px; min-height: 1em; max-height: 2mm; /* min-height overrides max-height, see 10.7 */ background: black; border-bottom: 0.5em yellow solid; }
+
+   /* bits that shouldn't be part of the top line (and shouldn't be visible at all): HTML parsing, "+" combinator, stacking order */
+   .picture p.bad { border-bottom: red solid; /* shouldn't matter, because the "p + table + p" rule below should match it too, thus hiding it */ }
+   .picture p + p { background: maroon; z-index: 1; } /* shouldn't match anything */
+   .picture p + table + p { margin-top: 3em; /* should end up under the absolutely positioned table below, and thus not be visible */ }
+
+   /* second line of face: attribute selectors, float positioning */
+   [class~=one].first.one { position: absolute; top: 0; margin: 36px 0 0 60px; padding: 0; border: black 2em; border-style: none solid; /* shrink wraps around float */ }
+   [class~=one][class~=first] [class=second\ two][class="second two"] { float: right; width: 48px; height: 12px; background: yellow; margin: 0; padding: 0; } /* only content of abs pos block */
+
+   /* third line of face: width and overflow */
+   .forehead { margin: 4em; width: 8em; border-left: solid black 1em; border-right: solid black 1em; background: red url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4%2F58BAAT%2FAf9jgNErAAAAAElFTkSuQmCC); /* that's a 1x1 yellow pixel PNG */ }
+   .forehead * { width: 12em; line-height: 1em; }
+
+   /* class selectors headache */
+   .two.error.two { background: maroon; } /* shouldn't match */
+   .forehead.error.forehead { background: red; } /* shouldn't match */
+   [class=second two] { background: red; } /* this should be ignored (invalid selector -- grammar says it only accepts IDENTs or STRINGs) */
+
+   /* fourth and fifth lines of face, with eyes: paint order test (see appendix E) and fixed backgrounds */
+   /* the two images are identical: 2-by-2 squares with the top left
+      and bottom right pixels set to yellow and the other two set to
+      transparent. Since they are offset by one pixel from each other,
+      the second one paints exactly over the transparent parts of the
+      first one, thus creating a solid yellow block. */
+   .eyes { position: absolute; top: 5em; left: 3em; margin: 0; padding: 0; background: red; }
+   #eyes-a { height: 0; line-height: 2em; text-align: right; } /* contents should paint top-most because they're inline */
+   #eyes-a object { display: inline; vertical-align: bottom; }
+   #eyes-a object[type] { width: 7.5em; height: 2.5em; } /* should have no effect since that object should fallback to being inline (height/width don't apply to inlines) */
+   #eyes-a object object object { border-right: solid 1em black; padding: 0 12px 0 11px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAAEUlEQVR42mP4%2F58BCv7%2FZwAAHfAD%2FabwPj4AAAAASUVORK5CYII%3D) fixed 1px 0; }
+   #eyes-b { float: left; width: 10em; height: 2em; background: fixed url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAAEUlEQVR42mP4%2F58BCv7%2FZwAAHfAD%2FabwPj4AAAAASUVORK5CYII%3D); border-left: solid 1em black; border-right: solid 1em red; } /* should paint in the middle layer because it is a float */
+   #eyes-c { display: block; background: red; border-left: 2em solid yellow; width: 10em; height: 2em; } /* should paint bottom most because it is a block */
+
+   /* lines six to nine, with nose: auto margins */
+   .nose { float: left; margin: -2em 2em -1em; border: solid 1em black; border-top: 0; min-height: 80%; height: 60%; max-height: 3em; /* percentages become auto (see 10.5 and 10.7) and intrinsic height is more than 3em, so 3em wins */ padding: 0; width: 12em; }
+   .nose > div { padding: 1em 1em 3em; height: 0; background: yellow; }
+   .nose div div { width: 2em; height: 2em; background: red; margin: auto; }
+   .nose :hover div { border-color: blue; }
+   .nose div:hover :before { border-bottom-color: inherit; }
+   .nose div:hover :after { border-top-color: inherit; }
+   .nose div div:before { display: block; border-style: none solid solid; border-color: red yellow black yellow; border-width: 1em; content: ''; height: 0; }
+   .nose div    :after { display: block; border-style: solid solid none; border-color: black yellow red yellow; border-width: 1em; content: ''; height: 0; }
+
+   /* between lines nine and ten: margin collapsing with 'float' and 'clear' */
+   .empty { margin: 6.25em; height: 10%; /* computes to auto which makes it empty per 8.3.1:7 (own margins) */ }
+   .empty div { margin: 0 2em -6em 4em; }
+   .smile { margin: 5em 3em; clear: both; /* clearance is negative (see 8.3.1 and 9.5.1) */ }
+
+   /* line ten and eleven: containing block for abs pos */
+   .smile div { margin-top: 0.25em; background: black; width: 12em; height: 2em; position: relative; bottom: -1em; }
+   .smile div div { position: absolute; top: 0; right: 1em; width: auto; height: 0; margin: 0; border: yellow solid 1em; }
+
+   /* smile (over lines ten and eleven): backgrounds behind borders, inheritance of 'float', nested floats, negative heights */
+   .smile div div span { display: inline; margin: -1em 0 0 0; border: solid 1em transparent; border-style: none solid; float: right; background: black; height: 1em; }
+   .smile div div span em { float: inherit; border-top: solid yellow 1em; border-bottom: solid black 1em; } /* zero-height block; width comes from (zero-height) child. */
+   .smile div div span em strong { width: 6em; display: block; margin-bottom: -1em; /* should have no effect, since parent has top&bottom borders, so this margin doesn't collapse */ }
+
+   /* line twelve: line-height */
+   .chin { margin: -4em 4em 0; width: 8em; line-height: 1em; border-left: solid 1em black; border-right: solid 1em black; background: yellow url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAAAAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D) /* 64x64 red square */ no-repeat fixed /* shouldn't be visible unless the smiley is moved to the top left of the viewport */; }
+   .chin div { display: inline; font: 2px/4px serif; }
+
+   /* line thirteen: cascade and selector tests */
+   .parser-container div { color: maroon; border: solid; color: orange; } /* setup */
+   div.parser-container * { border-color: black; /* overrides (implied) border-color on previous line */ } /* setup */
+   * div.parser { border-width: 0 2em; /* overrides (implied) declarations on earlier line */ } /* setup */
+
+   /* line thirteen continued: parser tests */
+   .parser { /* comment parsing test -- comment ends before the end of this line, the backslash should have no effect: \*/ }
+   .parser { margin: 0 5em 1em; padding: 0 1em; width: 2em; height: 1em; error: \}; background: yellow; } /* setup with parsing test */
+   * html .parser {  background: gray; }
+   \.parser { padding: 2em; }
+   .parser { m\argin: 2em; };
+   .parser { height: 3em; }
+   .parser { width: 200; }
+   .parser { border: 5em solid red ! error; }
+   .parser { background: red pink; }
+
+   /* line fourteen (last line of face): table */
+   ul { display: table; padding: 0; margin: -1em 7em 0; background: red; }
+   ul li { padding: 0; margin: 0; }
+   ul li.first-part { display: table-cell; height: 1em; width: 1em; background: black; }
+   ul li.second-part { display: table; height: 1em; width: 1em; background: black; } /* anonymous table cell wraps around this */
+   ul li.third-part { display: table-cell; height: 0.5em; /* gets stretched to fit row */ width: 1em; background: black; }
+   ul li.fourth-part { list-style: none; height: 1em; width: 1em; background: black; } /* anonymous table cell wraps around this */
+
+   /* bits that shouldn't appear: inline alignment in cells */
+   .image-height-test { height: 10px; overflow: hidden; font: 20em serif; } /* only the area between the top of the line box and the top of the image should be visible */
+   table { margin: 0; border-spacing: 0; }
+   td { padding: 0; }
+
+  </style>
+  <link rel="appendix stylesheet" href="data:text/css,.picture%20%7B%20background%3A%20none%3B%20%7D"> <!-- this stylesheet should be applied by default -->
+ </head>
+ <body>
+  <h2 id="top">Hello World!</h2>
+  <div class="picture">
+   <p><table><tr><td></table><p class="bad"> <!-- <table> closes <p> per the HTML4 DTD -->
+   <blockquote class="first one"><address class="second two"></address></blockquote>
+   <div class="forehead"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div></div>
+   <div class="eyes"><div id="eyes-a"><object data="data:application/x-unknown,ERROR"><object data="/404-dir-should-not-exist/" type="text/html"><object data="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAYCAYAAAFy7sgCAAAGsUlEQVRo3u2ZbWwcZxHHf3s%2B7LNbO3ZjXBtowprGODRX0qpNQCjmJKuVKhMl1P2AkCwhFOIKkCBSm9IXavGFKAixIAECwkmWo5MrhRI3Ub40IEwQgp6aIDg3Cd6eEqyIHEteah%2B1E69vhw%2BZtTaX8704ZzkKjHS6271nZ56ZZ%2BY%2F%2F%2BdZKF%2FCwYshx3EkkggLsD1v4FQkEZZYLCbAKyG9%2Ba9EIsG6hnUAf8x74K3aUC3j4%2BM54HcsR2oAIomwZOezkv%2FnSHpYNh%2BNCmAE7xv94zvFdd1bHsjMZmQkPSxAJP%2B%2FfuBLwK54PC7JZFKAVJmzXLBt2w%2FMvcDLwIb8QS8CeJ4nkURYIomw7J%2FYJ8BvSiiXptGGxWds2%2Fa9%2Bnaxh%2BYAD%2Bgt04NDgABTpQY2cvvSFLzw86gWeBVwC8SzlOSv2YeBPfmDBoBHgKmR9LBEEmHZfDTqGykqfkUE0nA78BzQGfSgUeP3wNeTXwXg7MwZDhw4UHL6ra2ti79%2FOvljgG8AZ4H64Lhm4MvAocxsRppGG%2FxcXihlwLIs6R%2FfKV2HO%2F26uA94pdDYUKUZUU7W1RQYXA98Gnhaf5%2FXWX0HeAHYoQonqa4sZSOsSWMCWeC9Yko%2BCQwBe4E6oNc0Tc91XTl1%2BaTsn9gnI%2Blhyc5nZWxsrBIkKSbl2tiic3tW53YDEwOKaoFBrcOfqKee53lG9xsPMjV784r%2F4lO%2FpPvyJ9iyZcuvFSaXK5XYeAZ4CDgGvB3MS4B54LQuWYPeuy4iRFsevsXqpuYoqVQKIH2bK1CuDQNo11o4XUzh%2FcDWYIe1LEtyuZx4niee54njOGKapgfsqlL%2Bl2OjEXg8nxrc1dJ0h3hbtL%2BGCtz7KPBF4CuBe9uB15VafE8hr9qylI3HgG8C2%2FK7VyHZoJj7MrBRm30qFotJMpkU27YlHo%2F7Ha5a%2BV%2FKRkSJ4KuKRLVLKapTjB1SzAVIjY2NSXY%2BKyPpYdk%2FsU9OXT4pruv6BdZbBQfKsVGnvWlIe1VB6VQO8JxC1vZYLCbZ%2BaxsPhpdZDyRRFhG0sPiOE6ldKBg2lRg4xF1YCDIIIKN7DGgD3gH%2BBXwejKZfPrs2tPs%2FvPN2bKuYR1nd7xLKBSSJeqoXKnERjPwNWAG%2BLn2rZuM%2B4Tpml6vaWlp4eLcxVusZq5lCgVgOVKJjRqdX86ffL4D5wIoZACnTpw4wRMdT96i%2FImOJxERAs4uVyqxUacF%2FPdiCj%2BjdRBRGFtwXVdG0sPSdbhTmkYbpH98p2RmM2JZlig1vl0GWo4NQ%2Fn%2Bs5pKRXfwjweaxy7TND3HcRZbfC6X8xVPVQlGy7WxVWlO5XRXFXm6EZmrQuSXYyPE3SiVoEhE6Wyr0u2rumO6zv%2B21AFdQAswC1wCMuUCXCmyWQus103Qg8qlDO0lxwOb%2Fl4FiK3AB3VS%2FuKKLtK%2FgbeAnwG%2FvUODuRw%2FFrR0H1UC75fwu8oJ%2FhFsW5VIG%2FBUgEIN6Y65O4AHu4Ap0zQ9y7LEcZyb9lRBUHQcRyzL8unZVBW5bFWAvAp%2BhDQ2g4F47dUYtlU6obXA54DnVdFLekjUGGifh4AFy7LEdV3xj3X9I66m0QZpGm2QrsOd0j%2B%2BU0bSw5KZzYjrun6HWlAd961i4FfCj0aN1Usau%2Bc1lmuXPFwvAEumUut7tQQvAb%2FXb%2FT0bCAej9cODg7yt%2Bm%2F8q2%2F7OUHZ76PnZ1k2p0mJzlykmPancbOTnL0whHs7CQfb%2B5mx2d3sH79%2BtCRI0c6FeaOr9ICrIQfLvA%2B8BGNXxi4R6HrisJVUWrxAVW2oMFf0Aczim8o3kV6enowDIPjF9%2Fk%2BMU3S3rrjzMMg56eHr%2BxP7qKFbASfojG6kpeDGs1tiW53RxwWT%2Bin5q8w4xpQK5evQpAR30H7ZH2khNvj7TTUd8BgD4rqmu1ZKX8qNeY%2BfHz4zlXDgT5E8tpCTUq7XSBC4Euv8227TV9fX1E73%2BYtvo27BmbS9cvFVTY3bSRFza9yOcf6Gfmygy7d%2B%2Fm%2FPnzF4DvrsBLhnJlJfwIKXxv1PheAE4qK6p4H9AGbNKTuhngBPBPXYRe4IemaT5kWZbR19fHNbmGnZ1k4r3U4glDR30Hm5qjbGjsImJEOHbsGHv27JFz5869o0eFq01Jq%2BmHAXwI6FFKagMTgHM7GzFDS%2BoeLSMv7zjzC9x4Y7gxFovVDAwMEI1GaWlpWSzRVCrFwYMH%2FXfxZ4AfAa8B%2F7lDaGg1%2FQgp43lfK0yqtRMuJa3ceKe5DfgYsCYAZ2ngD8CfAkzqTpW7xY%2F%2FSznyX%2FVeUb2kVmX4AAAAAElFTkSuQmCC">ERROR</object></object></object></div><div id="eyes-b"></div><div id="eyes-c"></div></div> <!-- that's a PNG with 8bit alpha containing two eyes -->
+   <div class="nose"><div><div></div></div></div>
+   <div class="empty"><div></div></div>
+   <div class="smile"><div><div><span><em><strong></strong></em></span></div></div></div>
+   <div class="chin"><div>&nbsp;</div></div>
+   <div class="parser-container"><div class="parser"><!-- -- --->ERROR<!- ------ ></div></div> <!-- two dashes is what delimits a comment, so the text "->ERROR<!-" earlier on this line is actually part of a comment -->
+   <ul>
+    <li class="first-part"></li>
+    <li class="second-part"></li>
+    <li class="third-part"></li>
+    <li class="fourth-part"></li>
+   </ul>
+   <div class="image-height-test"><table><tr><td><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAAAAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D" alt=""></td></tr></table></div>
+  </div>
+ </body>
+</html>
diff --git a/LayoutTests/http/tests/misc/acid2.html b/LayoutTests/http/tests/misc/acid2.html
new file mode 100644 (file)
index 0000000..489a831
--- /dev/null
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+  <title>The Second Acid Test</title>
+  <style type="text/css">
+   /* section numbers refer to CSS2.1 */
+
+   /* page setup */
+   html { font: 12px sans-serif; margin: 0; padding: 0; overflow: hidden; /* hides scrollbars on viewport, see 11.1.1:3 */ background: white; color: red; }
+   body { margin: 0; padding: 0; }
+
+   /* introduction message */
+   .intro { font: 2em sans-serif; margin: 3.5em 2em; padding: 0.5em; border: solid thin; background: white; color: black; position: relative; z-index: 2; /* should cover the black and red bars that are fixed-positioned */ }
+   .intro * { font: inherit; margin: 0; padding: 0; }
+   .intro h1 { font-size: 1em; font-weight: bolder; margin: 0; padding: 0; }
+   .intro :link { color: blue; }
+   .intro :visited { color: purple; }
+
+   /* picture setup */
+   #top { margin: 100em 3em 0; padding: 2em 0 0 .5em; text-align: left; font: 2em/24px sans-serif; color: navy; white-space: pre; } /* "Hello World!" text */
+   .picture { position: relative; border: 1em solid transparent; margin: 0 0 100em 3em; } /* containing block for face */
+   .picture { background: red; } /* overriden by preferred stylesheet below */
+
+   /* top line of face (scalp): fixed positioning and min/max height/width */
+   .picture p { position: fixed; margin: 0; padding: 0; border: 0; top: 9em; left: 11em; width: 140%; max-width: 4em; height: 8px; min-height: 1em; max-height: 2mm; /* min-height overrides max-height, see 10.7 */ background: black; border-bottom: 0.5em yellow solid; }
+
+   /* bits that shouldn't be part of the top line (and shouldn't be visible at all): HTML parsing, "+" combinator, stacking order */
+   .picture p.bad { border-bottom: red solid; /* shouldn't matter, because the "p + table + p" rule below should match it too, thus hiding it */ }
+   .picture p + p { background: maroon; z-index: 1; } /* shouldn't match anything */
+   .picture p + table + p { margin-top: 3em; /* should end up under the absolutely positioned table below, and thus not be visible */ }
+
+   /* second line of face: attribute selectors, float positioning */
+   [class~=one].first.one { position: absolute; top: 0; margin: 36px 0 0 60px; padding: 0; border: black 2em; border-style: none solid; /* shrink wraps around float */ }
+   [class~=one][class~=first] [class=second\ two][class="second two"] { float: right; width: 48px; height: 12px; background: yellow; margin: 0; padding: 0; } /* only content of abs pos block */
+
+   /* third line of face: width and overflow */
+   .forehead { margin: 4em; width: 8em; border-left: solid black 1em; border-right: solid black 1em; background: red url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mP4%2F58BAAT%2FAf9jgNErAAAAAElFTkSuQmCC); /* that's a 1x1 yellow pixel PNG */ }
+   .forehead * { width: 12em; line-height: 1em; }
+
+   /* class selectors headache */
+   .two.error.two { background: maroon; } /* shouldn't match */
+   .forehead.error.forehead { background: red; } /* shouldn't match */
+   [class=second two] { background: red; } /* this should be ignored (invalid selector -- grammar says it only accepts IDENTs or STRINGs) */
+
+   /* fourth and fifth lines of face, with eyes: paint order test (see appendix E) and fixed backgrounds */
+   /* the two images are identical: 2-by-2 squares with the top left
+      and bottom right pixels set to yellow and the other two set to
+      transparent. Since they are offset by one pixel from each other,
+      the second one paints exactly over the transparent parts of the
+      first one, thus creating a solid yellow block. */
+   .eyes { position: absolute; top: 5em; left: 3em; margin: 0; padding: 0; background: red; }
+   #eyes-a { height: 0; line-height: 2em; text-align: right; } /* contents should paint top-most because they're inline */
+   #eyes-a object { display: inline; vertical-align: bottom; }
+   #eyes-a object[type] { width: 7.5em; height: 2.5em; } /* should have no effect since that object should fallback to being inline (height/width don't apply to inlines) */
+   #eyes-a object object object { border-right: solid 1em black; padding: 0 12px 0 11px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAAEUlEQVR42mP4%2F58BCv7%2FZwAAHfAD%2FabwPj4AAAAASUVORK5CYII%3D) fixed 1px 0; }
+   #eyes-b { float: left; width: 10em; height: 2em; background: fixed url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAABnRSTlMAAAAAAABupgeRAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAAEUlEQVR42mP4%2F58BCv7%2FZwAAHfAD%2FabwPj4AAAAASUVORK5CYII%3D); border-left: solid 1em black; border-right: solid 1em red; } /* should paint in the middle layer because it is a float */
+   #eyes-c { display: block; background: red; border-left: 2em solid yellow; width: 10em; height: 2em; } /* should paint bottom most because it is a block */
+
+   /* lines six to nine, with nose: auto margins */
+   .nose { float: left; margin: -2em 2em -1em; border: solid 1em black; border-top: 0; min-height: 80%; height: 60%; max-height: 3em; /* percentages become auto (see 10.5 and 10.7) and intrinsic height is more than 3em, so 3em wins */ padding: 0; width: 12em; }
+   .nose > div { padding: 1em 1em 3em; height: 0; background: yellow; }
+   .nose div div { width: 2em; height: 2em; background: red; margin: auto; }
+   .nose :hover div { border-color: blue; }
+   .nose div:hover :before { border-bottom-color: inherit; }
+   .nose div:hover :after { border-top-color: inherit; }
+   .nose div div:before { display: block; border-style: none solid solid; border-color: red yellow black yellow; border-width: 1em; content: ''; height: 0; }
+   .nose div    :after { display: block; border-style: solid solid none; border-color: black yellow red yellow; border-width: 1em; content: ''; height: 0; }
+
+   /* between lines nine and ten: margin collapsing with 'float' and 'clear' */
+   .empty { margin: 6.25em; height: 10%; /* computes to auto which makes it empty per 8.3.1:7 (own margins) */ }
+   .empty div { margin: 0 2em -6em 4em; }
+   .smile { margin: 5em 3em; clear: both; /* clearance is negative (see 8.3.1 and 9.5.1) */ }
+
+   /* line ten and eleven: containing block for abs pos */
+   .smile div { margin-top: 0.25em; background: black; width: 12em; height: 2em; position: relative; bottom: -1em; }
+   .smile div div { position: absolute; top: 0; right: 1em; width: auto; height: 0; margin: 0; border: yellow solid 1em; }
+
+   /* smile (over lines ten and eleven): backgrounds behind borders, inheritance of 'float', nested floats, negative heights */
+   .smile div div span { display: inline; margin: -1em 0 0 0; border: solid 1em transparent; border-style: none solid; float: right; background: black; height: 1em; }
+   .smile div div span em { float: inherit; border-top: solid yellow 1em; border-bottom: solid black 1em; } /* zero-height block; width comes from (zero-height) child. */
+   .smile div div span em strong { width: 6em; display: block; margin-bottom: -1em; /* should have no effect, since parent has top&bottom borders, so this margin doesn't collapse */ }
+
+   /* line twelve: line-height */
+   .chin { margin: -4em 4em 0; width: 8em; line-height: 1em; border-left: solid 1em black; border-right: solid 1em black; background: yellow url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAAAAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D) /* 64x64 red square */ no-repeat fixed /* shouldn't be visible unless the smiley is moved to the top left of the viewport */; }
+   .chin div { display: inline; font: 2px/4px serif; }
+
+   /* line thirteen: cascade and selector tests */
+   .parser-container div { color: maroon; border: solid; color: orange; } /* setup */
+   div.parser-container * { border-color: black; /* overrides (implied) border-color on previous line */ } /* setup */
+   * div.parser { border-width: 0 2em; /* overrides (implied) declarations on earlier line */ } /* setup */
+
+   /* line thirteen continued: parser tests */
+   .parser { /* comment parsing test -- comment ends before the end of this line, the backslash should have no effect: \*/ }
+   .parser { margin: 0 5em 1em; padding: 0 1em; width: 2em; height: 1em; error: \}; background: yellow; } /* setup with parsing test */
+   * html .parser {  background: gray; }
+   \.parser { padding: 2em; }
+   .parser { m\argin: 2em; };
+   .parser { height: 3em; }
+   .parser { width: 200; }
+   .parser { border: 5em solid red ! error; }
+   .parser { background: red pink; }
+
+   /* line fourteen (last line of face): table */
+   ul { display: table; padding: 0; margin: -1em 7em 0; background: red; }
+   ul li { padding: 0; margin: 0; }
+   ul li.first-part { display: table-cell; height: 1em; width: 1em; background: black; }
+   ul li.second-part { display: table; height: 1em; width: 1em; background: black; } /* anonymous table cell wraps around this */
+   ul li.third-part { display: table-cell; height: 0.5em; /* gets stretched to fit row */ width: 1em; background: black; }
+   ul li.fourth-part { list-style: none; height: 1em; width: 1em; background: black; } /* anonymous table cell wraps around this */
+
+   /* bits that shouldn't appear: inline alignment in cells */
+   .image-height-test { height: 10px; overflow: hidden; font: 20em serif; } /* only the area between the top of the line box and the top of the image should be visible */
+   table { margin: 0; border-spacing: 0; }
+   td { padding: 0; }
+
+  </style>
+  <link rel="appendix stylesheet" href="data:text/css,.picture%20%7B%20background%3A%20none%3B%20%7D"> <!-- this stylesheet should be applied by default -->
+ </head>
+ <body>
+  <div class="intro">
+   <h1>Standards compliant?</h1>
+   <p><a href="#top">Take The Acid2 Test</a> and compare it to <a
+   href="reference.html">the reference rendering</a>.</p>
+  </div>
+  <h2 id="top">Hello World!</h2>
+  <div class="picture">
+   <p><table><tr><td></table><p class="bad"> <!-- <table> closes <p> per the HTML4 DTD -->
+   <blockquote class="first one"><address class="second two"></address></blockquote>
+   <div class="forehead"><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div></div>
+   <div class="eyes"><div id="eyes-a"><object data="data:application/x-unknown,ERROR"><object data="/404-dir-should-not-exist/" type="text/html"><object data="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAYCAYAAAFy7sgCAAAGsUlEQVRo3u2ZbWwcZxHHf3s%2B7LNbO3ZjXBtowprGODRX0qpNQCjmJKuVKhMl1P2AkCwhFOIKkCBSm9IXavGFKAixIAECwkmWo5MrhRI3Ub40IEwQgp6aIDg3Cd6eEqyIHEteah%2B1E69vhw%2BZtTaX8704ZzkKjHS6271nZ56ZZ%2BY%2F%2F%2BdZKF%2FCwYshx3EkkggLsD1v4FQkEZZYLCbAKyG9%2Ba9EIsG6hnUAf8x74K3aUC3j4%2BM54HcsR2oAIomwZOezkv%2FnSHpYNh%2BNCmAE7xv94zvFdd1bHsjMZmQkPSxAJP%2B%2FfuBLwK54PC7JZFKAVJmzXLBt2w%2FMvcDLwIb8QS8CeJ4nkURYIomw7J%2FYJ8BvSiiXptGGxWds2%2Fa9%2Bnaxh%2BYAD%2Bgt04NDgABTpQY2cvvSFLzw86gWeBVwC8SzlOSv2YeBPfmDBoBHgKmR9LBEEmHZfDTqGykqfkUE0nA78BzQGfSgUeP3wNeTXwXg7MwZDhw4UHL6ra2ti79%2FOvljgG8AZ4H64Lhm4MvAocxsRppGG%2FxcXihlwLIs6R%2FfKV2HO%2F26uA94pdDYUKUZUU7W1RQYXA98Gnhaf5%2FXWX0HeAHYoQonqa4sZSOsSWMCWeC9Yko%2BCQwBe4E6oNc0Tc91XTl1%2BaTsn9gnI%2Blhyc5nZWxsrBIkKSbl2tiic3tW53YDEwOKaoFBrcOfqKee53lG9xsPMjV784r%2F4lO%2FpPvyJ9iyZcuvFSaXK5XYeAZ4CDgGvB3MS4B54LQuWYPeuy4iRFsevsXqpuYoqVQKIH2bK1CuDQNo11o4XUzh%2FcDWYIe1LEtyuZx4niee54njOGKapgfsqlL%2Bl2OjEXg8nxrc1dJ0h3hbtL%2BGCtz7KPBF4CuBe9uB15VafE8hr9qylI3HgG8C2%2FK7VyHZoJj7MrBRm30qFotJMpkU27YlHo%2F7Ha5a%2BV%2FKRkSJ4KuKRLVLKapTjB1SzAVIjY2NSXY%2BKyPpYdk%2FsU9OXT4pruv6BdZbBQfKsVGnvWlIe1VB6VQO8JxC1vZYLCbZ%2BaxsPhpdZDyRRFhG0sPiOE6ldKBg2lRg4xF1YCDIIIKN7DGgD3gH%2BBXwejKZfPrs2tPs%2FvPN2bKuYR1nd7xLKBSSJeqoXKnERjPwNWAG%2BLn2rZuM%2B4Tpml6vaWlp4eLcxVusZq5lCgVgOVKJjRqdX86ffL4D5wIoZACnTpw4wRMdT96i%2FImOJxERAs4uVyqxUacF%2FPdiCj%2BjdRBRGFtwXVdG0sPSdbhTmkYbpH98p2RmM2JZlig1vl0GWo4NQ%2Fn%2Bs5pKRXfwjweaxy7TND3HcRZbfC6X8xVPVQlGy7WxVWlO5XRXFXm6EZmrQuSXYyPE3SiVoEhE6Wyr0u2rumO6zv%2B21AFdQAswC1wCMuUCXCmyWQus103Qg8qlDO0lxwOb%2Fl4FiK3AB3VS%2FuKKLtK%2FgbeAnwG%2FvUODuRw%2FFrR0H1UC75fwu8oJ%2FhFsW5VIG%2FBUgEIN6Y65O4AHu4Ap0zQ9y7LEcZyb9lRBUHQcRyzL8unZVBW5bFWAvAp%2BhDQ2g4F47dUYtlU6obXA54DnVdFLekjUGGifh4AFy7LEdV3xj3X9I66m0QZpGm2QrsOd0j%2B%2BU0bSw5KZzYjrun6HWlAd961i4FfCj0aN1Usau%2Bc1lmuXPFwvAEumUut7tQQvAb%2FXb%2FT0bCAej9cODg7yt%2Bm%2F8q2%2F7OUHZ76PnZ1k2p0mJzlykmPancbOTnL0whHs7CQfb%2B5mx2d3sH79%2BtCRI0c6FeaOr9ICrIQfLvA%2B8BGNXxi4R6HrisJVUWrxAVW2oMFf0Aczim8o3kV6enowDIPjF9%2Fk%2BMU3S3rrjzMMg56eHr%2BxP7qKFbASfojG6kpeDGs1tiW53RxwWT%2Bin5q8w4xpQK5evQpAR30H7ZH2khNvj7TTUd8BgD4rqmu1ZKX8qNeY%2BfHz4zlXDgT5E8tpCTUq7XSBC4Euv8227TV9fX1E73%2BYtvo27BmbS9cvFVTY3bSRFza9yOcf6Gfmygy7d%2B%2Fm%2FPnzF4DvrsBLhnJlJfwIKXxv1PheAE4qK6p4H9AGbNKTuhngBPBPXYRe4IemaT5kWZbR19fHNbmGnZ1k4r3U4glDR30Hm5qjbGjsImJEOHbsGHv27JFz5869o0eFq01Jq%2BmHAXwI6FFKagMTgHM7GzFDS%2BoeLSMv7zjzC9x4Y7gxFovVDAwMEI1GaWlpWSzRVCrFwYMH%2FXfxZ4AfAa8B%2F7lDaGg1%2FQgp43lfK0yqtRMuJa3ceKe5DfgYsCYAZ2ngD8CfAkzqTpW7xY%2F%2FSznyX%2FVeUb2kVmX4AAAAAElFTkSuQmCC">ERROR</object></object></object></div><div id="eyes-b"></div><div id="eyes-c"></div></div> <!-- that's a PNG with 8bit alpha containing two eyes -->
+   <div class="nose"><div><div></div></div></div>
+   <div class="empty"><div></div></div>
+   <div class="smile"><div><div><span><em><strong></strong></em></span></div></div></div>
+   <div class="chin"><div>&nbsp;</div></div>
+   <div class="parser-container"><div class="parser"><!-- -- --->ERROR<!- ------ ></div></div> <!-- two dashes is what delimits a comment, so the text "->ERROR<!-" earlier on this line is actually part of a comment -->
+   <ul>
+    <li class="first-part"></li>
+    <li class="second-part"></li>
+    <li class="third-part"></li>
+    <li class="fourth-part"></li>
+   </ul>
+   <div class="image-height-test"><table><tr><td><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAFSDNYfAAAAaklEQVR42u3XQQrAIAwAQeP%2F%2F6wf8CJBJTK9lnQ7FpHGaOurt1I34nfH9pMMZAZ8BwMGEvvh%2BBsJCAgICLwIOA8EBAQEBAQEBAQEBK79H5RfIQAAAAAAAAAAAAAAAAAAAAAAAAAAAID%2FABMSqAfj%2FsLmvAAAAABJRU5ErkJggg%3D%3D" alt=""></td></tr></table></div>
+  </div>
+ </body>
+</html>
index af4a3008309e937f777218acfb79f3aea9b4767d..58f7ce622402a78e1933550e1392a994e9a58657 100644 (file)
@@ -1,3 +1,19 @@
+2006-03-31  Trey Matteson  <trey@usa.net>
+
+        Reviewed by Maciej, landed by ap.
+
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=7739
+        REGRESSION: Assertion failure loading acid2 test in -[WebCoreFrameBridge installInFrame:]
+
+        Tests: http/tests/misc/acid2.html, http/tests/misc/acid2-pixel.html
+
+        The gist of this change is that we must cancel the load from the Webkit side when we
+        realize we're switching to the fallback content.  This is somewhat a temp workaround
+        since control of loading will be moving to WebCore.
+
+        * WebView/WebMainResourceLoader.m:
+        (-[WebMainResourceLoader continueAfterContentPolicy:response:]):
+
 2006-03-30  Justin Garcia  <justin.garcia@apple.com>
 
         Reviewed by darin
index 8dd1c6dd34256436d2075d313a830e2f77d2f280..ed4b65d829bb91f3f4bfde0ab5daa99ce55457f1 100644 (file)
         if (status < 200 || status >= 300) {
             // Handle <object> fallback for error cases.
             [[[dataSource webFrame] _bridge] handleFallbackContent];
+            [self cancel];
         }
     }
 
-    [super didReceiveResponse:r];
+    // we may have cancelled this load as part of switching to fallback content
+    if (!reachedTerminalState) {
+        [super didReceiveResponse:r];
+    }
 
     if (![dataSource _isStopping] && ([URL _webkit_shouldLoadAsEmptyDocument] || [WebView _representationExistsForURLScheme:[URL scheme]])) {
         [self didFinishLoading];