diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-09-03 11:55:03 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-09-03 11:55:03 -0600 |
commit | 8bbace7815b489e1b87df2ec496e65e78721d929 (patch) | |
tree | bf12a7adb6f5cfb485a535342601e0c5cbfbed81 /tests | |
parent | 3f9b6f8586b60929ccbfe1cf51b84887ef711b77 (diff) | |
parent | ee8741b7a8d7313a3ad1ea6ef81cebf7cb262891 (diff) | |
download | servo-8bbace7815b489e1b87df2ec496e65e78721d929.tar.gz servo-8bbace7815b489e1b87df2ec496e65e78721d929.zip |
Auto merge of #7207 - pcwalton:surround-whitespace-stripping, r=mbrubeck
layout: Fix several bugs relating to inline borders, padding, and margins.
* The code that attempted to strip out borders that span multiple
fragments in the same element could go wrong if fragments were
stripped out due to text clumping or whitespace stripping. This patch
rewrites that code to maintain flags in the inline fragment context
specifying whether the node is the beginning or end of the element.
Not only is this easier to maintain, it's closer in spirit to what roc
originally suggested two years ago: it's isomorphic to "begin element,
end element" markers for inline layout.
* Padding and margins for spans containing inline-blocks are now
properly handled via a division of labor between the `InlineBlock`
fragment and the `BlockFlow` that represents the inline-block.
* Unscanned text fragments may not be joined together into a text run if
borders, padding, or margins separate them.
Because Servo now matches the rendering of Gecko and WebKit on the
`input_button_margins_a` reftest, I had to modify it to add some
vertical alignment.
The combined effect of all of these fixes places "Advertising" on the
right place on google.com.
r? @mbrubeck
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7207)
<!-- Reviewable:end -->
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ref/basic.list | 1 | ||||
-rw-r--r-- | tests/ref/input_button_margins_a.html | 2 | ||||
-rw-r--r-- | tests/ref/input_button_margins_ref.html | 1 | ||||
-rw-r--r-- | tests/ref/margin_padding_inline_block_a.html | 10 | ||||
-rw-r--r-- | tests/ref/margin_padding_inline_block_ref.html | 17 |
5 files changed, 31 insertions, 0 deletions
diff --git a/tests/ref/basic.list b/tests/ref/basic.list index c7aeb3a1de8..e68864215a6 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -224,6 +224,7 @@ flaky_cpu == linebreak_simple_a.html linebreak_simple_b.html != list_style_type_a.html list_style_type_ref.html == many_brs_a.html many_brs_ref.html == margin_a.html margin_b.html +== margin_padding_inline_block_a.html margin_padding_inline_block_ref.html == margins_inside_floats_a.html margins_inside_floats_ref.html == marker_block_direction_placement_a.html marker_block_direction_placement_ref.html == max_width_float_simple_a.html max_width_float_simple_b.html diff --git a/tests/ref/input_button_margins_a.html b/tests/ref/input_button_margins_a.html index b35a3b5ccb6..a207daac455 100644 --- a/tests/ref/input_button_margins_a.html +++ b/tests/ref/input_button_margins_a.html @@ -5,6 +5,8 @@ body, html { } input { margin-left: 64px; + border: none; + vertical-align: top; } </style> <input type=button value=Hello> diff --git a/tests/ref/input_button_margins_ref.html b/tests/ref/input_button_margins_ref.html index 07ecda7c227..63b80497bf4 100644 --- a/tests/ref/input_button_margins_ref.html +++ b/tests/ref/input_button_margins_ref.html @@ -6,6 +6,7 @@ body, html { input { position: absolute; left: 64px; + border: none; } </style> <input type=button value=Hello> diff --git a/tests/ref/margin_padding_inline_block_a.html b/tests/ref/margin_padding_inline_block_a.html new file mode 100644 index 00000000000..d2a8f5d4b82 --- /dev/null +++ b/tests/ref/margin_padding_inline_block_a.html @@ -0,0 +1,10 @@ +<!DOCTYPE html> +<style> +html, body { + margin: 0; +} +</style> +<div><span style="padding-left: 100px; display: inline-block">Boo</span></div> +<div><span style="padding-left: 100px">Foo</span></div> +<div><span style="margin-left: 100px">Foo</span></div> + diff --git a/tests/ref/margin_padding_inline_block_ref.html b/tests/ref/margin_padding_inline_block_ref.html new file mode 100644 index 00000000000..58f5ba65980 --- /dev/null +++ b/tests/ref/margin_padding_inline_block_ref.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<style> +html, body { + margin: 0; +} +div { + position: relative; +} +span { + position: relative; + left: 100px; +} +</style> +<div><span>Boo</span></div> +<div><span>Foo</span></div> +<div><span>Foo</span></div> + |