aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/gfx/paint_context.rs7
-rw-r--r--components/layout/construct.rs6
-rw-r--r--components/layout/fragment.rs18
-rw-r--r--components/layout/inline.rs5
-rw-r--r--tests/ref/basic.list1
-rw-r--r--tests/ref/jumpiness_a.html19
-rw-r--r--tests/ref/jumpiness_ref.html15
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/block-in-inline-001.htm.ini1
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/block-in-inline-002.htm.ini1
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-beginning-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-end-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-middle-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-beginning-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-end-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-middle-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-beginning-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-end-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-middle-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-beginning-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-end-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-002.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-003.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-002.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-003.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-001.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-002.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-003.htm.ini3
-rw-r--r--tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini4
30 files changed, 68 insertions, 69 deletions
diff --git a/components/gfx/paint_context.rs b/components/gfx/paint_context.rs
index df5e7a23552..62701cfb7dc 100644
--- a/components/gfx/paint_context.rs
+++ b/components/gfx/paint_context.rs
@@ -1171,7 +1171,12 @@ pub trait ToAzureRect {
impl ToAzureRect for Rect<Au> {
fn to_nearest_azure_rect(&self) -> Rect<AzFloat> {
- Rect::new(self.origin.to_nearest_azure_point(), self.size.to_nearest_azure_size())
+ let top_left = self.origin.to_nearest_azure_point();
+ let bottom_right = self.bottom_right().to_nearest_azure_point();
+ Rect::new(top_left,
+ Size2D::new((bottom_right.x - top_left.x) as AzFloat,
+ (bottom_right.y - top_left.y) as AzFloat))
+
}
fn to_azure_rect(&self) -> Rect<AzFloat> {
Rect::new(self.origin.to_azure_point(), Size2D::new(self.size.width.to_f32_px(),
diff --git a/components/layout/construct.rs b/components/layout/construct.rs
index 12eb258f8f5..cc67cc6c300 100644
--- a/components/layout/construct.rs
+++ b/components/layout/construct.rs
@@ -1249,7 +1249,7 @@ impl<'a> FlowConstructor<'a> {
let mut layout_data_ref = node.mutate_layout_data();
let layout_data = layout_data_ref.as_mut().expect("no layout data");
- let style = (*node.get_style(&layout_data)).clone();
+ let mut style = (*node.get_style(&layout_data)).clone();
let damage = layout_data.data.restyle_damage;
match node.construction_result_mut(layout_data) {
&mut ConstructionResult::None => true,
@@ -1297,8 +1297,10 @@ impl<'a> FlowConstructor<'a> {
.repair_style_and_bubble_inline_sizes(&style);
}
_ => {
+ if node.is_replaced_content() {
+ properties::modify_style_for_replaced_content(&mut style);
+ }
fragment.repair_style(&style);
- return true
}
}
}
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs
index 91cc9ddfb26..b9a2713b9a4 100644
--- a/components/layout/fragment.rs
+++ b/components/layout/fragment.rs
@@ -208,6 +208,19 @@ impl SpecificFragmentInfo {
}
}
+impl fmt::Debug for SpecificFragmentInfo {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ match *self {
+ SpecificFragmentInfo::ScannedText(ref info) => {
+ write!(f, " \"{}\"", info.run.text.slice_chars(info.range.begin().get() as usize,
+ info.range.end().get() as usize));
+ }
+ _ => {}
+ }
+ Ok(())
+ }
+}
+
/// Clamp a value obtained from style_length, based on min / max lengths.
fn clamp_size(size: Au,
min_size: LengthOrPercentage,
@@ -2120,10 +2133,11 @@ impl Fragment {
impl fmt::Debug for Fragment {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
try!(write!(f, "({} {} ", self.debug_id(), self.specific.get_type()));
- try!(write!(f, "bb {:?} bp {:?} m {:?}",
+ try!(write!(f, "bb {:?} bp {:?} m {:?}{:?}",
self.border_box,
self.border_padding,
- self.margin));
+ self.margin,
+ self.specific));
write!(f, ")")
}
}
diff --git a/components/layout/inline.rs b/components/layout/inline.rs
index 73c51134178..b16d075a738 100644
--- a/components/layout/inline.rs
+++ b/components/layout/inline.rs
@@ -689,7 +689,10 @@ pub struct InlineFragments {
impl fmt::Debug for InlineFragments {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- write!(f, "{:?}", self.fragments)
+ for fragment in self.fragments.iter() {
+ try!(write!(f, "\n * {:?}", fragment))
+ }
+ Ok(())
}
}
diff --git a/tests/ref/basic.list b/tests/ref/basic.list
index 786eb580f29..60fd6bb7f45 100644
--- a/tests/ref/basic.list
+++ b/tests/ref/basic.list
@@ -169,6 +169,7 @@ experimental == iframe/size_attributes_vertical_writing_mode.html iframe/size_at
== inset.html inset_ref.html
!= inset_blackborder.html blackborder_ref.html
== issue-1324.html issue-1324-ref.html
+== jumpiness_a.html jumpiness_ref.html
== last_child_pseudo_a.html last_child_pseudo_b.html
== last_of_type_pseudo_a.html last_of_type_pseudo_b.html
== legacy_cellspacing_attribute_a.html border_spacing_ref.html
diff --git a/tests/ref/jumpiness_a.html b/tests/ref/jumpiness_a.html
new file mode 100644
index 00000000000..8a7a58a933a
--- /dev/null
+++ b/tests/ref/jumpiness_a.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+body.hello {
+ text-decoration: underline;
+}
+</style>
+</head>
+<body>
+a
+<script>
+setTimeout(function() {
+ document.body.classList.add('hello');
+}, 0);
+</script>
+</body>
+</html>
+
diff --git a/tests/ref/jumpiness_ref.html b/tests/ref/jumpiness_ref.html
new file mode 100644
index 00000000000..ebd503a9187
--- /dev/null
+++ b/tests/ref/jumpiness_ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+body {
+ text-decoration: underline;
+}
+</style>
+</head>
+<body>
+a
+</body>
+</html>
+
+
diff --git a/tests/wpt/metadata-css/css21_dev/html4/block-in-inline-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/block-in-inline-001.htm.ini
index 70e0c6bc195..cefa10913ba 100644
--- a/tests/wpt/metadata-css/css21_dev/html4/block-in-inline-001.htm.ini
+++ b/tests/wpt/metadata-css/css21_dev/html4/block-in-inline-001.htm.ini
@@ -1,3 +1,4 @@
[block-in-inline-001.htm]
type: reftest
+ disabled: seems to assume ascent and block size above baseline are equal
expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/block-in-inline-002.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/block-in-inline-002.htm.ini
index dd2c4442a54..5dc7918a4cb 100644
--- a/tests/wpt/metadata-css/css21_dev/html4/block-in-inline-002.htm.ini
+++ b/tests/wpt/metadata-css/css21_dev/html4/block-in-inline-002.htm.ini
@@ -1,3 +1,4 @@
[block-in-inline-002.htm]
type: reftest
+ disabled: seems to assume ascent and block size above baseline are equal
expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-beginning-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-beginning-001.htm.ini
deleted file mode 100644
index ce42762a80c..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-beginning-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[delete-block-in-inlines-beginning-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-end-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-end-001.htm.ini
deleted file mode 100644
index 1f14eadb238..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-end-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[delete-block-in-inlines-end-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-middle-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-middle-001.htm.ini
deleted file mode 100644
index 9b87bf1da02..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/delete-block-in-inlines-middle-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[delete-block-in-inlines-middle-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-beginning-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-beginning-001.htm.ini
deleted file mode 100644
index 21975154b10..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-beginning-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[delete-inline-in-blocks-beginning-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-end-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-end-001.htm.ini
deleted file mode 100644
index 7ea8ee5cd1a..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-end-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[delete-inline-in-blocks-end-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-middle-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-middle-001.htm.ini
deleted file mode 100644
index 177751a066b..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/delete-inline-in-blocks-middle-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[delete-inline-in-blocks-middle-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-beginning-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-beginning-001.htm.ini
deleted file mode 100644
index ded52f14605..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-beginning-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-block-in-inlines-beginning-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-end-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-end-001.htm.ini
deleted file mode 100644
index e371772b9ad..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-end-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-block-in-inlines-end-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-middle-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-middle-001.htm.ini
deleted file mode 100644
index 81429a13f08..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-block-in-inlines-middle-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-block-in-inlines-middle-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-beginning-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-beginning-001.htm.ini
deleted file mode 100644
index e47ab82f2b9..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-beginning-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-beginning-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-end-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-end-001.htm.ini
deleted file mode 100644
index f7f011cd3a2..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-end-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-end-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-001.htm.ini
deleted file mode 100644
index 2594547c1c3..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-begin-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-002.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-002.htm.ini
deleted file mode 100644
index 953f1f7da63..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-002.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-begin-002.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-003.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-003.htm.ini
deleted file mode 100644
index 94c3a3dafb9..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-begin-003.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-begin-003.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-001.htm.ini
deleted file mode 100644
index acae67243f8..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-end-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-002.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-002.htm.ini
deleted file mode 100644
index 14220cf72f7..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-002.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-end-002.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-003.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-003.htm.ini
deleted file mode 100644
index 1bf77ea60d1..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-end-003.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-end-003.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-001.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-001.htm.ini
deleted file mode 100644
index 9e6405ea00c..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-001.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-middle-001.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-002.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-002.htm.ini
deleted file mode 100644
index 416025dc2a6..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-002.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-middle-002.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-003.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-003.htm.ini
deleted file mode 100644
index 5210ddc3c38..00000000000
--- a/tests/wpt/metadata-css/css21_dev/html4/insert-inline-in-blocks-n-inlines-middle-003.htm.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[insert-inline-in-blocks-n-inlines-middle-003.htm]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini
index aa96301fdb8..9cb4b4c28f7 100644
--- a/tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini
+++ b/tests/wpt/metadata-css/css21_dev/html4/position-relative-035.htm.ini
@@ -1,5 +1,3 @@
[position-relative-035.htm]
type: reftest
- expected:
- if (os == "mac") and (version == "OS X 10.8.5"): FAIL
- if (os == "mac") and (version == "OS X 10.10.3"): FAIL
+ expected: FAIL