Auto merge of #10248 - pcwalton:float-speculation-with-negative-margins, r=mbrubeck

layout: Only take nonnegative margins into account when estimating inline placement of floats.

Otherwise, the heuristics can pass even when there are no floats,
causing block formatting contexts to be speculated to be flowing around
floats that don't exist!

Closes #10237.

r? @mbrubeck

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10248)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-03-29 16:04:01 +05:30
commit 3f73321710
4 changed files with 101 additions and 14 deletions

View file

@ -1484,6 +1484,18 @@
"url": "/_mozilla/css/float_right_intrinsic_width_a.html"
}
],
"css/float_speculation_negative_inline_margins_a.html": [
{
"path": "css/float_speculation_negative_inline_margins_a.html",
"references": [
[
"/_mozilla/css/float_speculation_negative_inline_margins_ref.html",
"=="
]
],
"url": "/_mozilla/css/float_speculation_negative_inline_margins_a.html"
}
],
"css/float_table_a.html": [
{
"path": "css/float_table_a.html",
@ -7846,6 +7858,18 @@
"url": "/_mozilla/css/float_right_intrinsic_width_a.html"
}
],
"css/float_speculation_negative_inline_margins_a.html": [
{
"path": "css/float_speculation_negative_inline_margins_a.html",
"references": [
[
"/_mozilla/css/float_speculation_negative_inline_margins_ref.html",
"=="
]
],
"url": "/_mozilla/css/float_speculation_negative_inline_margins_a.html"
}
],
"css/float_table_a.html": [
{
"path": "css/float_table_a.html",

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title></title>
<link rel="match" href="float_speculation_negative_inline_margins_ref.html">
<style>
* {
margin: 0;
padding: 0;
font-size: 0;
}
.red {
left: 50%;
position: absolute;
top: 40px;
width: 480px;
margin-left: -240px;
background: red;
}
.green {
display: block;
width: 410px;
height: 34px;
line-height: 34px;
background: green;
border: none
}
</style>
<div class="red"><input class="green"></div>

View file

@ -0,0 +1,29 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title></title>
<style>
* {
margin: 0;
padding: 0;
font-size: 0;
}
.red {
left: 50%;
position: absolute;
top: 40px;
width: 480px;
margin-left: -240px;
background: red;
}
.green {
display: block;
width: 410px;
height: 34px;
line-height: 34px;
background: green;
border: none
}
</style>
<div class="red"><div class="green"></div>