Bug 1320484 part 3: Add reftest for simple positioning of abspos child inside of a -webkit-box container. r?mats draft
authorDaniel Holbert <dholbert@cs.stanford.edu>
Wed, 04 Jan 2017 20:38:54 -0800
changeset 456211 94db004d4def732317e5a4d40dd5aa592f565de5
parent 456208 5f0add6689ed0fd85ff7bfc777bea1806df6d2c6
child 541163 c36f2ff6acc33a427cf60ebbc98a2df0033cecc9
push id40423
push userdholbert@mozilla.com
push dateThu, 05 Jan 2017 04:39:18 +0000
reviewersmats
bugs1320484
milestone53.0a1
Bug 1320484 part 3: Add reftest for simple positioning of abspos child inside of a -webkit-box container. r?mats MozReview-Commit-ID: 4SIys1zdkvy
layout/reftests/webkit-box/reftest.list
layout/reftests/webkit-box/webkit-box-abspos-children-1-ref.html
layout/reftests/webkit-box/webkit-box-abspos-children-1.html
--- a/layout/reftests/webkit-box/reftest.list
+++ b/layout/reftests/webkit-box/reftest.list
@@ -1,12 +1,15 @@
 # This directory contains tests for "display: -webkit-box" and associated
 # CSS properties. These tests require webkit prefix support to be enabled.
 default-preferences pref(layout.css.prefixes.webkit,true)
 
+# Tests for abspos children inside of a -webkit-box:
+== webkit-box-abspos-children-1.html webkit-box-abspos-children-1-ref.html
+
 # Tests for anonymous flex item formation inside of a "-webkit-box":
 # Note: some of these tests are marked as failing, because we don't match
 # WebKit/Blink on them.  (The reference case represents the WebKit/Blink
 # rendering.) We could probably make them pass by implementing some quirks, if
 # it turns out that the web depends on WebKit/Blink's behavior in these cases.
 == webkit-box-anon-flex-items-1a.html webkit-box-anon-flex-items-1-ref.html
 == webkit-box-anon-flex-items-1b.html webkit-box-anon-flex-items-1-ref.html
 fails == webkit-box-anon-flex-items-2.html webkit-box-anon-flex-items-2-ref.html
new file mode 100644
--- /dev/null
+++ b/layout/reftests/webkit-box/webkit-box-abspos-children-1-ref.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<!-- NOTE: This reference case uses the same markup as the testcase, except:
+      (1) This reference case uses modern flexbox CSS instead of -webkit-box.
+      (2) In the 2nd and 4th containers here (where the testcase makes the
+          *2nd* flex item abspos), this reference case simply uses no absolute
+          positioning at all, to achieve the correct effect for -webkit-box
+          compatibility.  (Specifically, we need the 2nd flex item to have its
+          position pushed over by the 1st flex item, which happens to be the
+          same thing that happens when there's no absolute positioning.)
+-->
+<html>
+<head>
+  <title>Reference: simple positioning of abspos children in -webkit-box</title>
+  <style>
+    .container {
+      border: 1px solid black;
+      width: 200px;
+    }
+    .box        { display: flex }
+    .inline-box { display: inline-flex }
+    .abs { position: absolute }
+    .a { border: 3px solid purple }
+    .b { border: 3px solid orange }
+</style>
+</head>
+<body>
+  <!-- Test abspos child in -webkit-box: -->
+  <div class="container box">
+    <div class="a abs">aa</div>
+    <div class="b">bbbb</div>
+  </div>
+  <div class="container box">
+    <div class="a">aa</div>
+    <div class="b">bbbb</div>
+  </div>
+
+  <!-- Test abspos child in -webkit-inline-box: -->
+  <div class="container inline-box">
+    <div class="a abs">aa</div>
+    <div class="b">bbbb</div>
+  </div>
+  <div class="container inline-box">
+    <div class="a">aa</div>
+    <div class="b">bbbb</div>
+  </div>
+
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/webkit-box/webkit-box-abspos-children-1.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <title>Testcase: simple positioning of abspos children in -webkit-box</title>
+  <style>
+    .container {
+      border: 1px solid black;
+      width: 200px;
+    }
+    .box        { display: -webkit-box }
+    .inline-box { display: -webkit-inline-box }
+    .abs { position: absolute }
+    .a { border: 3px solid purple }
+    .b { border: 3px solid orange }
+</style>
+</head>
+<body>
+  <!-- Test abspos child in -webkit-box: -->
+  <div class="container box">
+    <div class="a abs">aa</div>
+    <div class="b">bbbb</div>
+  </div>
+  <div class="container box">
+    <div class="a">aa</div>
+    <div class="b abs">bbbb</div>
+  </div>
+
+  <!-- Test abspos child in -webkit-inline-box: -->
+  <div class="container inline-box">
+    <div class="a abs">aa</div>
+    <div class="b">bbbb</div>
+  </div>
+
+  <div class="container inline-box"
+       style="vertical-align: top">
+    <!-- XXXdholbert 'vertical-align' here is a hackaround for bug 1328792 -->
+    <div class="a">aa</div>
+    <div class="b abs">bbbb</div>
+  </div>
+
+</body>
+</html>