11
11
#include " flutter/flow/testing/mock_layer.h"
12
12
#include " flutter/fml/macros.h"
13
13
#include " flutter/testing/canvas_test.h"
14
- #include " flutter/testing/mock_canvas .h"
14
+ #include " flutter/testing/display_list_testing .h"
15
15
#include " gtest/gtest.h"
16
16
17
17
namespace flutter {
18
18
namespace testing {
19
+
19
20
class LayerTreeTest : public CanvasTest {
20
21
public:
21
22
LayerTreeTest ()
22
23
: root_transform_(SkMatrix::Translate(1 .0f , 1 .0f )),
24
+ builder_ (DisplayListBuilder::kMaxCullRect ),
23
25
scoped_frame_(compositor_context_.AcquireFrame(nullptr ,
24
- &mock_canvas () ,
26
+ &builder_ ,
25
27
nullptr ,
26
28
root_transform_,
27
29
false ,
@@ -31,6 +33,7 @@ class LayerTreeTest : public CanvasTest {
31
33
32
34
CompositorContext::ScopedFrame& frame () { return *scoped_frame_.get (); }
33
35
const SkMatrix& root_transform () { return root_transform_; }
36
+ sk_sp<DisplayList> display_list () { return builder_.Build (); }
34
37
35
38
std::unique_ptr<LayerTree> BuildLayerTree (
36
39
const std::shared_ptr<Layer>& root_layer) {
@@ -40,6 +43,7 @@ class LayerTreeTest : public CanvasTest {
40
43
private:
41
44
CompositorContext compositor_context_;
42
45
SkMatrix root_transform_;
46
+ DisplayListBuilder builder_;
43
47
std::unique_ptr<CompositorContext::ScopedFrame> scoped_frame_;
44
48
};
45
49
@@ -62,13 +66,17 @@ TEST_F(LayerTreeTest, PaintBeforePrerollDies) {
62
66
layer->Add (mock_layer);
63
67
64
68
auto layer_tree = BuildLayerTree (layer);
65
- EXPECT_EQ (mock_layer->paint_bounds (), kEmptyRect );
66
- EXPECT_EQ (layer->paint_bounds (), kEmptyRect );
69
+ EXPECT_EQ (mock_layer->paint_bounds (), SkRect::MakeEmpty () );
70
+ EXPECT_EQ (layer->paint_bounds (), SkRect::MakeEmpty () );
67
71
EXPECT_TRUE (mock_layer->is_empty ());
68
72
EXPECT_TRUE (layer->is_empty ());
69
73
70
74
layer_tree->Paint (frame ());
71
- EXPECT_EQ (mock_canvas ().draw_calls (), std::vector<MockCanvas::DrawCall>());
75
+
76
+ DisplayListBuilder expected_builder;
77
+ auto expected_dl = expected_builder.Build ();
78
+
79
+ EXPECT_TRUE (DisplayListsEQ_Verbose (display_list (), expected_dl));
72
80
}
73
81
74
82
TEST_F (LayerTreeTest, Simple) {
@@ -88,9 +96,12 @@ TEST_F(LayerTreeTest, Simple) {
88
96
EXPECT_EQ (mock_layer->parent_matrix (), root_transform ());
89
97
90
98
layer_tree->Paint (frame ());
91
- EXPECT_EQ (mock_canvas ().draw_calls (),
92
- std::vector ({MockCanvas::DrawCall{
93
- 0 , MockCanvas::DrawPathData{child_path, child_paint}}}));
99
+
100
+ DisplayListBuilder expected_builder;
101
+ expected_builder.DrawPath (DlPath (child_path), child_paint);
102
+ auto expected_dl = expected_builder.Build ();
103
+
104
+ EXPECT_TRUE (DisplayListsEQ_Verbose (display_list (), expected_dl));
94
105
}
95
106
96
107
TEST_F (LayerTreeTest, Multiple) {
@@ -122,12 +133,13 @@ TEST_F(LayerTreeTest, Multiple) {
122
133
kGiantRect ); // Siblings are independent
123
134
124
135
layer_tree->Paint (frame ());
125
- EXPECT_EQ (
126
- mock_canvas ().draw_calls (),
127
- std::vector ({MockCanvas::DrawCall{
128
- 0 , MockCanvas::DrawPathData{child_path1, child_paint1}},
129
- MockCanvas::DrawCall{0 , MockCanvas::DrawPathData{
130
- child_path2, child_paint2}}}));
136
+
137
+ DisplayListBuilder expected_builder;
138
+ expected_builder.DrawPath (DlPath (child_path1), child_paint1);
139
+ expected_builder.DrawPath (DlPath (child_path2), child_paint2);
140
+ auto expected_dl = expected_builder.Build ();
141
+
142
+ EXPECT_TRUE (DisplayListsEQ_Verbose (display_list (), expected_dl));
131
143
}
132
144
133
145
TEST_F (LayerTreeTest, MultipleWithEmpty) {
@@ -154,9 +166,12 @@ TEST_F(LayerTreeTest, MultipleWithEmpty) {
154
166
EXPECT_EQ (mock_layer2->parent_cull_rect (), kGiantRect );
155
167
156
168
layer_tree->Paint (frame ());
157
- EXPECT_EQ (mock_canvas ().draw_calls (),
158
- std::vector ({MockCanvas::DrawCall{
159
- 0 , MockCanvas::DrawPathData{child_path1, child_paint1}}}));
169
+
170
+ DisplayListBuilder expected_builder;
171
+ expected_builder.DrawPath (DlPath (child_path1), child_paint1);
172
+ auto expected_dl = expected_builder.Build ();
173
+
174
+ EXPECT_TRUE (DisplayListsEQ_Verbose (display_list (), expected_dl));
160
175
}
161
176
162
177
TEST_F (LayerTreeTest, NeedsSystemComposite) {
@@ -186,12 +201,13 @@ TEST_F(LayerTreeTest, NeedsSystemComposite) {
186
201
EXPECT_EQ (mock_layer2->parent_cull_rect (), kGiantRect );
187
202
188
203
layer_tree->Paint (frame ());
189
- EXPECT_EQ (
190
- mock_canvas ().draw_calls (),
191
- std::vector ({MockCanvas::DrawCall{
192
- 0 , MockCanvas::DrawPathData{child_path1, child_paint1}},
193
- MockCanvas::DrawCall{0 , MockCanvas::DrawPathData{
194
- child_path2, child_paint2}}}));
204
+
205
+ DisplayListBuilder expected_builder;
206
+ expected_builder.DrawPath (DlPath (child_path1), child_paint1);
207
+ expected_builder.DrawPath (DlPath (child_path2), child_paint2);
208
+ auto expected_dl = expected_builder.Build ();
209
+
210
+ EXPECT_TRUE (DisplayListsEQ_Verbose (display_list (), expected_dl));
195
211
}
196
212
197
213
TEST_F (LayerTreeTest, PrerollContextInitialization) {
0 commit comments