Unreviewed, rolling out r142015.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 9 Mar 2013 01:37:10 +0000 (01:37 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 9 Mar 2013 01:37:10 +0000 (01:37 +0000)
http://trac.webkit.org/changeset/142015
https://bugs.webkit.org/show_bug.cgi?id=111904

The change caused 2 major regressions (bug 111091 and bug
111595) and Pravin doesn't have time to investigate them
(Requested by jchaffraix on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2013-03-08

Source/WebCore:

* dom/Node.cpp:
(WebCore::Node::diff):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::childBecameNonInline):
(WebCore):
* rendering/RenderBlock.h:
(RenderBlock):
* rendering/RenderBoxModelObject.h:
(WebCore::RenderBoxModelObject::childBecameNonInline):
(RenderBoxModelObject):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::childBecameNonInline):
(WebCore):
* rendering/RenderInline.h:
(RenderInline):
* rendering/RenderObject.cpp:
(WebCore):
(WebCore::RenderObject::handleDynamicFloatPositionChange):
(WebCore::RenderObject::styleWillChange):
(WebCore::RenderObject::styleDidChange):
* rendering/RenderObject.h:
(RenderObject):

LayoutTests:

* fast/css/first-letter-removed-added-expected.txt:
* fast/dynamic/absolute-positioned-to-static-positioned-expected.txt: Removed.
* fast/dynamic/absolute-positioned-to-static-positioned.html: Removed.
* fast/dynamic/floating-to-non-floating-expected.txt: Removed.
* fast/dynamic/floating-to-non-floating.html: Removed.
* fast/dynamic/non-floating-to-floating-expected.txt: Removed.
* fast/dynamic/non-floating-to-floating.html: Removed.
* fast/dynamic/resources/helper-bug91665.js: Removed.
* fast/dynamic/resources/style-bug91665.css: Removed.
* fast/dynamic/static-positioned-to-absolute-positioned-expected.txt: Removed.
* fast/dynamic/static-positioned-to-absolute-positioned.html: Removed.
* fullscreen/full-screen-fixed-pos-parent-expected.txt:
* platform/chromium-mac/fast/repaint/absolute-position-change-containing-block-expected.png:
* platform/chromium-mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png:
* platform/chromium-win/fast/dynamic/002-expected.txt:
* platform/chromium/fast/dynamic/002-expected.txt:
* platform/chromium/fast/repaint/absolute-position-change-containing-block-expected.png: Removed.
* platform/chromium/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png: Removed.
* platform/mac/fast/dynamic/002-expected.txt:
* platform/mac/fast/repaint/absolute-position-change-containing-block-expected.png: Removed.
* platform/mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png: Removed.

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

31 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/css/first-letter-removed-added-expected.txt
LayoutTests/fast/dynamic/absolute-positioned-to-static-positioned-expected.txt [deleted file]
LayoutTests/fast/dynamic/absolute-positioned-to-static-positioned.html [deleted file]
LayoutTests/fast/dynamic/floating-to-non-floating-expected.txt [deleted file]
LayoutTests/fast/dynamic/floating-to-non-floating.html [deleted file]
LayoutTests/fast/dynamic/non-floating-to-floating-expected.txt [deleted file]
LayoutTests/fast/dynamic/non-floating-to-floating.html [deleted file]
LayoutTests/fast/dynamic/resources/helper-bug91665.js [deleted file]
LayoutTests/fast/dynamic/resources/style-bug91665.css [deleted file]
LayoutTests/fast/dynamic/static-positioned-to-absolute-positioned-expected.txt [deleted file]
LayoutTests/fast/dynamic/static-positioned-to-absolute-positioned.html [deleted file]
LayoutTests/fullscreen/full-screen-fixed-pos-parent-expected.txt
LayoutTests/platform/chromium-mac/fast/repaint/absolute-position-change-containing-block-expected.png
LayoutTests/platform/chromium-mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png
LayoutTests/platform/chromium-win/fast/dynamic/002-expected.txt
LayoutTests/platform/chromium/fast/dynamic/002-expected.txt
LayoutTests/platform/chromium/fast/repaint/absolute-position-change-containing-block-expected.png [deleted file]
LayoutTests/platform/chromium/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png [deleted file]
LayoutTests/platform/mac/fast/dynamic/002-expected.txt
LayoutTests/platform/mac/fast/repaint/absolute-position-change-containing-block-expected.png [deleted file]
LayoutTests/platform/mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png [deleted file]
Source/WebCore/ChangeLog
Source/WebCore/dom/Node.cpp
Source/WebCore/rendering/RenderBlock.cpp
Source/WebCore/rendering/RenderBlock.h
Source/WebCore/rendering/RenderBoxModelObject.h
Source/WebCore/rendering/RenderInline.cpp
Source/WebCore/rendering/RenderInline.h
Source/WebCore/rendering/RenderObject.cpp
Source/WebCore/rendering/RenderObject.h

index f6a6736..fa567a3 100644 (file)
@@ -1,3 +1,35 @@
+2013-03-08  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r142015.
+        http://trac.webkit.org/changeset/142015
+        https://bugs.webkit.org/show_bug.cgi?id=111904
+
+        The change caused 2 major regressions (bug 111091 and bug
+        111595) and Pravin doesn't have time to investigate them
+        (Requested by jchaffraix on #webkit).
+
+        * fast/css/first-letter-removed-added-expected.txt:
+        * fast/dynamic/absolute-positioned-to-static-positioned-expected.txt: Removed.
+        * fast/dynamic/absolute-positioned-to-static-positioned.html: Removed.
+        * fast/dynamic/floating-to-non-floating-expected.txt: Removed.
+        * fast/dynamic/floating-to-non-floating.html: Removed.
+        * fast/dynamic/non-floating-to-floating-expected.txt: Removed.
+        * fast/dynamic/non-floating-to-floating.html: Removed.
+        * fast/dynamic/resources/helper-bug91665.js: Removed.
+        * fast/dynamic/resources/style-bug91665.css: Removed.
+        * fast/dynamic/static-positioned-to-absolute-positioned-expected.txt: Removed.
+        * fast/dynamic/static-positioned-to-absolute-positioned.html: Removed.
+        * fullscreen/full-screen-fixed-pos-parent-expected.txt:
+        * platform/chromium-mac/fast/repaint/absolute-position-change-containing-block-expected.png:
+        * platform/chromium-mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png:
+        * platform/chromium-win/fast/dynamic/002-expected.txt:
+        * platform/chromium/fast/dynamic/002-expected.txt:
+        * platform/chromium/fast/repaint/absolute-position-change-containing-block-expected.png: Removed.
+        * platform/chromium/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png: Removed.
+        * platform/mac/fast/dynamic/002-expected.txt:
+        * platform/mac/fast/repaint/absolute-position-change-containing-block-expected.png: Removed.
+        * platform/mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png: Removed.
+
 2013-03-08  Rafael Weinstein  <rafaelw@chromium.org>
 
         [HTMLTemplateElement] processTemplateEndTag() needs to check for template in html scope
index 62ca062..1f84e32 100644 (file)
@@ -34,7 +34,7 @@ PASS document.getElementById('test3').offsetWidth == document.getElementById('re
 FAIL document.getElementById('test4').offsetWidth == document.getElementById('ref4').offsetWidth should be true. Was false.
 PASS document.getElementById('test5').offsetWidth == document.getElementById('ref5').offsetWidth is true
 PASS document.getElementById('test6').offsetWidth == document.getElementById('ref6').offsetWidth is true
-PASS document.getElementById('test7').offsetWidth == document.getElementById('ref7').offsetWidth is true
+FAIL document.getElementById('test7').offsetWidth == document.getElementById('ref7').offsetWidth should be true. Was false.
 PASS document.getElementById('test8').offsetWidth == document.getElementById('ref8').offsetWidth is true
 PASS successfullyParsed is true
 
diff --git a/LayoutTests/fast/dynamic/absolute-positioned-to-static-positioned-expected.txt b/LayoutTests/fast/dynamic/absolute-positioned-to-static-positioned-expected.txt
deleted file mode 100644 (file)
index 49272bb..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-Testcase for Bug #91665.
-This testcase checks if an element is properly placed with respect to its previous sibling when its position changes from absolute to static for various combinations of display property toggeled between inline-block and block for both testElement and its previous sibling.
-
-Case 1: <Block Element><Positioned Block Element> To <Block Element><Block Element>
-
-PASS
-Case 2: <Block Element><Positioned Block Element> To <Block Element><Inline Element>
-
-PASS
-Case 3: <Block Element><Positioned Block Element> To <Inline Element><Block Element>
-
-PASS
-Case 4: <Block Element><Positioned Block Element> To <Inline Element><Inline Element>
-
-PASS
-Case 5: <Block Element><Positioned Inline Element> To <Block Element><Block Element>
-
-PASS
-Case 6: <Block Element><Positioned Block Element> To <Inline Element><Block Element>
-
-PASS
-Case 7: <Block Element><Positioned Inline Element> To <Inline Element><Inline Element>
-
-PASS
-Case 8: <Inline Element><Positioned Block Element> To <Block Element><Inline Element>
-
-PASS
-Case 9: <Inline Element><Positioned Block Element> To <Inline Element><Block Element>
-
-PASS
-Case 10: <Inline Element><Positioned Block Element> To <Inline Element><Inline Element>
-
-PASS
-Case 11: <Inline Element><Positioned Block Element> To <Block Element><Inline Element>
-
-PASS
-Case 12: <Inline Element><Positioned Inline Element> To <Inline Element><Block Element>
-
-PASS
-Case 13: <Inline Element><Positioned Inline Element> To <Inline Element><Inline Element>
-
-PASS
-Case 14: <Block Element><Positioned Table Element> To <Block Element><Table Element>
-
-PASS
-Case 15: <Block Element><Positioned Table Element> To <Block Element><Inline-Table Element>
-
-PASS
-Case 16: <Block Element><Positioned Table Element> To <Inline Element><Table Element>
-
-PASS
-Case 17: <Block Element><Positioned Table Element> To <Inline Element><Inline-Table Element>
-
-PASS
-Case 18: <Block Element><Positioned Inline-Table Element> To <Block Element><Inline-Table Element>
-
-PASS
-Case 19: <Block Element><Positioned Inline Element> To <Block Element><Table Element>
-
-PASS
-Case 20: <Block Element><Positioned Inline-Table Element> To <Inline Element><Inline-Table Element>
-
-PASS
-Case 21: <Inline Element><Positioned Table Element> To <Inline Element><Inline-Table Element>
-
-PASS
-Case 22: <Inline Element><Positioned Table Element> To <Inline Element><Table Element>
-
-PASS
-Case 23: <Inline Element><Positioned Block Element> To <Inline Element><Inline-Table Element>
-
-PASS
-Case 24: <Inline Element><Positioned Inline-Table Element> To <Block Element><Inline-Table Element>
-
-PASS
-Case 25: <Inline Element><Positioned Inline-Table Element> To <Inline Element><Table Element>
-
-PASS
-Case 26: <Inline Element><Positioned Inline-Table Element> To <Inline Element><Inline-Table Element>
-
-PASS
-
diff --git a/LayoutTests/fast/dynamic/absolute-positioned-to-static-positioned.html b/LayoutTests/fast/dynamic/absolute-positioned-to-static-positioned.html
deleted file mode 100644 (file)
index 4a501a9..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<link rel="stylesheet" type="text/css" href="resources/style-bug91665.css">
-<script src="../../resources/check-layout.js"></script>
-<script src="resources/helper-bug91665.js"></script>
-</head>
-<body onload="runTest('.position-static');">
-<h4>Testcase for<a href="https://bugs.webkit.org/show_bug.cgi?id=91665"> Bug #91665.</a><br>This testcase checks
-if an element is properly placed with respect to its previous sibling when its position changes from absolute to static for
-various combinations of display property toggeled between inline-block and block for both testElement and its previous sibling.
-</h4>
-<p><b>Case 1</b>: &lt;Block Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement" data-offset-y="20"></div>
-</div>
-<p><b>Case 2</b>: &lt;Block Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement" makeInline=true data-offset-y="20"></div>
-</div>
-<p><b>Case 3</b>: &lt;Block Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement" data-offset-y="23"></div>
-</div>
-<p><b>Case 4</b>: &lt;Block Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement" makeInline=true data-offset-y="0"></div>
-</div>
-<p><b>Case 5</b>: &lt;Block Element&gt;&lt;Positioned Inline Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement inline" data-offset-y="20"></div>
-</div>
-<p><b>Case 6</b>: &lt;Block Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement inline" makeBlock=true data-offset-y="23"></div>
-</div>
-<p><b>Case 7</b>: &lt;Block Element&gt;&lt;Positioned Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement inline" data-offset-y="0"></div>
-</div>
-<p><b>Case 8</b>: &lt;Inline Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><div class="testElement" makeInline=true data-offset-y="20"></div>
-</div>
-<p><b>Case 9</b>: &lt;Inline Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement" data-offset-y="23"></div>
-</div>
-<p><b>Case 10</b>: &lt;Inline Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement" makeInline=true data-offset-y="0"></div>
-</div>
-<p><b>Case 11</b>: &lt;Inline Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><div class="testElement inline" data-offset-y="20"></div>
-</div>
-<p><b>Case 12</b>: &lt;Inline Element&gt;&lt;Positioned Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement inline" makeBlock=true data-offset-y="23"></div>
-</div>
-<p><b>Case 13</b>: &lt;Inline Element&gt;&lt;Positioned Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement inline" data-offset-y="0"></div>
-</div>
-<p><b>Case 14</b>: &lt;Block Element&gt;&lt;Positioned Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement" data-offset-y="20"></table>
-</div>
-<p><b>Case 15</b>: &lt;Block Element&gt;&lt;Positioned Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement" makeInline=true data-offset-y="20"></table>
-</div>
-<p><b>Case 16</b>: &lt;Block Element&gt;&lt;Positioned Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement" data-offset-y="23"></table>
-</div>
-<p><b>Case 17</b>: &lt;Block Element&gt;&lt;Positioned Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table  class="testElement" makeInline=true data-offset-y="0"></table>
-</div>
-<p><b>Case 18</b>: &lt;Block Element&gt;&lt;Positioned Inline-Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement inline" data-offset-y="20"></table>
-</div>
-<p><b>Case 19</b>: &lt;Block Element&gt;&lt;Positioned Inline Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement inline" makeBlock=true data-offset-y="23"></table>
-</div>
-<p><b>Case 20</b>: &lt;Block Element&gt;&lt;Positioned Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement inline" data-offset-y="0"></table>
-</div>
-<p><b>Case 21</b>: &lt;Inline Element&gt;&lt;Positioned Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><table class="testElement" makeInline=true data-offset-y="20"></table>
-</div>
-<p><b>Case 22</b>: &lt;Inline Element&gt;&lt;Positioned Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement" data-offset-y="23"></table>
-</div>
-<p><b>Case 23</b>: &lt;Inline Element&gt;&lt;Positioned Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement" makeInline=true data-offset-y="0"></table>
-</div>
-<p><b>Case 24</b>: &lt;Inline Element&gt;&lt;Positioned Inline-Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><table class="testElement inline" data-offset-y="20"></table>
-</div>
-<p><b>Case 25</b>: &lt;Inline Element&gt;&lt;Positioned Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement inline" makeBlock=true data-offset-y="23"></table>
-</div>
-<p><b>Case 26</b>: &lt;Inline Element&gt;&lt;Positioned Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement inline" data-offset-y="0"></table>
-</div>
-</body>
-</html>
diff --git a/LayoutTests/fast/dynamic/floating-to-non-floating-expected.txt b/LayoutTests/fast/dynamic/floating-to-non-floating-expected.txt
deleted file mode 100644 (file)
index fae3cc2..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-Testcase for Bug #91665.
-This testcase checks if an element is properly placed with respect to its previous sibling when float:left changes to float:none for various combinations of display property toggeled between inline-block and block for both testElement and its previous sibling.
-
-Case 1: <Block Element><Floating Block Element> To <Block Element><Block Element>
-
-PASS
-Case 2: <Block Element><Floating Block Element> To <Block Element><Inline Element>
-
-PASS
-Case 3: <Block Element><Floating Block Element> To <Inline Element><Block Element>
-
-PASS
-Case 4: <Block Element><Floating Block Element> To <Inline Element><Inline Element>
-
-PASS
-Case 5: <Block Element><Floating Inline Element> To <Block Element><Block Element>
-
-PASS
-Case 6: <Block Element><Floating Block Element> To <Inline Element><Block Element>
-
-PASS
-Case 7: <Block Element><Floating Inline Element> To <Inline Element><Inline Element>
-
-PASS
-Case 8: <Inline Element><Floating Block Element> To <Block Element><Inline Element>
-
-PASS
-Case 9: <Inline Element><Floating Block Element> To <Inline Element><Block Element>
-
-PASS
-Case 10: <Inline Element><Floating Block Element> To <Inline Element><Inline Element>
-
-PASS
-Case 11: <Inline Element><Floating Block Element> To <Block Element><Inline Element>
-
-PASS
-Case 12: <Inline Element><Floating Inline Element> To <Inline Element><Block Element>
-
-PASS
-Case 13: <Inline Element><Floating Inline Element> To <Inline Element><Inline Element>
-
-PASS
-Case 14: <Block Element><Floating Table Element> To <Block Element><Table Element>
-
-PASS
-Case 15: <Block Element><Floating Table Element> To <Block Element><Inline-Table Element>
-
-PASS
-Case 16: <Block Element><Floating Table Element> To <Inline Element><Table Element>
-
-PASS
-Case 17: <Block Element><Floating Table Element> To <Inline Element><Inline-Table Element>
-
-PASS
-Case 18: <Block Element><Floating Inline-Table Element> To <Block Element><Inline-Table Element>
-
-PASS
-Case 19: <Block Element><Floating Inline Element> To <Block Element><Table Element>
-
-PASS
-Case 20: <Block Element><Floating Inline-Table Element> To <Inline Element><Inline-Table Element>
-
-PASS
-Case 21: <Inline Element><Floating Table Element> To <Inline Element><Inline-Table Element>
-
-PASS
-Case 22: <Inline Element><Floating Table Element> To <Inline Element><Table Element>
-
-PASS
-Case 23: <Inline Element><Floating Block Element> To <Inline Element><Inline-Table Element>
-
-PASS
-Case 24: <Inline Element><Floating Inline-Table Element> To <Block Element><Inline-Table Element>
-
-PASS
-Case 25: <Inline Element><Floating Inline-Table Element> To <Inline Element><Table Element>
-
-PASS
-Case 26: <Inline Element><Floating Inline-Table Element> To <Inline Element><Inline-Table Element>
-
-PASS
-
diff --git a/LayoutTests/fast/dynamic/floating-to-non-floating.html b/LayoutTests/fast/dynamic/floating-to-non-floating.html
deleted file mode 100644 (file)
index 5971cb0..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<link rel="stylesheet" type="text/css" href="resources/style-bug91665.css">
-<script src="../../resources/check-layout.js"></script>
-<script src="resources/helper-bug91665.js"></script>
-</head>
-<body onload="runTest('.non-floating');">
-<h4>Testcase for<a href="https://bugs.webkit.org/show_bug.cgi?id=91665"> Bug #91665.</a><br>This testcase checks
-if an element is properly placed with respect to its previous sibling when float:left changes to float:none for
-various combinations of display property toggeled between inline-block and block for both testElement and its previous sibling.
-</h4>
-<p><b>Case 1</b>: &lt;Block Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement" data-offset-y="20"></div>
-</div>
-<p><b>Case 2</b>: &lt;Block Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement" makeInline=true data-offset-y="20"></div>
-</div>
-<p><b>Case 3</b>: &lt;Block Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement" data-offset-y="23"></div>
-</div>
-<p><b>Case 4</b>: &lt;Block Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement" makeInline=true data-offset-y="0"></div>
-</div>
-<p><b>Case 5</b>: &lt;Block Element&gt;&lt;Floating Inline Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement inline" data-offset-y="20"></div>
-</div>
-<p><b>Case 6</b>: &lt;Block Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement inline" makeBlock=true data-offset-y="23"></div>
-</div>
-<p><b>Case 7</b>: &lt;Block Element&gt;&lt;Floating Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement inline" data-offset-y="0"></div>
-</div>
-<p><b>Case 8</b>: &lt;Inline Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><div class="testElement" makeInline=true data-offset-y="20"></div>
-</div>
-<p><b>Case 9</b>: &lt;Inline Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement" data-offset-y="23"></div>
-</div>
-<p><b>Case 10</b>: &lt;Inline Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement" makeInline=true data-offset-y="0"></div>
-</div>
-<p><b>Case 11</b>: &lt;Inline Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><div class="testElement inline" data-offset-y="20"></div>
-</div>
-<p><b>Case 12</b>: &lt;Inline Element&gt;&lt;Floating Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement inline" makeBlock=true data-offset-y="23"></div>
-</div>
-<p><b>Case 13</b>: &lt;Inline Element&gt;&lt;Floating Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement inline" data-offset-y="0"></div>
-</div>
-<p><b>Case 14</b>: &lt;Block Element&gt;&lt;Floating Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement" data-offset-y="20"></table>
-</div>
-<p><b>Case 15</b>: &lt;Block Element&gt;&lt;Floating Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement" makeInline=true data-offset-y="20"></table>
-</div>
-<p><b>Case 16</b>: &lt;Block Element&gt;&lt;Floating Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement" data-offset-y="23"></table>
-</div>
-<p><b>Case 17</b>: &lt;Block Element&gt;&lt;Floating Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement" makeInline=true data-offset-y="0"></table>
-</div>
-<p><b>Case 18</b>: &lt;Block Element&gt;&lt;Floating Inline-Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement inline" data-offset-y="20"></table>
-</div>
-<p><b>Case 19</b>: &lt;Block Element&gt;&lt;Floating Inline Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement inline" makeBlock=true data-offset-y="23"></table>
-</div>
-<p><b>Case 20</b>: &lt;Block Element&gt;&lt;Floating Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement inline" data-offset-y="0"></table>
-</div>
-<p><b>Case 21</b>: &lt;Inline Element&gt;&lt;Floating Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><table class="testElement" makeInline=true data-offset-y="20"></table>
-</div>
-<p><b>Case 22</b>: &lt;Inline Element&gt;&lt;Floating Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement" data-offset-y="23"></table>
-</div>
-<p><b>Case 23</b>: &lt;Inline Element&gt;&lt;Floating Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement" makeInline=true data-offset-y="0"></table>
-</div>
-<p><b>Case 24</b>: &lt;Inline Element&gt;&lt;Floating Inline-Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><table class="testElement inline" data-offset-y="20"></table>
-</div>
-<p><b>Case 25</b>: &lt;Inline Element&gt;&lt;Floating Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement inline" makeBlock=true data-offset-y="23"></table>
-</div>
-<p><b>Case 26</b>: &lt;Inline Element&gt;&lt;Floating Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement inline" data-offset-y="0"></table>
-</div>
-</body>
-</html>
diff --git a/LayoutTests/fast/dynamic/non-floating-to-floating-expected.txt b/LayoutTests/fast/dynamic/non-floating-to-floating-expected.txt
deleted file mode 100644 (file)
index ea51e9e..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-Testcase for Bug #91665. 
-This testcase checks if an element is properly placed with respect to its previous sibling when float:none changes to float:left for various combinations of display property toggeled between inline-block and block for both testElement and its previous sibling.
-
-Case 1: <Block Element><Block Element> To <Block Element><Floating Block Element>
-
-PASS
-Case 2: <Block Element><Block Element> To <Block Element><Floating Inline Element>
-
-PASS
-Case 3: <Block Element><Block Element> To <Inline Element><Floating Block Element>
-
-PASS
-Case 4: <Block Element><Block Element> To <Inline Element><Floating Inline Element>
-
-PASS
-Case 5: <Block Element><Inline Element> To <Block Element><Floating Block Element>
-
-PASS
-Case 6: <Block Element><Block Element> To <Inline Element><Floating Block Element>
-
-PASS
-Case 7: <Block Element><Inline Element> To <Inline Element><Floating Inline Element>
-
-PASS
-Case 8: <Inline Element><Block Element> To <Block Element><Floating Inline Element>
-
-PASS
-Case 9: <Inline Element><Block Element> To <Inline Element><Floating Block Element>
-
-PASS
-Case 10: <Inline Element><Block Element> To <Inline Element><Floating Inline Element>
-
-PASS
-Case 11: <Inline Element><Block Element> To <Block Element><Floating Inline Element>
-
-PASS
-Case 12: <Inline Element><Inline Element> To <Inline Element><Floating Block Element>
-
-PASS
-Case 13: <Inline Element><Inline Element> To <Inline Element><Floating Inline Element>
-
-PASS
-Case 14: <Block Element><Table Element> To <Block Element><Floating Table Element>
-
-PASS
-Case 15: <Block Element><Table Element> To <Block Element><Floating Inline-Table Element>
-
-PASS
-Case 16: <Block Element><Table Element> To <Inline Element><Floating Table Element>
-
-PASS
-Case 17: <Block Element><Table Element> To <Inline Element><Floating Inline-Table Element>
-
-PASS
-Case 18: <Block Element><Inline-Table Element> To <Block Element><Floating Inline-Table Element>
-
-PASS
-Case 19: <Block Element><Inline Element> To <Block Element><Floating Table Element>
-
-PASS
-Case 20: <Block Element><Inline-Table Element> To <Inline Element><Floating Inline-Table Element>
-
-PASS
-Case 21: <Inline Element><Table Element> To <Inline Element><Floating Inline-Table Element>
-
-PASS
-Case 22: <Inline Element><Table Element> To <Inline Element><Floating Table Element>
-
-PASS
-Case 23: <Inline Element><Block Element> To <Inline Element><Floating Inline-Table Element>
-
-PASS
-Case 24: <Inline Element><Inline-Table Element> To <Block Element><Floating Inline-Table Element>
-
-PASS
-Case 25: <Inline Element><Inline-Table Element> To <Inline Element><Floating Table Element>
-
-PASS
-Case 26: <Inline Element><Inline-Table Element> To <Inline Element><Floating Inline-Table Element>
-
-PASS
-
diff --git a/LayoutTests/fast/dynamic/non-floating-to-floating.html b/LayoutTests/fast/dynamic/non-floating-to-floating.html
deleted file mode 100644 (file)
index c14d7bd..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<link rel="stylesheet" type="text/css" href="resources/style-bug91665.css">
-<script src="../../resources/check-layout.js"></script>
-<script src="resources/helper-bug91665.js"></script>
-<script>
-function runTest() {
-    var testElems = document.getElementsByClassName('testElement');
-    for(var i = 0; i < testElems.length; i++) {
-        var element = testElems[i];
-        changeDisplayIfNeeded(element);
-        element.className += ' floating';
-        changeDisplayIfNeeded(element.previousSibling);  
-    }
-    checkLayout('.testElement');
-}
-</script>
-</head>
-<body onload="runTest('.floating');">
-<h4>Testcase for<a href="https://bugs.webkit.org/show_bug.cgi?id=91665"> Bug #91665. </a><br>This testcase checks
-if an element is properly placed with respect to its previous sibling when float:none changes to float:left for
-various combinations of display property toggeled between inline-block and block for both testElement and its previous sibling.
-</h4>
-<p><b>Case 1</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement" data-offset-y="20"></div>
-</div>
-<p><b>Case 2</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement" makeInline=true data-offset-y="20"></div>
-</div>
-<p><b>Case 3</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement" data-offset-y="0"></div>
-</div>
-<p><b>Case 4</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement" makeInline=true data-offset-y="0"></div>
-</div>
-<p><b>Case 5</b>: &lt;Block Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement inline" data-offset-y="20"></div>
-</div>
-<p><b>Case 6</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement inline" makeBlock=true data-offset-y="0"></div>
-</div>
-<p><b>Case 7</b>: &lt;Block Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement inline" data-offset-y="0"></div>
-</div>
-<p><b>Case 8</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><div class="testElement" makeInline=true data-offset-y="20"></div>
-</div>
-<p><b>Case 9</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement" data-offset-y="0"></div>
-</div>
-<p><b>Case 10</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement" makeInline=true data-offset-y="0"></div>
-</div>
-<p><b>Case 11</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><div class="testElement inline" data-offset-y="20"></div>
-</div>
-<p><b>Case 12</b>: &lt;Inline Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement inline" makeBlock=true data-offset-y="0"></div>
-</div>
-<p><b>Case 13</b>: &lt;Inline Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement inline" data-offset-y="0"></div>
-</div>
-<p><b>Case 14</b>: &lt;Block Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement" data-offset-y="20"></table>
-</div>
-<p><b>Case 15</b>: &lt;Block Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement" makeInline=true data-offset-y="20"></table>
-</div>
-<p><b>Case 16</b>: &lt;Block Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement" data-offset-y="0"></table>
-</div>
-<p><b>Case 17</b>: &lt;Block Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement" makeInline=true data-offset-y="0"></table>
-</div>
-<p><b>Case 18</b>: &lt;Block Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement inline" data-offset-y="20"></table>
-</div>
-<p><b>Case 19</b>: &lt;Block Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement inline" makeBlock=true data-offset-y="0"></table>
-</div>
-<p><b>Case 20</b>: &lt;Block Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement inline" data-offset-y="0"></table>
-</div>
-<p><b>Case 21</b>: &lt;Inline Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><table class="testElement" makeInline=true data-offset-y="20"></table>
-</div>
-<p><b>Case 22</b>: &lt;Inline Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement" data-offset-y="0"></table>
-</div>
-<p><b>Case 23</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement" makeInline=true data-offset-y="0"></table>
-</div>
-<p><b>Case 24</b>: &lt;Inline Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Floating Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><table class="testElement inline" data-offset-y="20"></table>
-</div>
-<p><b>Case 25</b>: &lt;Inline Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement inline" makeBlock=true data-offset-y="0"></table>
-</div>
-<p><b>Case 26</b>: &lt;Inline Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Floating Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement inline" data-offset-y="0"></table>
-</div>
-</body>
-</html>
diff --git a/LayoutTests/fast/dynamic/resources/helper-bug91665.js b/LayoutTests/fast/dynamic/resources/helper-bug91665.js
deleted file mode 100644 (file)
index c582ac8..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-function changeDisplayIfNeeded(element) {
-    if(element.getAttribute) {
-        var additionalClasses = '';
-        if(element.getAttribute('makeInline')) {
-            if (element.tagName == 'TABLE') 
-                additionalClasses += ' inline-table';
-            else
-                additionalClasses += ' inline';
-        }
-        else if (element.getAttribute('makeBlock')) {
-            if (element.tagName == 'TABLE') 
-                additionalClasses += ' table';
-            else
-                additionalClasses += ' block';
-        }
-        element.className += additionalClasses;
-    }
-
-}
-
-function runTest(additionalClass) {
-    var testElems = document.getElementsByClassName('testElement');
-    for(var i = 0; i < testElems.length; i++) {
-        var element = testElems[i];
-        changeDisplayIfNeeded(element);
-        element.className += ' ' + additionalClass.substring(1);
-        changeDisplayIfNeeded(element.previousSibling);  
-    }
-    checkLayout('.testElement');
-}
diff --git a/LayoutTests/fast/dynamic/resources/style-bug91665.css b/LayoutTests/fast/dynamic/resources/style-bug91665.css
deleted file mode 100644 (file)
index 9c372b8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-.box {
-  width:50px;
-  height:20px;
-  background:blue;
-}
-.wrapper {
-  position:relative;
-  line-height:1;
-}
-.testElement {
-  width:50px;
-  height:20px;
-  background:yellow;
-}
-.inline {
-  display:inline-block;
-}
-.block {
-  display:block;
-}
-.inline-table {
-  display:inline-table;
-}
-.table {
-  display:table;
-}
-.position-absolute {
-  position:absolute;
-}
-.position-static {
-  position:static;
-}
-.non-floating {
-  float:none;
-}
-.floating {
-  float:left;
-}
diff --git a/LayoutTests/fast/dynamic/static-positioned-to-absolute-positioned-expected.txt b/LayoutTests/fast/dynamic/static-positioned-to-absolute-positioned-expected.txt
deleted file mode 100644 (file)
index 70cad59..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-Testcase for Bug #91665.
-This testcase checks if an element is properly placed with respect to its previous sibling when its position changes from static to absolute for various combinations of display property, toggeled between inline-block and block for both testElement and its previous sibling.
-
-Case 1: <Block Element><Block Element> To <Block Element><Positioned Block Element>
-
-PASS
-Case 2: <Block Element><Block Element> To <Block Element><Positioned Inline Element>
-
-PASS
-Case 3: <Block Element><Block Element> To <Inline Element><Positioned Block Element>
-
-PASS
-Case 4: <Block Element><Block Element> To <Inline Element><Positioned Inline Element>
-
-PASS
-Case 5: <Block Element><Inline Element> To <Block Element><Positioned Block Element>
-
-PASS
-Case 6: <Block Element><Block Element> To <Inline Element><Positioned Block Element>
-
-PASS
-Case 7: <Block Element><Inline Element> To <Inline Element><Positioned Inline Element>
-
-PASS
-Case 8: <Inline Element><Block Element> To <Block Element><Positioned Inline Element>
-
-PASS
-Case 9: <Inline Element><Block Element> To <Inline Element><Positioned Block Element>
-
-PASS
-Case 10: <Inline Element><Block Element> To <Inline Element><Positioned Inline Element>
-
-PASS
-Case 11: <Inline Element><Block Element> To <Block Element><Positioned Inline Element>
-
-PASS
-Case 12: <Inline Element><Inline Element> To <Inline Element><Positioned Block Element>
-
-PASS
-Case 13: <Inline Element><Inline Element> To <Inline Element><Positioned Inline Element>
-
-PASS
-Case 14: <Block Element><Table Element> To <Block Element><Positioned Table Element>
-
-PASS
-Case 15: <Block Element><Table Element> To <Block Element><Positioned Inline-Table Element>
-
-PASS
-Case 16: <Block Element><Table Element> To <Inline Element><Positioned Table Element>
-
-PASS
-Case 17: <Block Element><Table Element> To <Inline Element><Positioned Inline-Table Element>
-
-PASS
-Case 18: <Block Element><Inline-Table Element> To <Block Element><Positioned Inline-Table Element>
-
-PASS
-Case 19: <Block Element><Inline Element> To <Block Element><Positioned Table Element>
-
-PASS
-Case 20: <Block Element><Inline-Table Element> To <Inline Element><Positioned Inline-Table Element>
-
-PASS
-Case 21: <Inline Element><Table Element> To <Inline Element><Positioned Inline-Table Element>
-
-PASS
-Case 22: <Inline Element><Table Element> To <Inline Element><Positioned Table Element>
-
-PASS
-Case 23: <Inline Element><Block Element> To <Inline Element><Positioned Inline-Table Element>
-
-PASS
-Case 24: <Inline Element><Inline-Table Element> To <Block Element><Positioned Inline-Table Element>
-
-PASS
-Case 25: <Inline Element><Inline-Table Element> To <Inline Element><Positioned Table Element>
-
-PASS
-Case 26: <Inline Element><Inline-Table Element> To <Inline Element><Positioned Inline-Table Element>
-
-PASS
-
diff --git a/LayoutTests/fast/dynamic/static-positioned-to-absolute-positioned.html b/LayoutTests/fast/dynamic/static-positioned-to-absolute-positioned.html
deleted file mode 100644 (file)
index 1e5bc87..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<link rel="stylesheet" type="text/css" href="resources/style-bug91665.css">
-<script src="../../resources/check-layout.js"></script>
-<script src="resources/helper-bug91665.js"></script>
-</head>
-<body onload="runTest('.position-absolute');">
-<h4>Testcase for<a href="https://bugs.webkit.org/show_bug.cgi?id=91665"> Bug #91665.</a><br>This testcase checks
-if an element is properly placed with respect to its previous sibling when its position changes from static to absolute for
-various combinations of display property, toggeled between inline-block and block for both testElement and its previous sibling.
-</h4>
-<p><b>Case 1</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement" data-offset-y="20"></div>
-</div>
-<p><b>Case 2</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement" makeInline=true data-offset-y="20"></div>
-</div>
-<p><b>Case 3</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement" data-offset-y="23"></div>
-</div>
-<p><b>Case 4</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement" makeInline=true data-offset-y="0"></div>
-</div>
-<p><b>Case 5</b>: &lt;Block Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><div class="testElement inline" data-offset-y="20"></div>
-</div>
-<p><b>Case 6</b>: &lt;Block Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement inline" makeBlock=true data-offset-y="23"></div>
-</div>
-<p><b>Case 7</b>: &lt;Block Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><div class="testElement inline" data-offset-y="0"></div>
-</div>
-<p><b>Case 8</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><div class="testElement" makeInline=true data-offset-y="20"></div>
-</div>
-<p><b>Case 9</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement" data-offset-y="23"></div>
-</div>
-<p><b>Case 10</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement" makeInline=true data-offset-y="0"></div>
-</div>
-<p><b>Case 11</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><div class="testElement inline" data-offset-y="20"></div>
-</div>
-<p><b>Case 12</b>: &lt;Inline Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Block Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement inline" makeBlock=true data-offset-y="23"></div>
-</div>
-<p><b>Case 13</b>: &lt;Inline Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><div class="testElement inline" data-offset-y="0"></div>
-</div>
-<p><b>Case 14</b>: &lt;Block Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement" data-offset-y="20"></table>
-</div>
-<p><b>Case 15</b>: &lt;Block Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement" makeInline=true data-offset-y="20"></table>
-</div>
-<p><b>Case 16</b>: &lt;Block Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement" data-offset-y="23"></table>
-</div>
-<p><b>Case 17</b>: &lt;Block Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement" makeInline=true data-offset-y="0"></table>
-</div>
-<p><b>Case 18</b>: &lt;Block Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box"></div><table class="testElement inline" data-offset-y="20"></table>
-</div>
-<p><b>Case 19</b>: &lt;Block Element&gt;&lt;Inline Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement inline" makeBlock=true data-offset-y="23"></table>
-</div>
-<p><b>Case 20</b>: &lt;Block Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box" makeInline=true></div><table class="testElement inline" data-offset-y="0"></table>
-</div>
-<p><b>Case 21</b>: &lt;Inline Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><table class="testElement" makeInline=true data-offset-y="20"></table>
-</div>
-<p><b>Case 22</b>: &lt;Inline Element&gt;&lt;Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement" data-offset-y="23"></table>
-</div>
-<p><b>Case 23</b>: &lt;Inline Element&gt;&lt;Block Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement" makeInline=true data-offset-y="0"></table>
-</div>
-<p><b>Case 24</b>: &lt;Inline Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Block Element&gt;&lt;Positioned Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline" makeBlock=true></div><table class="testElement inline" data-offset-y="20"></table>
-</div>
-<p><b>Case 25</b>: &lt;Inline Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement inline" makeBlock=true data-offset-y="23"></table>
-</div>
-<p><b>Case 26</b>: &lt;Inline Element&gt;&lt;Inline-Table Element&gt; <b>To </b> &lt;Inline Element&gt;&lt;Positioned Inline-Table Element&gt;</p>
-<div class="wrapper">
-  <div class="box inline"></div><table class="testElement inline" data-offset-y="0"></table>
-</div>
-</body>
-</html>
index b2c9fb8..33a6f23 100644 (file)
Binary files a/LayoutTests/platform/chromium-mac/fast/repaint/absolute-position-change-containing-block-expected.png and b/LayoutTests/platform/chromium-mac/fast/repaint/absolute-position-change-containing-block-expected.png differ
index 7f0fa76..080171c 100644 (file)
Binary files a/LayoutTests/platform/chromium-mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png and b/LayoutTests/platform/chromium-mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png differ
index 6146ec5..1908a34 100644 (file)
@@ -7,9 +7,10 @@ layer at (0,0) size 800x600
         RenderBlock (floating) {DIV} at (536,0) size 248x104 [border: (2px solid #FF0000)]
           RenderText {#text} at (2,2) size 244x19
             text run at (2,2) width 244: "I should become a right-floating element."
-        RenderText {#text} at (0,0) size 371x19
-          text run at (0,0) width 184: "This text should be on the left. "
-          text run at (184,0) width 187: "The float should be to the right."
+        RenderBlock (anonymous) at (0,0) size 784x20
+          RenderText {#text} at (0,0) size 371x19
+            text run at (0,0) width 184: "This text should be on the left. "
+            text run at (184,0) width 187: "The float should be to the right."
       RenderBlock {DIV} at (0,20) size 784x30
       RenderBlock {DIV} at (0,50) size 784x40
         RenderBlock (floating) {SPAN} at (0,0) size 240x104 [border: (2px solid #FF0000)]
index c156a60..75ed716 100644 (file)
@@ -7,9 +7,10 @@ layer at (0,0) size 800x600
         RenderBlock (floating) {DIV} at (522,0) size 262x104 [border: (2px solid #FF0000)]
           RenderText {#text} at (2,2) size 258x18
             text run at (2,2) width 258: "I should become a right-floating element."
-        RenderText {#text} at (0,0) size 393x18
-          text run at (0,0) width 195: "This text should be on the left. "
-          text run at (195,0) width 198: "The float should be to the right."
+        RenderBlock (anonymous) at (0,0) size 784x18
+          RenderText {#text} at (0,0) size 393x18
+            text run at (0,0) width 195: "This text should be on the left. "
+            text run at (195,0) width 198: "The float should be to the right."
       RenderBlock {DIV} at (0,18) size 784x30
       RenderBlock {DIV} at (0,48) size 784x36
         RenderBlock (floating) {SPAN} at (0,0) size 253x104 [border: (2px solid #FF0000)]
diff --git a/LayoutTests/platform/chromium/fast/repaint/absolute-position-change-containing-block-expected.png b/LayoutTests/platform/chromium/fast/repaint/absolute-position-change-containing-block-expected.png
deleted file mode 100644 (file)
index f5bef7d..0000000
Binary files a/LayoutTests/platform/chromium/fast/repaint/absolute-position-change-containing-block-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/chromium/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png b/LayoutTests/platform/chromium/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png
deleted file mode 100644 (file)
index 9153d47..0000000
Binary files a/LayoutTests/platform/chromium/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png and /dev/null differ
index c156a60..75ed716 100644 (file)
@@ -7,9 +7,10 @@ layer at (0,0) size 800x600
         RenderBlock (floating) {DIV} at (522,0) size 262x104 [border: (2px solid #FF0000)]
           RenderText {#text} at (2,2) size 258x18
             text run at (2,2) width 258: "I should become a right-floating element."
-        RenderText {#text} at (0,0) size 393x18
-          text run at (0,0) width 195: "This text should be on the left. "
-          text run at (195,0) width 198: "The float should be to the right."
+        RenderBlock (anonymous) at (0,0) size 784x18
+          RenderText {#text} at (0,0) size 393x18
+            text run at (0,0) width 195: "This text should be on the left. "
+            text run at (195,0) width 198: "The float should be to the right."
       RenderBlock {DIV} at (0,18) size 784x30
       RenderBlock {DIV} at (0,48) size 784x36
         RenderBlock (floating) {SPAN} at (0,0) size 253x104 [border: (2px solid #FF0000)]
diff --git a/LayoutTests/platform/mac/fast/repaint/absolute-position-change-containing-block-expected.png b/LayoutTests/platform/mac/fast/repaint/absolute-position-change-containing-block-expected.png
deleted file mode 100644 (file)
index d3c8502..0000000
Binary files a/LayoutTests/platform/mac/fast/repaint/absolute-position-change-containing-block-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png b/LayoutTests/platform/mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png
deleted file mode 100644 (file)
index 466034a..0000000
Binary files a/LayoutTests/platform/mac/fast/repaint/fixed-to-relative-position-with-absolute-child-expected.png and /dev/null differ
index 851cade..0d330c6 100644 (file)
@@ -1,3 +1,36 @@
+2013-03-08  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r142015.
+        http://trac.webkit.org/changeset/142015
+        https://bugs.webkit.org/show_bug.cgi?id=111904
+
+        The change caused 2 major regressions (bug 111091 and bug
+        111595) and Pravin doesn't have time to investigate them
+        (Requested by jchaffraix on #webkit).
+
+        * dom/Node.cpp:
+        (WebCore::Node::diff):
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::childBecameNonInline):
+        (WebCore):
+        * rendering/RenderBlock.h:
+        (RenderBlock):
+        * rendering/RenderBoxModelObject.h:
+        (WebCore::RenderBoxModelObject::childBecameNonInline):
+        (RenderBoxModelObject):
+        * rendering/RenderInline.cpp:
+        (WebCore::RenderInline::childBecameNonInline):
+        (WebCore):
+        * rendering/RenderInline.h:
+        (RenderInline):
+        * rendering/RenderObject.cpp:
+        (WebCore):
+        (WebCore::RenderObject::handleDynamicFloatPositionChange):
+        (WebCore::RenderObject::styleWillChange):
+        (WebCore::RenderObject::styleDidChange):
+        * rendering/RenderObject.h:
+        (RenderObject):
+
 2013-03-08  Dean Jackson  <dino@apple.com>
 
         Don't snapshot Java plugins
index 07c5cec..9e24827 100644 (file)
@@ -383,11 +383,6 @@ Node::StyleChange Node::diff(const RenderStyle* s1, const RenderStyle* s2, Docum
     if ((s1 && s2) && (s1->regionThread() != s2->regionThread()))
         ch = Detach;
 
-    // Re-attach the renderer when either the element changes from position:static to position:absolute/fixed, vice-versa
-    // or float:none to floating, vice-versa.
-    if ((s1 && s2 ) && (s1->isFloating() != s2->isFloating() || s1->hasOutOfFlowPosition() != s2->hasOutOfFlowPosition()))
-        ch = Detach;
-
     return ch;
 }
 
index 24fbb27..067aec7 100644 (file)
@@ -7129,6 +7129,14 @@ RenderStyle* RenderBlock::outlineStyleForRepaint() const
     return isAnonymousBlockContinuation() ? continuation()->style() : style();
 }
 
+void RenderBlock::childBecameNonInline(RenderObject*)
+{
+    makeChildrenNonInline();
+    if (isAnonymousBlock() && parent() && parent()->isRenderBlock())
+        toRenderBlock(parent())->removeLeftoverAnonymousBlock(this);
+    // |this| may be dead here
+}
+
 void RenderBlock::updateHitTestResult(HitTestResult& result, const LayoutPoint& point)
 {
     if (result.innerNode())
index 2144060..4c2f71e 100644 (file)
@@ -896,6 +896,7 @@ private:
     
     virtual RenderObject* hoverAncestor() const;
     virtual void updateDragState(bool dragOn);
+    virtual void childBecameNonInline(RenderObject* child);
 
     virtual LayoutRect selectionRectForRepaint(const RenderLayerModelObject* repaintContainer, bool /*clipToVisibleContent*/) OVERRIDE
     {
index bb529ad..cff880f 100644 (file)
@@ -149,6 +149,8 @@ public:
 
     virtual LayoutUnit containingBlockLogicalWidthForContent() const;
 
+    virtual void childBecameNonInline(RenderObject* /*child*/) { }
+
     void paintBorder(const PaintInfo&, const LayoutRect&, const RenderStyle*, BackgroundBleedAvoidance = BackgroundBleedNone, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true);
     bool paintNinePieceImage(GraphicsContext*, const LayoutRect&, const RenderStyle*, const NinePieceImage&, CompositeOperator = CompositeSourceOver);
     void paintBoxShadow(const PaintInfo&, const LayoutRect&, const RenderStyle*, ShadowStyle, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true);
index 129a424..6788007 100644 (file)
@@ -1225,6 +1225,17 @@ void RenderInline::updateDragState(bool dragOn)
         continuation()->updateDragState(dragOn);
 }
 
+void RenderInline::childBecameNonInline(RenderObject* child)
+{
+    // We have to split the parent flow.
+    RenderBlock* newBox = containingBlock()->createAnonymousBlock();
+    RenderBoxModelObject* oldContinuation = continuation();
+    setContinuation(newBox);
+    RenderObject* beforeChild = child->nextSibling();
+    children()->removeChildNode(this, child);
+    splitFlow(beforeChild, newBox, child, oldContinuation);
+}
+
 void RenderInline::updateHitTestResult(HitTestResult& result, const LayoutPoint& point)
 {
     if (result.innerNode())
index b54aaa8..39fd4e2 100644 (file)
@@ -165,6 +165,8 @@ private:
 
     virtual LayoutUnit lineHeight(bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const;
     virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const;
+    
+    virtual void childBecameNonInline(RenderObject* child);
 
     virtual void updateHitTestResult(HitTestResult&, const LayoutPoint&);
 
index 5e671e1..c76b00a 100644 (file)
@@ -118,6 +118,8 @@ struct SameSizeAsRenderObject {
 
 COMPILE_ASSERT(sizeof(RenderObject) == sizeof(SameSizeAsRenderObject), RenderObject_should_stay_small);
 
+bool RenderObject::s_affectsParentBlock = false;
+
 RenderObjectAncestorLineboxDirtySet* RenderObject::s_ancestorLineboxDirtySet = 0;
 
 void* RenderObject::operator new(size_t sz, RenderArena* renderArena)
@@ -1683,6 +1685,25 @@ void RenderObject::selectionStartEnd(int& spos, int& epos) const
     view()->selectionStartEnd(spos, epos);
 }
 
+void RenderObject::handleDynamicFloatPositionChange()
+{
+    // We have gone from not affecting the inline status of the parent flow to suddenly
+    // having an impact.  See if there is a mismatch between the parent flow's
+    // childrenInline() state and our state.
+    setInline(style()->isDisplayInlineType());
+    if (isInline() != parent()->childrenInline()) {
+        if (!isInline())
+            toRenderBoxModelObject(parent())->childBecameNonInline(this);
+        else {
+            // An anonymous block must be made to wrap this inline.
+            RenderBlock* block = toRenderBlock(parent())->createAnonymousBlock();
+            RenderObjectChildList* childlist = parent()->virtualChildren();
+            childlist->insertChildNode(parent(), block, this);
+            block->children()->appendChildNode(block, childlist->removeChildNode(parent(), this));
+        }
+    }
+}
+
 void RenderObject::setAnimatableStyle(PassRefPtr<RenderStyle> style)
 {
     if (!isText() && style)
@@ -1880,6 +1901,10 @@ void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle* newS
             // from the positioned objects list.
             toRenderBox(this)->removeFloatingOrPositionedChildFromBlockLists();
 
+        s_affectsParentBlock = isFloatingOrOutOfFlowPositioned()
+            && (!newStyle->isFloating() && !newStyle->hasOutOfFlowPosition())
+            && parent() && (parent()->isBlockFlow() || parent()->isRenderInline());
+
         // reset style flags
         if (diff == StyleDifferenceLayout || diff == StyleDifferenceLayoutPositionedMovementOnly) {
             setFloating(false);
@@ -1890,7 +1915,8 @@ void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle* newS
         setHasOverflowClip(false);
         setHasTransform(false);
         setHasReflection(false);
-    }
+    } else
+        s_affectsParentBlock = false;
 
     if (view()->frameView()) {
         bool shouldBlitOnFixedBackgroundImage = false;
@@ -1942,6 +1968,8 @@ static inline bool areCursorsEqual(const RenderStyle* a, const RenderStyle* b)
 
 void RenderObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
 {
+    if (s_affectsParentBlock)
+        handleDynamicFloatPositionChange();
 
 #if ENABLE(SVG)
     SVGRenderSupport::styleChanged(this);
index 0e9ddd8..2335c5e 100644 (file)
@@ -249,6 +249,11 @@ public:
     // children.
     virtual RenderBlock* firstLineBlock() const;
 
+    // Called when an object that was floating or positioned becomes a normal flow object
+    // again.  We have to make sure the render tree updates as needed to accommodate the new
+    // normal flow object.
+    void handleDynamicFloatPositionChange();
+    
     // RenderObject tree manipulation
     //////////////////////////////////////////
     virtual bool canHaveChildren() const { return virtualChildren(); }
@@ -1160,6 +1165,10 @@ private:
     void setPaintBackground(bool b) { m_bitfields.setPaintBackground(b); }
     void setIsDragging(bool b) { m_bitfields.setIsDragging(b); }
     void setEverHadLayout(bool b) { m_bitfields.setEverHadLayout(b); }
+
+private:
+    // Store state between styleWillChange and styleDidChange
+    static bool s_affectsParentBlock;
 };
 
 inline bool RenderObject::documentBeingDestroyed() const