aboutsummaryrefslogtreecommitdiffstats
path: root/components/shared/script/tests/compositor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/shared/script/tests/compositor.rs')
-rw-r--r--components/shared/script/tests/compositor.rs188
1 files changed, 0 insertions, 188 deletions
diff --git a/components/shared/script/tests/compositor.rs b/components/shared/script/tests/compositor.rs
deleted file mode 100644
index fb8410cb282..00000000000
--- a/components/shared/script/tests/compositor.rs
+++ /dev/null
@@ -1,188 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-
-use base::id::ScrollTreeNodeId;
-use euclid::Size2D;
-use webrender_api::units::LayoutVector2D;
-use webrender_api::{ExternalScrollId, PipelineId, ScrollLocation, SpatialId};
-use webrender_traits::display_list::{
- AxesScrollSensitivity, ScrollSensitivity, ScrollTree, ScrollableNodeInfo,
-};
-
-fn add_mock_scroll_node(tree: &mut ScrollTree) -> ScrollTreeNodeId {
- let pipeline_id = PipelineId(0, 0);
- let num_nodes = tree.nodes.len();
- let parent = if num_nodes > 0 {
- Some(ScrollTreeNodeId {
- index: num_nodes - 1,
- spatial_id: SpatialId::new(num_nodes - 1, pipeline_id),
- })
- } else {
- None
- };
-
- tree.add_scroll_tree_node(
- parent.as_ref(),
- SpatialId::new(num_nodes, pipeline_id),
- Some(ScrollableNodeInfo {
- external_id: ExternalScrollId(num_nodes as u64, pipeline_id),
- scrollable_size: Size2D::new(100.0, 100.0),
- scroll_sensitivity: AxesScrollSensitivity {
- x: ScrollSensitivity::ScriptAndInputEvents,
- y: ScrollSensitivity::ScriptAndInputEvents,
- },
- offset: LayoutVector2D::zero(),
- }),
- )
-}
-
-#[test]
-fn test_scroll_tree_simple_scroll() {
- let mut scroll_tree = ScrollTree::default();
- let pipeline_id = PipelineId(0, 0);
- let id = add_mock_scroll_node(&mut scroll_tree);
-
- let (scrolled_id, offset) = scroll_tree
- .scroll_node_or_ancestor(
- &id,
- ScrollLocation::Delta(LayoutVector2D::new(-20.0, -40.0)),
- )
- .unwrap();
- let expected_offset = LayoutVector2D::new(-20.0, -40.0);
- assert_eq!(scrolled_id, ExternalScrollId(0, pipeline_id));
- assert_eq!(offset, expected_offset);
- assert_eq!(scroll_tree.get_node(&id).offset(), Some(expected_offset));
-
- let (scrolled_id, offset) = scroll_tree
- .scroll_node_or_ancestor(&id, ScrollLocation::Delta(LayoutVector2D::new(20.0, 40.0)))
- .unwrap();
- let expected_offset = LayoutVector2D::new(0.0, 0.0);
- assert_eq!(scrolled_id, ExternalScrollId(0, pipeline_id));
- assert_eq!(offset, expected_offset);
- assert_eq!(scroll_tree.get_node(&id).offset(), Some(expected_offset));
-
- // Scroll offsets must be negative.
- let result = scroll_tree
- .scroll_node_or_ancestor(&id, ScrollLocation::Delta(LayoutVector2D::new(20.0, 40.0)));
- assert!(result.is_none());
- assert_eq!(
- scroll_tree.get_node(&id).offset(),
- Some(LayoutVector2D::new(0.0, 0.0))
- );
-}
-
-#[test]
-fn test_scroll_tree_simple_scroll_chaining() {
- let mut scroll_tree = ScrollTree::default();
-
- let pipeline_id = PipelineId(0, 0);
- let parent_id = add_mock_scroll_node(&mut scroll_tree);
- let unscrollable_child_id =
- scroll_tree.add_scroll_tree_node(Some(&parent_id), SpatialId::new(1, pipeline_id), None);
-
- let (scrolled_id, offset) = scroll_tree
- .scroll_node_or_ancestor(
- &unscrollable_child_id,
- ScrollLocation::Delta(LayoutVector2D::new(-20.0, -40.0)),
- )
- .unwrap();
- let expected_offset = LayoutVector2D::new(-20.0, -40.0);
- assert_eq!(scrolled_id, ExternalScrollId(0, pipeline_id));
- assert_eq!(offset, expected_offset);
- assert_eq!(
- scroll_tree.get_node(&parent_id).offset(),
- Some(expected_offset)
- );
-
- let (scrolled_id, offset) = scroll_tree
- .scroll_node_or_ancestor(
- &unscrollable_child_id,
- ScrollLocation::Delta(LayoutVector2D::new(-10.0, -15.0)),
- )
- .unwrap();
- let expected_offset = LayoutVector2D::new(-30.0, -55.0);
- assert_eq!(scrolled_id, ExternalScrollId(0, pipeline_id));
- assert_eq!(offset, expected_offset);
- assert_eq!(
- scroll_tree.get_node(&parent_id).offset(),
- Some(expected_offset)
- );
- assert_eq!(scroll_tree.get_node(&unscrollable_child_id).offset(), None);
-}
-
-#[test]
-fn test_scroll_tree_chain_when_at_extent() {
- let mut scroll_tree = ScrollTree::default();
-
- let pipeline_id = PipelineId(0, 0);
- let parent_id = add_mock_scroll_node(&mut scroll_tree);
- let child_id = add_mock_scroll_node(&mut scroll_tree);
-
- let (scrolled_id, offset) = scroll_tree
- .scroll_node_or_ancestor(&child_id, ScrollLocation::End)
- .unwrap();
-
- let expected_offset = LayoutVector2D::new(0.0, -100.0);
- assert_eq!(scrolled_id, ExternalScrollId(1, pipeline_id));
- assert_eq!(offset, expected_offset);
- assert_eq!(
- scroll_tree.get_node(&child_id).offset(),
- Some(expected_offset)
- );
-
- // The parent will have scrolled because the child is already at the extent
- // of its scroll area in the y axis.
- let (scrolled_id, offset) = scroll_tree
- .scroll_node_or_ancestor(
- &child_id,
- ScrollLocation::Delta(LayoutVector2D::new(0.0, -10.0)),
- )
- .unwrap();
- let expected_offset = LayoutVector2D::new(0.0, -10.0);
- assert_eq!(scrolled_id, ExternalScrollId(0, pipeline_id));
- assert_eq!(offset, expected_offset);
- assert_eq!(
- scroll_tree.get_node(&parent_id).offset(),
- Some(expected_offset)
- );
-}
-
-#[test]
-fn test_scroll_tree_chain_through_overflow_hidden() {
- let mut scroll_tree = ScrollTree::default();
-
- // Create a tree with a scrollable leaf, but make its `scroll_sensitivity`
- // reflect `overflow: hidden` ie not responsive to non-script scroll events.
- let pipeline_id = PipelineId(0, 0);
- let parent_id = add_mock_scroll_node(&mut scroll_tree);
- let overflow_hidden_id = add_mock_scroll_node(&mut scroll_tree);
- scroll_tree
- .get_node_mut(&overflow_hidden_id)
- .scroll_info
- .as_mut()
- .map(|info| {
- info.scroll_sensitivity = AxesScrollSensitivity {
- x: ScrollSensitivity::Script,
- y: ScrollSensitivity::Script,
- };
- });
-
- let (scrolled_id, offset) = scroll_tree
- .scroll_node_or_ancestor(
- &overflow_hidden_id,
- ScrollLocation::Delta(LayoutVector2D::new(-20.0, -40.0)),
- )
- .unwrap();
- let expected_offset = LayoutVector2D::new(-20.0, -40.0);
- assert_eq!(scrolled_id, ExternalScrollId(0, pipeline_id));
- assert_eq!(offset, expected_offset);
- assert_eq!(
- scroll_tree.get_node(&parent_id).offset(),
- Some(expected_offset)
- );
- assert_eq!(
- scroll_tree.get_node(&overflow_hidden_id).offset(),
- Some(LayoutVector2D::new(0.0, 0.0))
- );
-}