From 823f3e2eb16d8cff0879e05d8db16df1fba20b39 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Fri, 1 Jun 2018 15:25:23 +1000 Subject: [PATCH 1/7] Update WR (transaction API change) --- Cargo.lock | 10 ++--- components/canvas/canvas_data.rs | 27 +++++------ components/canvas/webgl_thread.rs | 45 +++++++------------ components/gfx/font_cache_thread.rs | 16 +++---- components/layout/display_list/builder.rs | 10 +---- components/layout/display_list/items.rs | 10 +---- .../layout/display_list/webrender_helpers.rs | 8 ++-- components/malloc_size_of/lib.rs | 2 - components/net/image_cache.rs | 9 ++-- .../mix-blend-mode-paragraph.html.ini | 3 ++ .../mix-blend-mode-parent-with-text.html.ini | 3 ++ 11 files changed, 56 insertions(+), 87 deletions(-) create mode 100644 tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini create mode 100644 tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini diff --git a/Cargo.lock b/Cargo.lock index c6a22873e87..226030307d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2179,7 +2179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "plane-split" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "binary-space-partition 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3465,7 +3465,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.57.2" -source = "git+https://github.com/servo/webrender#6931a25295d17d897a9f77798392bdde66132154" +source = "git+https://github.com/servo/webrender#58de1dc2caa7bfee62f7ff45ca1a6d746c2d788c" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3485,7 +3485,7 @@ dependencies = [ "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "plane-split 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plane-split 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "ron 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3500,7 +3500,7 @@ dependencies = [ [[package]] name = "webrender_api" version = "0.57.2" -source = "git+https://github.com/servo/webrender#6931a25295d17d897a9f77798392bdde66132154" +source = "git+https://github.com/servo/webrender#58de1dc2caa7bfee62f7ff45ca1a6d746c2d788c" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3893,7 +3893,7 @@ dependencies = [ "checksum phf_generator 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6b07ffcc532ccc85e3afc45865469bf5d9e4ef5bfcf9622e3cfe80c2d275ec03" "checksum phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "07e24b0ca9643bdecd0632f2b3da6b1b89bbb0030e0b992afc1113b23a7bc2f2" "checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903" -"checksum plane-split 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "69c557e11e3a1533bc969fa596e5011e1d9f76dd61cd102ef942c9f8654b17a2" +"checksum plane-split 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7079b8485b4f9d9560dee7a69ca8f6ca781f9f284ff9d2bf27255d440b03e4af" "checksum png 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925" "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" "checksum proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "77997c53ae6edd6d187fec07ec41b207063b5ee6f33680e9fa86d405cdd313d4" diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index 6e5d0e679dc..28aec9f5dd4 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -416,8 +416,7 @@ impl<'a> CanvasData<'a> { let size = self.drawtarget.get_size(); let descriptor = webrender_api::ImageDescriptor { - width: size.width as u32, - height: size.height as u32, + size: webrender_api::DeviceUintSize::new(size.width as u32, size.height as u32), stride: None, format: webrender_api::ImageFormat::BGRA8, offset: 0, @@ -426,31 +425,25 @@ impl<'a> CanvasData<'a> { }; let data = webrender_api::ImageData::Raw(Arc::new(element.into())); - let mut updates = webrender_api::ResourceUpdates::new(); + let mut txn = webrender_api::Transaction::new(); match self.image_key { Some(image_key) => { debug!("Updating image {:?}.", image_key); - updates.update_image(image_key, - descriptor, - data, - None); + txn.update_image(image_key, descriptor, data, None); } None => { self.image_key = Some(self.webrender_api.generate_image_key()); debug!("New image {:?}.", self.image_key); - updates.add_image(self.image_key.unwrap(), - descriptor, - data, - None); + txn.add_image(self.image_key.unwrap(), descriptor, data, None); } } if let Some(image_key) = mem::replace(&mut self.very_old_image_key, self.old_image_key.take()) { - updates.delete_image(image_key); + txn.delete_image(image_key); } - self.webrender_api.update_resources(updates); + self.webrender_api.update_resources(txn.resource_updates); let data = CanvasImageData { image_key: self.image_key.unwrap(), @@ -647,16 +640,16 @@ impl<'a> CanvasData<'a> { impl<'a> Drop for CanvasData<'a> { fn drop(&mut self) { - let mut updates = webrender_api::ResourceUpdates::new(); + let mut txn = webrender_api::Transaction::new(); if let Some(image_key) = self.old_image_key.take() { - updates.delete_image(image_key); + txn.delete_image(image_key); } if let Some(image_key) = self.very_old_image_key.take() { - updates.delete_image(image_key); + txn.delete_image(image_key); } - self.webrender_api.update_resources(updates); + self.webrender_api.update_resources(txn.resource_updates); } } diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 7b0b120d037..8ab129680de 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -268,13 +268,13 @@ impl WebGLThread WebGLThread WebGLThread WebGLThread WebGLThread, alpha: bool) -> webrender_api::ImageDescriptor { webrender_api::ImageDescriptor { - width: size.width as u32, - height: size.height as u32, + size: webrender_api::DeviceUintSize::new(size.width as u32, size.height as u32), stride: None, format: webrender_api::ImageFormat::BGRA8, offset: 0, diff --git a/components/gfx/font_cache_thread.rs b/components/gfx/font_cache_thread.rs index df04519e90b..334a1bb41ec 100644 --- a/components/gfx/font_cache_thread.rs +++ b/components/gfx/font_cache_thread.rs @@ -177,14 +177,14 @@ impl FontCache { .entry((font_key, size)) .or_insert_with(|| { let key = webrender_api.generate_font_instance_key(); - let mut updates = webrender_api::ResourceUpdates::new(); - updates.add_font_instance(key, + let mut txn = webrender_api::Transaction::new(); + txn.add_font_instance(key, font_key, size, None, None, Vec::new()); - webrender_api.update_resources(updates); + webrender_api.update_resources(txn.resource_updates); key }); @@ -373,13 +373,13 @@ impl FontCache { let font_key = *webrender_fonts.entry(template.identifier.clone()).or_insert_with(|| { let font_key = webrender_api.generate_font_key(); - let mut updates = webrender_api::ResourceUpdates::new(); + let mut txn = webrender_api::Transaction::new(); match (template.bytes_if_in_memory(), template.native_font()) { - (Some(bytes), _) => updates.add_raw_font(font_key, bytes, 0), - (None, Some(native_font)) => updates.add_native_font(font_key, native_font), - (None, None) => updates.add_raw_font(font_key, template.bytes().clone(), 0), + (Some(bytes), _) => txn.add_raw_font(font_key, bytes, 0), + (None, Some(native_font)) => txn.add_native_font(font_key, native_font), + (None, None) => txn.add_raw_font(font_key, template.bytes().clone(), 0), } - webrender_api.update_resources(updates); + webrender_api.update_resources(txn.resource_updates); font_key }); diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index 16a1fc85770..2539f648964 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -73,8 +73,8 @@ use style_traits::cursor::CursorKind; use table_cell::CollapsedBordersForCell; use webrender_api::{self, BorderRadius, BorderSide, BoxShadowClipMode, ColorF, ExternalScrollId}; use webrender_api::{FilterOp, GlyphInstance, ImageRendering, LayoutRect, LayoutSize}; -use webrender_api::{LayoutTransform, LayoutVector2D, LineStyle, NormalBorder, ScrollPolicy}; -use webrender_api::{ScrollSensitivity, StickyOffsetBounds}; +use webrender_api::{LayoutTransform, LayoutVector2D, LineStyle, NormalBorder, ScrollSensitivity}; +use webrender_api::StickyOffsetBounds; fn establishes_containing_block_for_absolute( flags: StackingContextCollectionFlags, @@ -760,7 +760,6 @@ pub trait FragmentDisplayListBuilding { &self, id: StackingContextId, base_flow: &BaseFlow, - scroll_policy: ScrollPolicy, context_type: StackingContextType, established_reference_frame: Option, parent_clipping_and_scrolling: ClippingAndScrolling, @@ -1887,7 +1886,6 @@ impl FragmentDisplayListBuilding for Fragment { &self, id: StackingContextId, base_flow: &BaseFlow, - scroll_policy: ScrollPolicy, context_type: StackingContextType, established_reference_frame: Option, parent_clipping_and_scrolling: ClippingAndScrolling, @@ -1931,7 +1929,6 @@ impl FragmentDisplayListBuilding for Fragment { self.transform_matrix(&border_box), self.style().get_used_transform_style().to_layout(), self.perspective_matrix(&border_box), - scroll_policy, parent_clipping_and_scrolling, established_reference_frame, ) @@ -2713,7 +2710,6 @@ impl BlockFlowDisplayListBuilding for BlockFlow { let new_context = self.fragment.create_stacking_context( self.base.stacking_context_id, &self.base, - ScrollPolicy::Scrollable, stacking_context_type, None, parent_clipping_and_scrolling, @@ -2747,7 +2743,6 @@ impl BlockFlowDisplayListBuilding for BlockFlow { let stacking_context = self.fragment.create_stacking_context( self.base.stacking_context_id, &self.base, - ScrollPolicy::Scrollable, StackingContextType::Real, established_reference_frame, parent_clipping_and_scrolling, @@ -2885,7 +2880,6 @@ impl InlineFlowDisplayListBuilding for InlineFlow { let stacking_context = fragment.create_stacking_context( fragment.stacking_context_id, &self.base, - ScrollPolicy::Scrollable, StackingContextType::Real, None, state.current_clipping_and_scrolling, diff --git a/components/layout/display_list/items.rs b/components/layout/display_list/items.rs index 7d293996c58..1010e8ada5d 100644 --- a/components/layout/display_list/items.rs +++ b/components/layout/display_list/items.rs @@ -26,8 +26,8 @@ use webrender_api::{BorderRadius, BorderWidths, BoxShadowClipMode, ClipMode, Col use webrender_api::{ComplexClipRegion, ExtendMode, ExternalScrollId, FilterOp, FontInstanceKey}; use webrender_api::{GlyphInstance, GradientStop, ImageKey, ImageRendering, LayoutPoint}; use webrender_api::{LayoutRect, LayoutSize, LayoutTransform, LayoutVector2D, LineStyle}; -use webrender_api::{MixBlendMode, NinePatchBorder, NormalBorder, ScrollPolicy, ScrollSensitivity}; -use webrender_api::{Shadow, StickyOffsetBounds, TransformStyle}; +use webrender_api::{MixBlendMode, NinePatchBorder, NormalBorder, ScrollSensitivity, Shadow}; +use webrender_api::{StickyOffsetBounds, TransformStyle}; pub use style::dom::OpaqueNode; @@ -203,9 +203,6 @@ pub struct StackingContext { /// The perspective matrix to be applied to children. pub perspective: Option, - /// The scroll policy of this layer. - pub scroll_policy: ScrollPolicy, - /// The clip and scroll info for this StackingContext. pub parent_clipping_and_scrolling: ClippingAndScrolling, @@ -227,7 +224,6 @@ impl StackingContext { transform: Option, transform_style: TransformStyle, perspective: Option, - scroll_policy: ScrollPolicy, parent_clipping_and_scrolling: ClippingAndScrolling, established_reference_frame: Option, ) -> StackingContext { @@ -242,7 +238,6 @@ impl StackingContext { transform, transform_style, perspective, - scroll_policy, parent_clipping_and_scrolling, established_reference_frame, } @@ -261,7 +256,6 @@ impl StackingContext { None, TransformStyle::Flat, None, - ScrollPolicy::Scrollable, ClippingAndScrolling::simple(ClipScrollNodeIndex::root_scroll_node()), None, ) diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index da66b9c2b80..2e805f35a41 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -7,9 +7,8 @@ // This might be achieved by sharing types between WR and Servo display lists, or // completely converting layout to directly generate WebRender display lists, for example. -use display_list::items::{BorderDetails, ClipScrollNode}; -use display_list::items::{ClipScrollNodeIndex, ClipScrollNodeType, DisplayItem}; -use display_list::items::{DisplayList, StackingContextType}; +use display_list::items::{BorderDetails, ClipScrollNode, ClipScrollNodeIndex, ClipScrollNodeType}; +use display_list::items::{DisplayItem, DisplayList, StackingContextType}; use msg::constellation_msg::PipelineId; use webrender_api::{self, ClipAndScrollInfo, ClipId, DisplayListBuilder, GlyphRasterSpace}; @@ -213,7 +212,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { builder.pop_all_shadows(); }, DisplayItem::Iframe(ref item) => { - builder.push_iframe(&self.prim_info(), item.iframe.to_webrender()); + builder.push_iframe(&self.prim_info(), item.iframe.to_webrender(), true); }, DisplayItem::PushStackingContext(ref item) => { let stacking_context = &item.stacking_context; @@ -222,7 +221,6 @@ impl WebRenderDisplayItemConverter for DisplayItem { let reference_frame_clip_id = builder.push_stacking_context( &webrender_api::LayoutPrimitiveInfo::new(stacking_context.bounds), None, - stacking_context.scroll_policy, stacking_context.transform.map(Into::into), stacking_context.transform_style, stacking_context.perspective, diff --git a/components/malloc_size_of/lib.rs b/components/malloc_size_of/lib.rs index b4c7c4232fb..eaec2cb20dc 100644 --- a/components/malloc_size_of/lib.rs +++ b/components/malloc_size_of/lib.rs @@ -807,8 +807,6 @@ malloc_size_of_is_0!(webrender_api::NormalBorder); #[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::RepeatMode); #[cfg(feature = "webrender_api")] -malloc_size_of_is_0!(webrender_api::ScrollPolicy); -#[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::ScrollSensitivity); #[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::StickyOffsetBounds); diff --git a/components/net/image_cache.rs b/components/net/image_cache.rs index 47eb829f962..40ef8041ef7 100644 --- a/components/net/image_cache.rs +++ b/components/net/image_cache.rs @@ -71,8 +71,7 @@ fn set_webrender_image_key(webrender_api: &webrender_api::RenderApi, image: &mut } }; let descriptor = webrender_api::ImageDescriptor { - width: image.width, - height: image.height, + size: webrender_api::DeviceUintSize::new(image.width, image.height), stride: None, format: webrender_api::ImageFormat::BGRA8, offset: 0, @@ -81,9 +80,9 @@ fn set_webrender_image_key(webrender_api: &webrender_api::RenderApi, image: &mut }; let data = webrender_api::ImageData::new(bytes); let image_key = webrender_api.generate_image_key(); - let mut updates = webrender_api::ResourceUpdates::new(); - updates.add_image(image_key, descriptor, data, None); - webrender_api.update_resources(updates); + let mut txn = webrender_api::Transaction::new(); + txn.add_image(image_key, descriptor, data, None); + webrender_api.update_resources(txn.resource_updates); image.id = Some(image_key); } diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini new file mode 100644 index 00000000000..5ca8396f2ab --- /dev/null +++ b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini @@ -0,0 +1,3 @@ +[mix-blend-mode-paragraph.html] + type: reftest + expected: FAIL diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini new file mode 100644 index 00000000000..18fdc4394af --- /dev/null +++ b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini @@ -0,0 +1,3 @@ +[mix-blend-mode-parent-with-text.html] + type: reftest + expected: FAIL From 01c0e2aba0ccf032cc9ff2788b9874af354418ae Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Wed, 30 May 2018 18:17:02 +0200 Subject: [PATCH 2/7] Changes for separate reference frame PR (#2756) --- .../layout/display_list/webrender_helpers.rs | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index 2e805f35a41..a6070ecb61d 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -11,6 +11,7 @@ use display_list::items::{BorderDetails, ClipScrollNode, ClipScrollNodeIndex, Cl use display_list::items::{DisplayItem, DisplayList, StackingContextType}; use msg::constellation_msg::PipelineId; use webrender_api::{self, ClipAndScrollInfo, ClipId, DisplayListBuilder, GlyphRasterSpace}; +use webrender_api::LayoutPoint; pub trait WebRenderDisplayListConverter { fn convert_to_webrender(&self, pipeline_id: PipelineId) -> DisplayListBuilder; @@ -218,23 +219,32 @@ impl WebRenderDisplayItemConverter for DisplayItem { let stacking_context = &item.stacking_context; debug_assert_eq!(stacking_context.context_type, StackingContextType::Real); - let reference_frame_clip_id = builder.push_stacking_context( - &webrender_api::LayoutPrimitiveInfo::new(stacking_context.bounds), + let mut info = webrender_api::LayoutPrimitiveInfo::new(stacking_context.bounds); + if let Some(frame_index) = stacking_context.established_reference_frame { + debug_assert!( + stacking_context.transform.is_some() || + stacking_context.perspective.is_some() + ); + + let clip_id = builder.push_reference_frame( + &info.clone(), + stacking_context.transform.map(Into::into), + stacking_context.perspective, + ); + clip_ids[frame_index.to_index()] = Some(clip_id); + + info.rect.origin = LayoutPoint::zero(); + info.clip_rect.origin = LayoutPoint::zero(); + } + + builder.push_stacking_context( + &info, None, - stacking_context.transform.map(Into::into), stacking_context.transform_style, - stacking_context.perspective, stacking_context.mix_blend_mode, stacking_context.filters.clone(), GlyphRasterSpace::Screen, ); - - match (reference_frame_clip_id, stacking_context.established_reference_frame) { - (Some(webrender_id), Some(frame_index)) => - clip_ids[frame_index.to_index()] = Some(webrender_id), - (None, None) => {}, - _ => warn!("Mismatch between reference frame establishment!"), - } }, DisplayItem::PopStackingContext(_) => builder.pop_stacking_context(), DisplayItem::DefineClipScrollNode(ref item) => { From 2d4b223cf48d1b62df4e738db86b707409e3e50e Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Wed, 20 Jun 2018 09:57:26 +1000 Subject: [PATCH 3/7] Update to WR with text snapping fix. --- Cargo.lock | 4 ++-- .../mix-blend-mode/mix-blend-mode-paragraph.html.ini | 3 --- .../mix-blend-mode-sibling-with-3D-transform.html.ini | 3 +++ 3 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini create mode 100644 tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini diff --git a/Cargo.lock b/Cargo.lock index 226030307d7..8ee7e424224 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3465,7 +3465,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.57.2" -source = "git+https://github.com/servo/webrender#58de1dc2caa7bfee62f7ff45ca1a6d746c2d788c" +source = "git+https://github.com/servo/webrender#db26bc0e86bd5585ee8b7426aef9f3443b005fdb" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3500,7 +3500,7 @@ dependencies = [ [[package]] name = "webrender_api" version = "0.57.2" -source = "git+https://github.com/servo/webrender#58de1dc2caa7bfee62f7ff45ca1a6d746c2d788c" +source = "git+https://github.com/servo/webrender#db26bc0e86bd5585ee8b7426aef9f3443b005fdb" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini deleted file mode 100644 index 5ca8396f2ab..00000000000 --- a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[mix-blend-mode-paragraph.html] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini new file mode 100644 index 00000000000..47ca5b4ed24 --- /dev/null +++ b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini @@ -0,0 +1,3 @@ +[mix-blend-mode-sibling-with-3D-transform.html] + type: reftest + expected: FAIL From d41c512e980ea17dc2423f08eb5ccea608e8ca58 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Fri, 22 Jun 2018 18:13:30 +0200 Subject: [PATCH 4/7] Allow inline elements to create reference frames This is important so that transforms applied to elements actually apply to the display items created for those elements. --- components/layout/display_list/builder.rs | 73 +++++++++++++++++------ components/layout/fragment.rs | 11 +++- components/layout/tests/size_of.rs | 2 +- 3 files changed, 67 insertions(+), 19 deletions(-) diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index 2539f648964..5d9a738606e 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -576,6 +576,12 @@ pub trait FragmentDisplayListBuilding { state: &mut StackingContextCollectionState, ) -> bool; + fn create_stacking_context_for_inline_block( + &mut self, + base: &BaseFlow, + state: &mut StackingContextCollectionState, + ) -> bool; + /// Adds the display items necessary to paint the background of this fragment to the display /// list if necessary. fn build_display_list_for_background_if_applicable( @@ -816,6 +822,35 @@ impl FragmentDisplayListBuilding for Fragment { } } + fn create_stacking_context_for_inline_block( + &mut self, + base: &BaseFlow, + state: &mut StackingContextCollectionState, + ) -> bool { + self.stacking_context_id = state.allocate_stacking_context_info(StackingContextType::Real); + + let established_reference_frame = if self.can_establish_reference_frame() { + // WebRender currently creates reference frames automatically, so just add + // a placeholder node to allocate a ClipScrollNodeIndex for this reference frame. + self.established_reference_frame = + Some(state.add_clip_scroll_node(ClipScrollNode::placeholder())); + self.established_reference_frame + } else { + None + }; + + let current_stacking_context_id = state.current_stacking_context_id; + let stacking_context = self.create_stacking_context( + self.stacking_context_id, + &base, + StackingContextType::Real, + established_reference_frame, + state.current_clipping_and_scrolling, + ); + state.add_stacking_context(current_stacking_context_id, stacking_context); + true + } + fn build_display_list_for_background_if_applicable( &self, state: &mut DisplayListBuildState, @@ -1562,6 +1597,11 @@ impl FragmentDisplayListBuilding for Fragment { display_list_section: DisplayListSection, clip: Rect, ) { + let previous_clipping_and_scrolling = state.current_clipping_and_scrolling; + if let Some(index) = self.established_reference_frame { + state.current_clipping_and_scrolling = ClippingAndScrolling::simple(index); + } + self.restyle_damage.remove(ServoRestyleDamage::REPAINT); self.build_display_list_no_damage( state, @@ -1569,7 +1609,9 @@ impl FragmentDisplayListBuilding for Fragment { border_painting_mode, display_list_section, clip, - ) + ); + + state.current_clipping_and_scrolling = previous_clipping_and_scrolling; } fn build_display_list_no_damage( @@ -2861,8 +2903,11 @@ impl InlineFlowDisplayListBuilding for InlineFlow { .cloned() .unwrap_or_else(Rect::max_rect); + let previous_cb_clipping_and_scrolling = state.containing_block_clipping_and_scrolling; + for fragment in self.fragments.fragments.iter_mut() { - let previous_cb_clipping_and_scrolling = state.containing_block_clipping_and_scrolling; + state.containing_block_clipping_and_scrolling = previous_cb_clipping_and_scrolling; + if establishes_containing_block_for_absolute( StackingContextCollectionFlags::empty(), fragment.style.get_box().position, @@ -2871,26 +2916,20 @@ impl InlineFlowDisplayListBuilding for InlineFlow { state.current_clipping_and_scrolling; } + // We clear this here, but it might be set again if we create a stacking context for + // this fragment. + fragment.established_reference_frame = None; + if !fragment.collect_stacking_contexts_for_blocklike_fragment(state) { - if fragment.establishes_stacking_context() { - fragment.stacking_context_id = - state.allocate_stacking_context_info(StackingContextType::Real); - - let current_stacking_context_id = state.current_stacking_context_id; - let stacking_context = fragment.create_stacking_context( - fragment.stacking_context_id, - &self.base, - StackingContextType::Real, - None, - state.current_clipping_and_scrolling, - ); - - state.add_stacking_context(current_stacking_context_id, stacking_context); - } else { + if !fragment.establishes_stacking_context() { fragment.stacking_context_id = state.current_stacking_context_id; + } else { + fragment.create_stacking_context_for_inline_block(&self.base, state); } } + // Reset the containing block clipping and scrolling before each loop iteration, + // so we don't pollute subsequent fragments. state.containing_block_clipping_and_scrolling = previous_cb_clipping_and_scrolling; } } diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index 38ea9d03b93..c3b3ce5fb3e 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -11,7 +11,7 @@ use app_units::Au; use canvas_traits::canvas::{CanvasMsg, CanvasId}; use context::{LayoutContext, with_thread_local_font_context}; use display_list::ToLayout; -use display_list::items::{BLUR_INFLATION_FACTOR, OpaqueNode}; +use display_list::items::{BLUR_INFLATION_FACTOR, ClipScrollNodeIndex, OpaqueNode}; use euclid::{Point2D, Vector2D, Rect, Size2D}; use floats::ClearType; use flow::{GetBaseFlow, ImmutableFlowUtils}; @@ -152,6 +152,11 @@ pub struct Fragment { /// to 0, but it assigned during the collect_stacking_contexts phase of display /// list construction. pub stacking_context_id: StackingContextId, + + /// The indices of this Fragment's ClipScrollNode. If this fragment doesn't have a + /// `established_reference_frame` assigned, it will use the `clipping_and_scrolling` of the + /// parent block. + pub established_reference_frame: Option, } impl Serialize for Fragment { @@ -633,6 +638,7 @@ impl Fragment { flags: FragmentFlags::empty(), debug_id: DebugId::new(), stacking_context_id: StackingContextId::root(), + established_reference_frame: None, } } @@ -662,6 +668,7 @@ impl Fragment { flags: FragmentFlags::empty(), debug_id: DebugId::new(), stacking_context_id: StackingContextId::root(), + established_reference_frame: None, } } @@ -687,6 +694,7 @@ impl Fragment { flags: FragmentFlags::empty(), debug_id: DebugId::new(), stacking_context_id: StackingContextId::root(), + established_reference_frame: None, } } @@ -715,6 +723,7 @@ impl Fragment { flags: FragmentFlags::empty(), debug_id: self.debug_id.clone(), stacking_context_id: StackingContextId::root(), + established_reference_frame: None, } } diff --git a/components/layout/tests/size_of.rs b/components/layout/tests/size_of.rs index 54b5ef39830..f12b0049f4b 100644 --- a/components/layout/tests/size_of.rs +++ b/components/layout/tests/size_of.rs @@ -10,5 +10,5 @@ extern crate layout; use layout::Fragment; use layout::SpecificFragmentInfo; -size_of_test!(test_size_of_fragment, Fragment, 160); +size_of_test!(test_size_of_fragment, Fragment, 176); size_of_test!(test_size_of_specific_fragment_info, SpecificFragmentInfo, 24); From 253117ece652a416f3fca48056462b2f57087717 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Fri, 22 Jun 2018 17:59:35 +0200 Subject: [PATCH 5/7] New reference frames should create containing blocks Transforms should always create containing blocks. This bug already existed in Servo, but was covered up by the reference frame id replacement feature in WebRender. Now that we create reference frames manually we need to fix it. --- components/layout/display_list/builder.rs | 18 ++++++++++++++---- components/layout/table_rowgroup.rs | 2 +- components/layout/table_wrapper.rs | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index 5d9a738606e..c963322323a 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -79,8 +79,13 @@ use webrender_api::StickyOffsetBounds; fn establishes_containing_block_for_absolute( flags: StackingContextCollectionFlags, positioning: StylePosition, + established_reference_frame: bool, ) -> bool { - !flags.contains(StackingContextCollectionFlags::NEVER_CREATES_CONTAINING_BLOCK) && + if established_reference_frame { + return true; + } + + !flags.contains(StackingContextCollectionFlags::POSITION_NEVER_CREATES_CONTAINING_BLOCK) && StylePosition::Static != positioning } @@ -2167,7 +2172,7 @@ impl FragmentDisplayListBuilding for Fragment { bitflags! { pub struct StackingContextCollectionFlags: u8 { /// This flow never establishes a containing block. - const NEVER_CREATES_CONTAINING_BLOCK = 0b001; + const POSITION_NEVER_CREATES_CONTAINING_BLOCK = 0b001; /// This flow never creates a ClipScrollNode. const NEVER_CREATES_CLIP_SCROLL_NODE = 0b010; /// This flow never creates a stacking context. @@ -2445,7 +2450,11 @@ impl BlockFlowDisplayListBuilding for BlockFlow { flags, ); - if establishes_containing_block_for_absolute(flags, self.positioning()) { + if establishes_containing_block_for_absolute( + flags, + self.positioning(), + established_reference_frame.is_some() + ) { state.containing_block_clipping_and_scrolling = state.current_clipping_and_scrolling; } @@ -2534,7 +2543,7 @@ impl BlockFlowDisplayListBuilding for BlockFlow { // We keep track of our position so that any stickily positioned elements can // properly determine the extent of their movement relative to scrolling containers. - if !flags.contains(StackingContextCollectionFlags::NEVER_CREATES_CONTAINING_BLOCK) { + if !flags.contains(StackingContextCollectionFlags::POSITION_NEVER_CREATES_CONTAINING_BLOCK) { let border_box = if self.fragment.establishes_stacking_context() { stacking_relative_border_box } else { @@ -2911,6 +2920,7 @@ impl InlineFlowDisplayListBuilding for InlineFlow { if establishes_containing_block_for_absolute( StackingContextCollectionFlags::empty(), fragment.style.get_box().position, + false, ) { state.containing_block_clipping_and_scrolling = state.current_clipping_and_scrolling; diff --git a/components/layout/table_rowgroup.rs b/components/layout/table_rowgroup.rs index 85bccb18ade..8934f77a266 100644 --- a/components/layout/table_rowgroup.rs +++ b/components/layout/table_rowgroup.rs @@ -186,7 +186,7 @@ impl Flow for TableRowGroupFlow { fn collect_stacking_contexts(&mut self, state: &mut StackingContextCollectionState) { self.block_flow.collect_stacking_contexts_for_block(state, - StackingContextCollectionFlags::NEVER_CREATES_CONTAINING_BLOCK); + StackingContextCollectionFlags::POSITION_NEVER_CREATES_CONTAINING_BLOCK); } fn repair_style(&mut self, new_style: &::ServoArc) { diff --git a/components/layout/table_wrapper.rs b/components/layout/table_wrapper.rs index 7336efa41e9..90be14876cc 100644 --- a/components/layout/table_wrapper.rs +++ b/components/layout/table_wrapper.rs @@ -464,7 +464,7 @@ impl Flow for TableWrapperFlow { fn collect_stacking_contexts(&mut self, state: &mut StackingContextCollectionState) { self.block_flow.collect_stacking_contexts_for_block( state, - StackingContextCollectionFlags::NEVER_CREATES_CONTAINING_BLOCK | + StackingContextCollectionFlags::POSITION_NEVER_CREATES_CONTAINING_BLOCK | StackingContextCollectionFlags::NEVER_CREATES_CLIP_SCROLL_NODE); } From 7d672555be73bf0a057e8596b96d3843b0627eb2 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Fri, 22 Jun 2018 17:56:11 +0200 Subject: [PATCH 6/7] Give stacking contexts the right reference frame id Stacking contexts that create reference frames should be created with the positioning node set to the reference frames that surround them. --- components/layout/display_list/webrender_helpers.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index a6070ecb61d..d056d8c4655 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -235,6 +235,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { info.rect.origin = LayoutPoint::zero(); info.clip_rect.origin = LayoutPoint::zero(); + builder.push_clip_id(clip_id); } builder.push_stacking_context( @@ -245,6 +246,10 @@ impl WebRenderDisplayItemConverter for DisplayItem { stacking_context.filters.clone(), GlyphRasterSpace::Screen, ); + + if stacking_context.established_reference_frame.is_some() { + builder.pop_clip_id(); + } }, DisplayItem::PopStackingContext(_) => builder.pop_stacking_context(), DisplayItem::DefineClipScrollNode(ref item) => { From ee784a79c4fbdd3b710b6f025f7151f3bc5211eb Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Mon, 25 Jun 2018 14:15:46 +1000 Subject: [PATCH 7/7] Update text expectations. --- .../css/CSS2/tables/table-anonymous-objects-009.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-010.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-011.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-012.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-017.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-018.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-019.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-020.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-115.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-116.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-121.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-122.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-173.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-174.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-175.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-176.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-197.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-198.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-199.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-200.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-201.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-202.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-203.xht.ini | 5 +++++ .../css/CSS2/tables/table-anonymous-objects-204.xht.ini | 5 +++++ .../mix-blend-mode/mix-blend-mode-parent-with-text.html.ini | 3 ++- .../metadata/css/css-transforms/transform-input-001.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-002.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-003.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-004.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-005.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-006.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-007.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-008.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-009.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-010.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-012.html.ini | 5 +++++ .../metadata/css/css-transforms/transform-input-013.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-014.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-015.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-016.html.ini | 4 ++++ .../metadata/css/css-transforms/transform-input-017.html.ini | 5 +++++ .../metadata/css/css-transforms/transform-input-018.html.ini | 5 +++++ .../metadata/css/css-transforms/transform-input-019.html.ini | 4 ++++ 43 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-009.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-010.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-011.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-012.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-017.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-018.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-019.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-020.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-115.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-116.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-121.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-122.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-173.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-174.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-175.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-176.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-197.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-198.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-199.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-200.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-201.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-202.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-203.xht.ini create mode 100644 tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-204.xht.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-001.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-002.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-003.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-004.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-005.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-006.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-007.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-008.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-009.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-010.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-012.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-013.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-014.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-015.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-016.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-017.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-018.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-input-019.html.ini diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-009.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-009.xht.ini new file mode 100644 index 00000000000..816b1d311bb --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-009.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-009.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-010.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-010.xht.ini new file mode 100644 index 00000000000..4e7ef0dccde --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-010.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-010.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-011.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-011.xht.ini new file mode 100644 index 00000000000..9feaf71bd67 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-011.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-011.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-012.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-012.xht.ini new file mode 100644 index 00000000000..131abdab42c --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-012.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-012.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-017.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-017.xht.ini new file mode 100644 index 00000000000..f9aef3fab48 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-017.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-017.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-018.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-018.xht.ini new file mode 100644 index 00000000000..a93fa38e5e5 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-018.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-018.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-019.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-019.xht.ini new file mode 100644 index 00000000000..5d9cda4afbf --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-019.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-019.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-020.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-020.xht.ini new file mode 100644 index 00000000000..12947886c19 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-020.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-020.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-115.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-115.xht.ini new file mode 100644 index 00000000000..fc301f6250d --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-115.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-115.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-116.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-116.xht.ini new file mode 100644 index 00000000000..89e2d4570ec --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-116.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-116.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-121.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-121.xht.ini new file mode 100644 index 00000000000..935efb86657 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-121.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-121.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-122.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-122.xht.ini new file mode 100644 index 00000000000..8a66dfce0d1 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-122.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-122.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-173.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-173.xht.ini new file mode 100644 index 00000000000..fec735227f6 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-173.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-173.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-174.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-174.xht.ini new file mode 100644 index 00000000000..e71b0f5e9c6 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-174.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-174.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-175.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-175.xht.ini new file mode 100644 index 00000000000..4e12000857d --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-175.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-175.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-176.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-176.xht.ini new file mode 100644 index 00000000000..659c592f01a --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-176.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-176.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-197.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-197.xht.ini new file mode 100644 index 00000000000..4b83df67c85 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-197.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-197.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-198.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-198.xht.ini new file mode 100644 index 00000000000..0135b7f4dc7 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-198.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-198.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-199.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-199.xht.ini new file mode 100644 index 00000000000..51be43ee654 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-199.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-199.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-200.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-200.xht.ini new file mode 100644 index 00000000000..bafb9882ef4 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-200.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-200.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-201.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-201.xht.ini new file mode 100644 index 00000000000..79154b48eff --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-201.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-201.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-202.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-202.xht.ini new file mode 100644 index 00000000000..4fff88dd0da --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-202.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-202.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-203.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-203.xht.ini new file mode 100644 index 00000000000..d853124bd2e --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-203.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-203.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-204.xht.ini b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-204.xht.ini new file mode 100644 index 00000000000..a8c92f18dcc --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/tables/table-anonymous-objects-204.xht.ini @@ -0,0 +1,5 @@ +[table-anonymous-objects-204.xht] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini index 18fdc4394af..e72482e37fa 100644 --- a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini +++ b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini @@ -1,3 +1,4 @@ [mix-blend-mode-parent-with-text.html] type: reftest - expected: FAIL + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-001.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-001.html.ini new file mode 100644 index 00000000000..bb7775c1f26 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-001.html.ini @@ -0,0 +1,4 @@ +[transform-input-001.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-002.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-002.html.ini new file mode 100644 index 00000000000..e340df538c9 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-002.html.ini @@ -0,0 +1,4 @@ +[transform-input-002.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-003.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-003.html.ini new file mode 100644 index 00000000000..7bb17627e41 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-003.html.ini @@ -0,0 +1,4 @@ +[transform-input-003.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-004.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-004.html.ini new file mode 100644 index 00000000000..12fb0f8c3e6 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-004.html.ini @@ -0,0 +1,4 @@ +[transform-input-004.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-005.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-005.html.ini new file mode 100644 index 00000000000..76b23603452 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-005.html.ini @@ -0,0 +1,4 @@ +[transform-input-005.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-006.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-006.html.ini new file mode 100644 index 00000000000..f832da76ab5 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-006.html.ini @@ -0,0 +1,4 @@ +[transform-input-006.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-007.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-007.html.ini new file mode 100644 index 00000000000..91d9f5d354d --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-007.html.ini @@ -0,0 +1,4 @@ +[transform-input-007.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-008.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-008.html.ini new file mode 100644 index 00000000000..a7193849f0e --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-008.html.ini @@ -0,0 +1,4 @@ +[transform-input-008.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-009.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-009.html.ini new file mode 100644 index 00000000000..4c738205f86 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-009.html.ini @@ -0,0 +1,4 @@ +[transform-input-009.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-010.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-010.html.ini new file mode 100644 index 00000000000..e0ab3a5fb4e --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-010.html.ini @@ -0,0 +1,4 @@ +[transform-input-010.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-012.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-012.html.ini new file mode 100644 index 00000000000..1528940c1da --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-012.html.ini @@ -0,0 +1,5 @@ +[transform-input-012.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-013.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-013.html.ini new file mode 100644 index 00000000000..bbdc65f2767 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-013.html.ini @@ -0,0 +1,4 @@ +[transform-input-013.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-014.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-014.html.ini new file mode 100644 index 00000000000..76eaa8ade6e --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-014.html.ini @@ -0,0 +1,4 @@ +[transform-input-014.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-015.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-015.html.ini new file mode 100644 index 00000000000..4691ee5df7a --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-015.html.ini @@ -0,0 +1,4 @@ +[transform-input-015.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-016.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-016.html.ini new file mode 100644 index 00000000000..4a91e375997 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-016.html.ini @@ -0,0 +1,4 @@ +[transform-input-016.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-017.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-017.html.ini new file mode 100644 index 00000000000..b6c96fff2e3 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-017.html.ini @@ -0,0 +1,5 @@ +[transform-input-017.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "linux": FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-018.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-018.html.ini new file mode 100644 index 00000000000..a2a62eedac3 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-018.html.ini @@ -0,0 +1,5 @@ +[transform-input-018.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: + if os == "mac": FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-input-019.html.ini b/tests/wpt/metadata/css/css-transforms/transform-input-019.html.ini new file mode 100644 index 00000000000..94f584c3699 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-input-019.html.ini @@ -0,0 +1,4 @@ +[transform-input-019.html] + type: reftest + bug: https://github.com/servo/servo/issues/21092 + expected: FAIL