26TEST(ViewSlicerTest, CanSlicerNonOverlappingViews) {
29 std::vector<int64_t> composition_order = {1};
30 std::unordered_map<int64_t, std::unique_ptr<EmbedderViewSlice>> slices;
33 std::unordered_map<int64_t, DlRect> view_rects = {
36 auto computed_overlays =
37 SliceViews(&builder, composition_order, slices, view_rects);
39 EXPECT_TRUE(computed_overlays.empty());
42TEST(ViewSlicerTest, IgnoresFractionalOverlaps) {
45 std::vector<int64_t> composition_order = {1};
46 std::unordered_map<int64_t, std::unique_ptr<EmbedderViewSlice>> slices;
49 std::unordered_map<int64_t, DlRect> view_rects = {
52 auto computed_overlays =
53 SliceViews(&builder, composition_order, slices, view_rects);
55 EXPECT_TRUE(computed_overlays.empty());
58TEST(ViewSlicerTest, ComputesOverlapWith1PV) {
61 std::vector<int64_t> composition_order = {1};
62 std::unordered_map<int64_t, std::unique_ptr<EmbedderViewSlice>> slices;
65 std::unordered_map<int64_t, DlRect> view_rects = {
68 auto computed_overlays =
69 SliceViews(&builder, composition_order, slices, view_rects);
71 EXPECT_EQ(computed_overlays.size(), 1u);
72 auto overlay = computed_overlays.find(1);
73 ASSERT_NE(overlay, computed_overlays.end());
78TEST(ViewSlicerTest, ComputesOverlapWith2PV) {
81 std::vector<int64_t> composition_order = {1, 2};
82 std::unordered_map<int64_t, std::unique_ptr<EmbedderViewSlice>> slices;
86 std::unordered_map<int64_t, DlRect> view_rects = {
91 auto computed_overlays =
92 SliceViews(&builder, composition_order, slices, view_rects);
94 EXPECT_EQ(computed_overlays.size(), 2u);
96 auto overlay = computed_overlays.find(1);
97 ASSERT_NE(overlay, computed_overlays.end());
101 overlay = computed_overlays.find(2);
102 ASSERT_NE(overlay, computed_overlays.end());
106TEST(ViewSlicerTest, OverlappingTwoPVs) {
109 std::vector<int64_t> composition_order = {1, 2};
110 std::unordered_map<int64_t, std::unique_ptr<EmbedderViewSlice>> slices;
120 std::unordered_map<int64_t, DlRect> view_rects = {
125 auto computed_overlays =
126 SliceViews(&builder, composition_order, slices, view_rects);
128 EXPECT_EQ(computed_overlays.size(), 1u);
130 auto overlay = computed_overlays.find(2);
131 ASSERT_NE(overlay, computed_overlays.end());
std::unordered_map< int64_t, DlRect > SliceViews(DlCanvas *background_canvas, const std::vector< int64_t > &composition_order, const std::unordered_map< int64_t, std::unique_ptr< EmbedderViewSlice > > &slices, const std::unordered_map< int64_t, DlRect > &view_rects)
Compute the required overlay layers and clip the view slices according to the size and position of th...