diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-04-16 06:58:47 +0530 |
---|---|---|
committer | bors-servo <lbergstrom+bors@mozilla.com> | 2016-04-16 06:58:47 +0530 |
commit | 86778a0d714e4e9d2696d54ec422aede47ba3cb9 (patch) | |
tree | d995b9052e73268d323357d040669f9ac18d0da4 | |
parent | 9d23d7c0d98e24995243487b55abbf2acd1ec354 (diff) | |
parent | e840c7aaa09627979c2cec69277a04f884489e6b (diff) | |
download | servo-86778a0d714e4e9d2696d54ec422aede47ba3cb9.tar.gz servo-86778a0d714e4e9d2696d54ec422aede47ba3cb9.zip |
Auto merge of #10644 - pcwalton:absolute-ib-split, r=mbrubeck
layout: Make absolutely-positioned blocks not generate {ib} splits.
Improves YouTube.
Closes #10642.
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/10644)
<!-- Reviewable:end -->
-rw-r--r-- | components/layout/construct.rs | 27 | ||||
-rw-r--r-- | tests/wpt/mozilla/meta/MANIFEST.json | 24 | ||||
-rw-r--r-- | tests/wpt/mozilla/tests/css/absolute_ib_split_a.html | 5 | ||||
-rw-r--r-- | tests/wpt/mozilla/tests/css/absolute_ib_split_ref.html | 4 |
4 files changed, 47 insertions, 13 deletions
diff --git a/components/layout/construct.rs b/components/layout/construct.rs index 8ba85710ae3..4099e1f9af5 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -512,19 +512,20 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode> } else if flow.need_anonymous_flow(&*kid_flow) { consecutive_siblings.push(kid_flow) } else { - // Flush any inline fragments that we were gathering up. This allows us to - // handle {ib} splits. - debug!("flushing {} inline box(es) to flow A", - inline_fragment_accumulator.fragments.fragments.len()); - let old_inline_fragment_accumulator = - mem::replace(inline_fragment_accumulator, - InlineFragmentsAccumulator::new()); - self.flush_inline_fragments_to_flow_or_list( - old_inline_fragment_accumulator, - flow, - consecutive_siblings, - abs_descendants, - node); + if !flow::base(&*kid_flow).flags.contains(IS_ABSOLUTELY_POSITIONED) { + // Flush any inline fragments that we were gathering up. This allows us to + // handle {ib} splits. + let old_inline_fragment_accumulator = + mem::replace(inline_fragment_accumulator, + InlineFragmentsAccumulator::new()); + self.flush_inline_fragments_to_flow_or_list( + old_inline_fragment_accumulator, + flow, + consecutive_siblings, + abs_descendants, + node); + } + if !consecutive_siblings.is_empty() { let consecutive_siblings = mem::replace(consecutive_siblings, vec!()); self.generate_anonymous_missing_child(consecutive_siblings, flow, node); diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index d56fdb61efc..c9d3433cc2c 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -94,6 +94,18 @@ "url": "/_mozilla/css/absolute_hypothetical_with_intervening_inline_block_a.html" } ], + "css/absolute_ib_split_a.html": [ + { + "path": "css/absolute_ib_split_a.html", + "references": [ + [ + "/_mozilla/css/absolute_ib_split_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/absolute_ib_split_a.html" + } + ], "css/absolute_inline_containing_block_a.html": [ { "path": "css/absolute_inline_containing_block_a.html", @@ -6732,6 +6744,18 @@ "url": "/_mozilla/css/absolute_hypothetical_with_intervening_inline_block_a.html" } ], + "css/absolute_ib_split_a.html": [ + { + "path": "css/absolute_ib_split_a.html", + "references": [ + [ + "/_mozilla/css/absolute_ib_split_ref.html", + "==" + ] + ], + "url": "/_mozilla/css/absolute_ib_split_a.html" + } + ], "css/absolute_inline_containing_block_a.html": [ { "path": "css/absolute_inline_containing_block_a.html", diff --git a/tests/wpt/mozilla/tests/css/absolute_ib_split_a.html b/tests/wpt/mozilla/tests/css/absolute_ib_split_a.html new file mode 100644 index 00000000000..43b8fb09e9e --- /dev/null +++ b/tests/wpt/mozilla/tests/css/absolute_ib_split_a.html @@ -0,0 +1,5 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="match" href="absolute_ib_split_ref.html"> +Ser<div style="position: absolute"></div>vo + diff --git a/tests/wpt/mozilla/tests/css/absolute_ib_split_ref.html b/tests/wpt/mozilla/tests/css/absolute_ib_split_ref.html new file mode 100644 index 00000000000..6acc697b869 --- /dev/null +++ b/tests/wpt/mozilla/tests/css/absolute_ib_split_ref.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +Servo + |