diff --git a/components/layout_2020/flow/root.rs b/components/layout_2020/flow/root.rs index 80a42c70701..fb05049f4a8 100644 --- a/components/layout_2020/flow/root.rs +++ b/components/layout_2020/flow/root.rs @@ -538,6 +538,39 @@ impl FragmentTree { }) .unwrap_or_else(Rect::zero) } + + pub fn get_scroll_area_for_node(&self, requested_node: OpaqueNode) -> Rect { + let mut scroll_area: PhysicalRect = PhysicalRect::zero(); + let tag_to_find = Tag::Node(requested_node); + self.find(|fragment, _, containing_block| { + if fragment.tag() != Some(tag_to_find) { + return None::<()>; + } + + scroll_area = match fragment { + Fragment::Box(fragment) => fragment + .scrollable_overflow(&containing_block) + .translate(containing_block.origin.to_vector()), + Fragment::Text(_) | + Fragment::AbsoluteOrFixedPositioned(_) | + Fragment::Image(_) | + Fragment::IFrame(_) | + Fragment::Anonymous(_) => return None, + }; + None::<()> + }); + + Rect::new( + Point2D::new( + scroll_area.origin.x.px() as i32, + scroll_area.origin.y.px() as i32, + ), + Size2D::new( + scroll_area.size.width.px() as i32, + scroll_area.size.height.px() as i32, + ), + ) + } } /// https://drafts.csswg.org/css-backgrounds/#root-background diff --git a/components/layout_2020/query.rs b/components/layout_2020/query.rs index 0e99ec88fac..f59163a3a7c 100644 --- a/components/layout_2020/query.rs +++ b/components/layout_2020/query.rs @@ -201,8 +201,15 @@ pub fn process_node_scroll_id_request<'dom>( } /// https://drafts.csswg.org/cssom-view/#scrolling-area -pub fn process_node_scroll_area_request(_requested_node: OpaqueNode) -> Rect { - Rect::zero() +pub fn process_node_scroll_area_request( + requested_node: OpaqueNode, + fragment_tree: Option>, +) -> Rect { + if let Some(fragment_tree) = fragment_tree { + fragment_tree.get_scroll_area_for_node(requested_node) + } else { + Rect::zero() + } } /// Return the resolved value of property for a given (pseudo)element. diff --git a/components/layout_thread/lib.rs b/components/layout_thread/lib.rs index 4ea217edfec..6cabd0b046c 100644 --- a/components/layout_thread/lib.rs +++ b/components/layout_thread/lib.rs @@ -645,9 +645,6 @@ impl LayoutThread { Msg::CreateLayoutThread(..) => LayoutHangAnnotation::CreateLayoutThread, Msg::SetFinalUrl(..) => LayoutHangAnnotation::SetFinalUrl, Msg::SetScrollStates(..) => LayoutHangAnnotation::SetScrollStates, - Msg::UpdateScrollStateFromScript(..) => { - LayoutHangAnnotation::UpdateScrollStateFromScript - }, Msg::RegisterPaint(..) => LayoutHangAnnotation::RegisterPaint, Msg::SetNavigationStart(..) => LayoutHangAnnotation::SetNavigationStart, }; @@ -753,19 +750,6 @@ impl LayoutThread { Msg::SetScrollStates(new_scroll_states) => { self.set_scroll_states(new_scroll_states, possibly_locked_rw_data); }, - Msg::UpdateScrollStateFromScript(state) => { - let mut rw_data = possibly_locked_rw_data.lock(); - rw_data - .scroll_offsets - .insert(state.scroll_id, state.scroll_offset); - - let point = Point2D::new(-state.scroll_offset.x, -state.scroll_offset.y); - self.webrender_api.send_scroll_node( - webrender_api::units::LayoutPoint::from_untyped(point), - state.scroll_id, - webrender_api::ScrollClamping::ToContentBounds, - ); - }, Msg::CollectReports(reports_chan) => { self.collect_reports(reports_chan, possibly_locked_rw_data); }, @@ -1250,7 +1234,9 @@ impl LayoutThread { rw_data.inner_window_dimensions_response = None; }, }, - ReflowGoal::Full | ReflowGoal::TickAnimations => {}, + ReflowGoal::Full | + ReflowGoal::TickAnimations | + ReflowGoal::UpdateScrollNode(_) => {}, } return; }, @@ -1619,10 +1605,26 @@ impl LayoutThread { .cloned(); }, }, + ReflowGoal::UpdateScrollNode(scroll_state) => { + self.update_scroll_node_state(&scroll_state, rw_data); + }, ReflowGoal::Full | ReflowGoal::TickAnimations => {}, } } + fn update_scroll_node_state(&self, state: &ScrollState, rw_data: &mut LayoutThreadData) { + rw_data + .scroll_offsets + .insert(state.scroll_id, state.scroll_offset); + + let point = Point2D::new(-state.scroll_offset.x, -state.scroll_offset.y); + self.webrender_api.send_scroll_node( + webrender_api::units::LayoutPoint::from_untyped(point), + state.scroll_id, + webrender_api::ScrollClamping::ToContentBounds, + ); + } + fn set_scroll_states<'a, 'b>( &mut self, new_scroll_states: Vec, diff --git a/components/layout_thread_2020/lib.rs b/components/layout_thread_2020/lib.rs index 2b7661a631b..18851ef905c 100644 --- a/components/layout_thread_2020/lib.rs +++ b/components/layout_thread_2020/lib.rs @@ -616,9 +616,6 @@ impl LayoutThread { Msg::CreateLayoutThread(..) => LayoutHangAnnotation::CreateLayoutThread, Msg::SetFinalUrl(..) => LayoutHangAnnotation::SetFinalUrl, Msg::SetScrollStates(..) => LayoutHangAnnotation::SetScrollStates, - Msg::UpdateScrollStateFromScript(..) => { - LayoutHangAnnotation::UpdateScrollStateFromScript - }, Msg::RegisterPaint(..) => LayoutHangAnnotation::RegisterPaint, Msg::SetNavigationStart(..) => LayoutHangAnnotation::SetNavigationStart, }; @@ -724,19 +721,6 @@ impl LayoutThread { Msg::SetScrollStates(new_scroll_states) => { self.set_scroll_states(new_scroll_states, possibly_locked_rw_data); }, - Msg::UpdateScrollStateFromScript(state) => { - let mut rw_data = possibly_locked_rw_data.lock(); - rw_data - .scroll_offsets - .insert(state.scroll_id, state.scroll_offset); - - let point = Point2D::new(-state.scroll_offset.x, -state.scroll_offset.y); - self.webrender_api.send_scroll_node( - webrender_api::units::LayoutPoint::from_untyped(point), - state.scroll_id, - webrender_api::ScrollClamping::ToContentBounds, - ); - }, Msg::CollectReports(reports_chan) => { self.collect_reports(reports_chan, possibly_locked_rw_data); }, @@ -935,7 +919,9 @@ impl LayoutThread { .cloned(); }, }, - ReflowGoal::Full | ReflowGoal::TickAnimations => {}, + ReflowGoal::Full | + ReflowGoal::TickAnimations | + ReflowGoal::UpdateScrollNode(_) => {}, } return; }, @@ -1198,7 +1184,8 @@ impl LayoutThread { process_node_geometry_request(node, self.fragment_tree.borrow().clone()); }, &QueryMsg::NodeScrollGeometryQuery(node) => { - rw_data.scroll_area_response = process_node_scroll_area_request(node); + rw_data.scroll_area_response = + process_node_scroll_area_request(node, self.fragment_tree.borrow().clone()); }, &QueryMsg::NodeScrollIdQuery(node) => { let node = unsafe { ServoLayoutNode::new(&node) }; @@ -1256,10 +1243,26 @@ impl LayoutThread { rw_data.inner_window_dimensions_response = None; }, }, + ReflowGoal::UpdateScrollNode(scroll_state) => { + self.update_scroll_node_state(&scroll_state, rw_data); + }, ReflowGoal::Full | ReflowGoal::TickAnimations => {}, } } + fn update_scroll_node_state(&self, state: &ScrollState, rw_data: &mut LayoutThreadData) { + rw_data + .scroll_offsets + .insert(state.scroll_id, state.scroll_offset); + + let point = Point2D::new(-state.scroll_offset.x, -state.scroll_offset.y); + self.webrender_api.send_scroll_node( + webrender_api::units::LayoutPoint::from_untyped(point), + state.scroll_id, + webrender_api::ScrollClamping::ToContentBounds, + ); + } + fn set_scroll_states<'a, 'b>( &mut self, new_scroll_states: Vec, diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index e69fd558f5c..179cb169c46 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -120,7 +120,6 @@ use style::invalidation::element::restyle_hints::RestyleHint; use style::properties::longhands::{ self, background_image, border_spacing, font_family, font_size, }; -use style::properties::longhands::{overflow_x, overflow_y}; use style::properties::{parse_style_attribute, PropertyDeclarationBlock}; use style::properties::{ComputedValues, Importance, PropertyDeclaration}; use style::rule_tree::CascadeLevel; @@ -408,46 +407,59 @@ impl Element { } // https://drafts.csswg.org/cssom-view/#potentially-scrollable - fn potentially_scrollable(&self) -> bool { - self.has_css_layout_box() && !self.has_any_visible_overflow() + fn is_potentially_scrollable_body(&self) -> bool { + let node = self.upcast::(); + debug_assert!( + node.owner_doc().GetBody().as_deref() == self.downcast::(), + "Called is_potentially_scrollable_body on element that is not the " + ); + + // "An element body (which will be the body element) is potentially + // scrollable if all of the following conditions are true: + // - body has an associated box." + if !self.has_css_layout_box() { + return false; + } + + // " - body’s parent element’s computed value of the overflow-x or + // overflow-y properties is neither visible nor clip." + if let Some(parent) = node.GetParentElement() { + if let Some(style) = parent.style() { + if !style.get_box().clone_overflow_x().is_scrollable() && + !style.get_box().clone_overflow_y().is_scrollable() + { + return false; + } + }; + } + + // " - body’s computed value of the overflow-x or overflow-y properties + // is neither visible nor clip." + if let Some(style) = self.style() { + if !style.get_box().clone_overflow_x().is_scrollable() && + !style.get_box().clone_overflow_y().is_scrollable() + { + return false; + } + }; + + true } // https://drafts.csswg.org/cssom-view/#scrolling-box fn has_scrolling_box(&self) -> bool { // TODO: scrolling mechanism, such as scrollbar (We don't have scrollbar yet) // self.has_scrolling_mechanism() - self.has_any_hidden_overflow() + self.style().map_or(false, |style| { + style.get_box().clone_overflow_x().is_scrollable() || + style.get_box().clone_overflow_y().is_scrollable() + }) } fn has_overflow(&self) -> bool { self.ScrollHeight() > self.ClientHeight() || self.ScrollWidth() > self.ClientWidth() } - // TODO: Once #19183 is closed (overflow-x/y types moved out of mako), then we could implement - // a more generic `fn has_some_overflow(&self, overflow: Overflow)` rather than have - // these two `has_any_{visible,hidden}_overflow` methods which are very structurally - // similar. - - /// Computed value of overflow-x or overflow-y is "visible" - fn has_any_visible_overflow(&self) -> bool { - self.style().map_or(false, |s| { - let box_ = s.get_box(); - - box_.clone_overflow_x() == overflow_x::computed_value::T::Visible || - box_.clone_overflow_y() == overflow_y::computed_value::T::Visible - }) - } - - /// Computed value of overflow-x or overflow-y is "hidden" - fn has_any_hidden_overflow(&self) -> bool { - self.style().map_or(false, |s| { - let box_ = s.get_box(); - - box_.clone_overflow_x() == overflow_x::computed_value::T::Hidden || - box_.clone_overflow_y() == overflow_y::computed_value::T::Hidden - }) - } - fn shadow_root(&self) -> Option> { self.rare_data() .as_ref()? @@ -1765,7 +1777,7 @@ impl Element { // Step 9 if doc.GetBody().as_deref() == self.downcast::() && doc.quirks_mode() == QuirksMode::Quirks && - !self.potentially_scrollable() + !self.is_potentially_scrollable_body() { win.scroll(x, y, behavior); return; @@ -2305,7 +2317,7 @@ impl ElementMethods for Element { // Step 7 if doc.GetBody().as_deref() == self.downcast::() && doc.quirks_mode() == QuirksMode::Quirks && - !self.potentially_scrollable() + !self.is_potentially_scrollable_body() { return win.ScrollY() as f64; } @@ -2355,7 +2367,7 @@ impl ElementMethods for Element { // Step 9 if doc.GetBody().as_deref() == self.downcast::() && doc.quirks_mode() == QuirksMode::Quirks && - !self.potentially_scrollable() + !self.is_potentially_scrollable_body() { win.scroll(win.ScrollX() as f64, y, behavior); return; @@ -2401,7 +2413,7 @@ impl ElementMethods for Element { // Step 7 if doc.GetBody().as_deref() == self.downcast::() && doc.quirks_mode() == QuirksMode::Quirks && - !self.potentially_scrollable() + !self.is_potentially_scrollable_body() { return win.ScrollX() as f64; } @@ -2452,7 +2464,7 @@ impl ElementMethods for Element { // Step 9 if doc.GetBody().as_deref() == self.downcast::() && doc.quirks_mode() == QuirksMode::Quirks && - !self.potentially_scrollable() + !self.is_potentially_scrollable_body() { win.scroll(x, win.ScrollY() as f64, behavior); return; diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 38465a4af06..2364c1c7f72 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -168,26 +168,27 @@ enum WindowState { #[derive(Debug, MallocSizeOf)] pub enum ReflowReason { CachedPageNeededReflow, - RefreshTick, - FirstLoad, - KeyEvent, - MouseEvent, - Query, - Timer, - Viewport, - WindowResize, DOMContentLoaded, DocumentLoaded, - StylesheetLoaded, - ImageLoaded, - RequestAnimationFrame, - WebFontLoaded, - WorkletLoaded, + ElementStateChanged, + FirstLoad, FramedContentChanged, IFrameLoadEvent, + ImageLoaded, + KeyEvent, MissingExplicitReflow, - ElementStateChanged, + MouseEvent, PendingReflow, + Query, + RefreshTick, + RequestAnimationFrame, + ScrollFromScript, + StylesheetLoaded, + Timer, + Viewport, + WebFontLoaded, + WindowResize, + WorkletLoaded, } #[dom_struct] @@ -1698,24 +1699,23 @@ impl Window { // TODO Step 4 - determine if a window has a viewport - // Step 5 - //TODO remove scrollbar width - let width = self.InnerWidth() as f64; - // Step 6 - //TODO remove scrollbar height - let height = self.InnerHeight() as f64; + // Step 5 & 6 + // TODO: Remove scrollbar dimensions. + let viewport = self.window_size.get().initial_viewport; // Step 7 & 8 - //TODO use overflow direction + // TODO: Consider `block-end` and `inline-end` overflow direction. let body = self.Document().GetBody(); let (x, y) = match body { Some(e) => { - let content_size = e.upcast::().bounding_content_box_or_zero(); - let content_height = content_size.size.height.to_f64_px(); - let content_width = content_size.size.width.to_f64_px(); + let scroll_area = e.upcast::().scroll_area(); ( - xfinite.min(content_width - width).max(0.0f64), - yfinite.min(content_height - height).max(0.0f64), + xfinite + .min(scroll_area.width() as f64 - viewport.width as f64) + .max(0.0f64), + yfinite + .min(scroll_area.height() as f64 - viewport.height as f64) + .max(0.0f64), ) }, None => (xfinite.max(0.0f64), yfinite.max(0.0f64)), @@ -1730,14 +1730,13 @@ impl Window { //TODO Step 11 //let document = self.Document(); // Step 12 - let global_scope = self.upcast::(); let x = x.to_f32().unwrap_or(0.0f32); let y = y.to_f32().unwrap_or(0.0f32); self.update_viewport_for_scroll(x, y); self.perform_a_scroll( x, y, - global_scope.pipeline_id().root_scroll_id(), + self.upcast::().pipeline_id().root_scroll_id(), behavior, None, ); @@ -1755,15 +1754,13 @@ impl Window { // TODO Step 1 // TODO(mrobinson, #18709): Add smooth scrolling support to WebRender so that we can // properly process ScrollBehavior here. - match self.layout_chan() { - Some(chan) => chan - .send(Msg::UpdateScrollStateFromScript(ScrollState { - scroll_id, - scroll_offset: Vector2D::new(-x, -y), - })) - .unwrap(), - None => warn!("Layout channel unavailable"), - } + self.reflow( + ReflowGoal::UpdateScrollNode(ScrollState { + scroll_id, + scroll_offset: Vector2D::new(-x, -y), + }), + ReflowReason::ScrollFromScript, + ); } pub fn update_viewport_for_scroll(&self, x: f32, y: f32) { @@ -2719,6 +2716,7 @@ fn debug_reflow_events(id: PipelineId, reflow_goal: &ReflowGoal, reason: &Reflow let goal_string = match *reflow_goal { ReflowGoal::Full => "\tFull", ReflowGoal::TickAnimations => "\tTickAnimations", + ReflowGoal::UpdateScrollNode(_) => "\tUpdateScrollNode", ReflowGoal::LayoutQuery(ref query_msg, _) => match query_msg { &QueryMsg::ContentBoxQuery(_n) => "\tContentBoxQuery", &QueryMsg::ContentBoxesQuery(_n) => "\tContentBoxesQuery", diff --git a/components/script_layout_interface/message.rs b/components/script_layout_interface/message.rs index 9e4312fd2d5..feeded5054c 100644 --- a/components/script_layout_interface/message.rs +++ b/components/script_layout_interface/message.rs @@ -81,10 +81,6 @@ pub enum Msg { /// Tells layout about the new scrolling offsets of each scrollable stacking context. SetScrollStates(Vec), - /// Tells layout about a single new scrolling offset from the script. The rest will - /// remain untouched and layout won't forward this back to script. - UpdateScrollStateFromScript(ScrollState), - /// Tells layout that script has added some paint worklet modules. RegisterPaint(Atom, Vec, Box), @@ -125,6 +121,10 @@ pub enum ReflowGoal { Full, TickAnimations, LayoutQuery(QueryMsg, u64), + + /// Tells layout about a single new scrolling offset from the script. The rest will + /// remain untouched and layout won't forward this back to script. + UpdateScrollNode(ScrollState), } impl ReflowGoal { @@ -132,7 +132,7 @@ impl ReflowGoal { /// be present or false if it only needs stacking-relative positions. pub fn needs_display_list(&self) -> bool { match *self { - ReflowGoal::Full | ReflowGoal::TickAnimations => true, + ReflowGoal::Full | ReflowGoal::TickAnimations | ReflowGoal::UpdateScrollNode(_) => true, ReflowGoal::LayoutQuery(ref querymsg, _) => match *querymsg { QueryMsg::NodesFromPointQuery(..) | QueryMsg::TextIndexQuery(..) | @@ -155,7 +155,7 @@ impl ReflowGoal { /// false if a layout_thread display list is sufficient. pub fn needs_display(&self) -> bool { match *self { - ReflowGoal::Full | ReflowGoal::TickAnimations => true, + ReflowGoal::Full | ReflowGoal::TickAnimations | ReflowGoal::UpdateScrollNode(_) => true, ReflowGoal::LayoutQuery(ref querymsg, _) => match *querymsg { QueryMsg::NodesFromPointQuery(..) | QueryMsg::TextIndexQuery(..) | diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs index 168b910b3c2..14144d8880b 100644 --- a/components/script_traits/lib.rs +++ b/components/script_traits/lib.rs @@ -791,7 +791,7 @@ bitflags! { } /// The scroll state of a stacking context. -#[derive(Clone, Copy, Debug, Deserialize, Serialize)] +#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Serialize)] pub struct ScrollState { /// The ID of the scroll root. pub scroll_id: ExternalScrollId, diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-attachment-local/attachment-local-positioning-2.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-attachment-local/attachment-local-positioning-2.html.ini deleted file mode 100644 index c2c7efbdb1e..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-attachment-local/attachment-local-positioning-2.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[attachment-local-positioning-2.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-attachment-local/attachment-scroll-positioning-1.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-attachment-local/attachment-scroll-positioning-1.html.ini deleted file mode 100644 index 56dea1c6b86..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-backgrounds/background-attachment-local/attachment-scroll-positioning-1.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[attachment-scroll-positioning-1.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/scroll-positioned-multiple-background-images.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/scroll-positioned-multiple-background-images.html.ini deleted file mode 100644 index b5ff1f789a7..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-backgrounds/scroll-positioned-multiple-background-images.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[scroll-positioned-multiple-background-images.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/containing-block-change-scrollframe.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/containing-block-change-scrollframe.html.ini deleted file mode 100644 index 242f79c08a9..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-position/containing-block-change-scrollframe.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[containing-block-change-scrollframe.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/position-absolute-under-non-containing-stacking-context.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/position-absolute-under-non-containing-stacking-context.html.ini new file mode 100644 index 00000000000..ac4f8b57db3 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-position/position-absolute-under-non-containing-stacking-context.html.ini @@ -0,0 +1,2 @@ +[position-absolute-under-non-containing-stacking-context.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/positon-absolute-scrollable-overflow-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/positon-absolute-scrollable-overflow-001.html.ini index 2931576e0c5..85b4aad53ef 100644 --- a/tests/wpt/metadata-layout-2020/css/css-position/positon-absolute-scrollable-overflow-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-position/positon-absolute-scrollable-overflow-001.html.ini @@ -11,12 +11,6 @@ [.containing-block 4] expected: FAIL - [.containing-block 5] - expected: FAIL - - [.containing-block 6] - expected: FAIL - [.containing-block 7] expected: FAIL @@ -32,11 +26,5 @@ [.containing-block 11] expected: FAIL - [.containing-block 12] - expected: FAIL - - [.containing-block 13] - expected: FAIL - [.containing-block 14] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-001.html.ini deleted file mode 100644 index 3018d79f1af..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-001.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[position-sticky-escape-scroller-001.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-002.html.ini deleted file mode 100644 index 46487c6701a..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[position-sticky-escape-scroller-002.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-003.html.ini deleted file mode 100644 index 990a7ae58c6..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-escape-scroller-003.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[position-sticky-escape-scroller-003.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-fractional-offset.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-fractional-offset.html.ini deleted file mode 100644 index 396d46a2f2b..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-fractional-offset.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[position-sticky-fractional-offset.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-overflow-padding.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-overflow-padding.html.ini index 1dea93847b7..c36358f4f58 100644 --- a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-overflow-padding.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-overflow-padding.html.ini @@ -1,6 +1,3 @@ [position-sticky-overflow-padding.html] - [A sticky element should be offset by ancestor padding even when stuck] - expected: FAIL - [Ancestor overflow padding does not allow a sticky element to escape its container] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-scrolled-remove-sibling.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-scrolled-remove-sibling.html.ini deleted file mode 100644 index 7272a91e0af..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-scrolled-remove-sibling.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[position-sticky-scrolled-remove-sibling.html] - [Sticky position and its overflow contribution in the vertical axis] - expected: FAIL - - [Sticky position and its overflow contribution in the horizontal axis] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-table-td-top.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-table-td-top.html.ini new file mode 100644 index 00000000000..c1aa4f40983 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-position/sticky/position-sticky-table-td-top.html.ini @@ -0,0 +1,2 @@ +[position-sticky-table-td-top.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-position/z-index-blend-will-change-overlapping-layers.html.ini b/tests/wpt/metadata-layout-2020/css/css-position/z-index-blend-will-change-overlapping-layers.html.ini deleted file mode 100644 index 07353055bf7..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-position/z-index-blend-will-change-overlapping-layers.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[z-index-blend-will-change-overlapping-layers.html] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 314dca9c1f5..153b135b9a9 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -1,3 +1,9 @@ [MediaQueryList-addListener-removeListener.html] [listeners are called when