Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: cc/ipc/struct_traits_unittest.cc

Issue 2740833005: [cc] Pass on BeginFrameAcks from CompositorEBFS through RWHVAura, DFH. (Closed)
Patch Set: address security comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "base/run_loop.h" 6 #include "base/run_loop.h"
7 #include "cc/input/selection.h" 7 #include "cc/input/selection.h"
8 #include "cc/ipc/copy_output_request_struct_traits.h" 8 #include "cc/ipc/copy_output_request_struct_traits.h"
9 #include "cc/ipc/traits_test_service.mojom.h" 9 #include "cc/ipc/traits_test_service.mojom.h"
10 #include "cc/output/copy_output_result.h" 10 #include "cc/output/copy_output_result.h"
11 #include "cc/quads/debug_border_draw_quad.h" 11 #include "cc/quads/debug_border_draw_quad.h"
12 #include "cc/quads/render_pass.h" 12 #include "cc/quads/render_pass.h"
13 #include "cc/quads/render_pass_draw_quad.h" 13 #include "cc/quads/render_pass_draw_quad.h"
14 #include "cc/quads/solid_color_draw_quad.h" 14 #include "cc/quads/solid_color_draw_quad.h"
15 #include "cc/quads/stream_video_draw_quad.h" 15 #include "cc/quads/stream_video_draw_quad.h"
16 #include "cc/quads/surface_draw_quad.h" 16 #include "cc/quads/surface_draw_quad.h"
17 #include "cc/quads/texture_draw_quad.h" 17 #include "cc/quads/texture_draw_quad.h"
18 #include "cc/quads/yuv_video_draw_quad.h" 18 #include "cc/quads/yuv_video_draw_quad.h"
19 #include "cc/test/begin_frame_args_test.h"
19 #include "mojo/public/cpp/bindings/binding_set.h" 20 #include "mojo/public/cpp/bindings/binding_set.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 #include "third_party/skia/include/core/SkString.h" 22 #include "third_party/skia/include/core/SkString.h"
22 #include "third_party/skia/include/effects/SkDropShadowImageFilter.h" 23 #include "third_party/skia/include/effects/SkDropShadowImageFilter.h"
23 24
24 namespace cc { 25 namespace cc {
25 26
26 namespace { 27 namespace {
27 28
28 class StructTraitsTest : public testing::Test, public mojom::TraitsTestService { 29 class StructTraitsTest : public testing::Test, public mojom::TraitsTestService {
29 public: 30 public:
30 StructTraitsTest() {} 31 StructTraitsTest() {}
31 32
32 protected: 33 protected:
33 mojom::TraitsTestServicePtr GetTraitsTestProxy() { 34 mojom::TraitsTestServicePtr GetTraitsTestProxy() {
34 return traits_test_bindings_.CreateInterfacePtrAndBind(this); 35 return traits_test_bindings_.CreateInterfacePtrAndBind(this);
35 } 36 }
36 37
37 private: 38 private:
38 // TraitsTestService: 39 // TraitsTestService:
39 void EchoBeginFrameArgs(const BeginFrameArgs& b, 40 void EchoBeginFrameArgs(const BeginFrameArgs& b,
40 const EchoBeginFrameArgsCallback& callback) override { 41 const EchoBeginFrameArgsCallback& callback) override {
41 callback.Run(b); 42 callback.Run(b);
42 } 43 }
43 44
45 void EchoBeginFrameAck(const BeginFrameAck& b,
46 const EchoBeginFrameAckCallback& callback) override {
47 callback.Run(b);
48 }
49
44 void EchoCompositorFrame( 50 void EchoCompositorFrame(
45 CompositorFrame c, 51 CompositorFrame c,
46 const EchoCompositorFrameCallback& callback) override { 52 const EchoCompositorFrameCallback& callback) override {
47 callback.Run(std::move(c)); 53 callback.Run(std::move(c));
48 } 54 }
49 55
50 void EchoCompositorFrameMetadata( 56 void EchoCompositorFrameMetadata(
51 CompositorFrameMetadata c, 57 CompositorFrameMetadata c,
52 const EchoCompositorFrameMetadataCallback& callback) override { 58 const EchoCompositorFrameMetadataCallback& callback) override {
53 callback.Run(std::move(c)); 59 callback.Run(std::move(c));
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 } 168 }
163 169
164 } // namespace 170 } // namespace
165 171
166 TEST_F(StructTraitsTest, BeginFrameArgs) { 172 TEST_F(StructTraitsTest, BeginFrameArgs) {
167 const base::TimeTicks frame_time = base::TimeTicks::Now(); 173 const base::TimeTicks frame_time = base::TimeTicks::Now();
168 const base::TimeTicks deadline = base::TimeTicks::Now(); 174 const base::TimeTicks deadline = base::TimeTicks::Now();
169 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337); 175 const base::TimeDelta interval = base::TimeDelta::FromMilliseconds(1337);
170 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL; 176 const BeginFrameArgs::BeginFrameArgsType type = BeginFrameArgs::NORMAL;
171 const bool on_critical_path = true; 177 const bool on_critical_path = true;
178 const uint32_t source_id = 5;
179 const uint64_t sequence_number = 10;
172 BeginFrameArgs input; 180 BeginFrameArgs input;
181 input.source_id = source_id;
182 input.sequence_number = sequence_number;
173 input.frame_time = frame_time; 183 input.frame_time = frame_time;
174 input.deadline = deadline; 184 input.deadline = deadline;
175 input.interval = interval; 185 input.interval = interval;
176 input.type = type; 186 input.type = type;
177 input.on_critical_path = on_critical_path; 187 input.on_critical_path = on_critical_path;
178 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 188 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
179 BeginFrameArgs output; 189 BeginFrameArgs output;
180 proxy->EchoBeginFrameArgs(input, &output); 190 proxy->EchoBeginFrameArgs(input, &output);
191 EXPECT_EQ(source_id, output.source_id);
192 EXPECT_EQ(sequence_number, output.sequence_number);
181 EXPECT_EQ(frame_time, output.frame_time); 193 EXPECT_EQ(frame_time, output.frame_time);
182 EXPECT_EQ(deadline, output.deadline); 194 EXPECT_EQ(deadline, output.deadline);
183 EXPECT_EQ(interval, output.interval); 195 EXPECT_EQ(interval, output.interval);
184 EXPECT_EQ(type, output.type); 196 EXPECT_EQ(type, output.type);
185 EXPECT_EQ(on_critical_path, output.on_critical_path); 197 EXPECT_EQ(on_critical_path, output.on_critical_path);
186 } 198 }
187 199
200 TEST_F(StructTraitsTest, BeginFrameAck) {
201 const uint32_t source_id = 5;
202 const uint64_t sequence_number = 10;
203 const uint64_t latest_confirmed_sequence_number = 8;
204 const uint32_t remaining_frames = 1;
205 const bool has_damage = true;
206 BeginFrameAck input;
207 input.source_id = source_id;
208 input.sequence_number = sequence_number;
209 input.latest_confirmed_sequence_number = latest_confirmed_sequence_number;
210 input.remaining_frames = remaining_frames;
211 input.has_damage = has_damage;
212 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
213 BeginFrameAck output;
214 proxy->EchoBeginFrameAck(input, &output);
215 EXPECT_EQ(source_id, output.source_id);
216 EXPECT_EQ(sequence_number, output.sequence_number);
217 EXPECT_EQ(latest_confirmed_sequence_number,
218 output.latest_confirmed_sequence_number);
219 // |remaining_frames| and |has_damage| are not transmitted.
220 EXPECT_EQ(0u, output.remaining_frames);
221 EXPECT_FALSE(output.has_damage);
222 }
223
188 // Note that this is a fairly trivial test of CompositorFrame serialization as 224 // Note that this is a fairly trivial test of CompositorFrame serialization as
189 // most of the heavy lifting has already been done by CompositorFrameMetadata, 225 // most of the heavy lifting has already been done by CompositorFrameMetadata,
190 // RenderPass, and QuadListBasic unit tests. 226 // RenderPass, and QuadListBasic unit tests.
191 TEST_F(StructTraitsTest, CompositorFrame) { 227 TEST_F(StructTraitsTest, CompositorFrame) {
192 std::unique_ptr<RenderPass> render_pass = RenderPass::Create(); 228 std::unique_ptr<RenderPass> render_pass = RenderPass::Create();
193 render_pass->SetNew(1, gfx::Rect(5, 6), gfx::Rect(2, 3), gfx::Transform()); 229 render_pass->SetNew(1, gfx::Rect(5, 6), gfx::Rect(2, 3), gfx::Transform());
194 230
195 // SharedQuadState. 231 // SharedQuadState.
196 const gfx::Transform sqs_quad_to_target_transform( 232 const gfx::Transform sqs_quad_to_target_transform(
197 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f, 233 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 resource.buffer_format = tr_buffer_format; 272 resource.buffer_format = tr_buffer_format;
237 resource.filter = tr_filter; 273 resource.filter = tr_filter;
238 resource.size = tr_size; 274 resource.size = tr_size;
239 275
240 // CompositorFrameMetadata constants. 276 // CompositorFrameMetadata constants.
241 const float device_scale_factor = 2.6f; 277 const float device_scale_factor = 2.6f;
242 const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f); 278 const gfx::Vector2dF root_scroll_offset(1234.5f, 6789.1f);
243 const float page_scale_factor = 1337.5f; 279 const float page_scale_factor = 1337.5f;
244 const gfx::SizeF scrollable_viewport_size(1337.7f, 1234.5f); 280 const gfx::SizeF scrollable_viewport_size(1337.7f, 1234.5f);
245 const uint32_t content_source_id = 3; 281 const uint32_t content_source_id = 3;
282 const BeginFrameAck begin_frame_ack(5, 10, 8, 0, false);
246 283
247 CompositorFrame input; 284 CompositorFrame input;
248 input.metadata.device_scale_factor = device_scale_factor; 285 input.metadata.device_scale_factor = device_scale_factor;
249 input.metadata.root_scroll_offset = root_scroll_offset; 286 input.metadata.root_scroll_offset = root_scroll_offset;
250 input.metadata.page_scale_factor = page_scale_factor; 287 input.metadata.page_scale_factor = page_scale_factor;
251 input.metadata.scrollable_viewport_size = scrollable_viewport_size; 288 input.metadata.scrollable_viewport_size = scrollable_viewport_size;
252 input.render_pass_list.push_back(std::move(render_pass)); 289 input.render_pass_list.push_back(std::move(render_pass));
253 input.resource_list.push_back(resource); 290 input.resource_list.push_back(resource);
254 input.metadata.content_source_id = content_source_id; 291 input.metadata.content_source_id = content_source_id;
292 input.metadata.begin_frame_ack = begin_frame_ack;
255 293
256 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); 294 mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy();
257 CompositorFrame output; 295 CompositorFrame output;
258 proxy->EchoCompositorFrame(std::move(input), &output); 296 proxy->EchoCompositorFrame(std::move(input), &output);
259 297
260 EXPECT_EQ(device_scale_factor, output.metadata.device_scale_factor); 298 EXPECT_EQ(device_scale_factor, output.metadata.device_scale_factor);
261 EXPECT_EQ(root_scroll_offset, output.metadata.root_scroll_offset); 299 EXPECT_EQ(root_scroll_offset, output.metadata.root_scroll_offset);
262 EXPECT_EQ(page_scale_factor, output.metadata.page_scale_factor); 300 EXPECT_EQ(page_scale_factor, output.metadata.page_scale_factor);
263 EXPECT_EQ(scrollable_viewport_size, output.metadata.scrollable_viewport_size); 301 EXPECT_EQ(scrollable_viewport_size, output.metadata.scrollable_viewport_size);
264 EXPECT_EQ(content_source_id, output.metadata.content_source_id); 302 EXPECT_EQ(content_source_id, output.metadata.content_source_id);
303 EXPECT_EQ(begin_frame_ack, output.metadata.begin_frame_ack);
265 304
266 ASSERT_EQ(1u, output.resource_list.size()); 305 ASSERT_EQ(1u, output.resource_list.size());
267 TransferableResource out_resource = output.resource_list[0]; 306 TransferableResource out_resource = output.resource_list[0];
268 EXPECT_EQ(tr_id, out_resource.id); 307 EXPECT_EQ(tr_id, out_resource.id);
269 EXPECT_EQ(tr_format, out_resource.format); 308 EXPECT_EQ(tr_format, out_resource.format);
270 EXPECT_EQ(tr_buffer_format, out_resource.buffer_format); 309 EXPECT_EQ(tr_buffer_format, out_resource.buffer_format);
271 EXPECT_EQ(tr_filter, out_resource.filter); 310 EXPECT_EQ(tr_filter, out_resource.filter);
272 EXPECT_EQ(tr_size, out_resource.size); 311 EXPECT_EQ(tr_size, out_resource.size);
273 312
274 EXPECT_EQ(1u, output.render_pass_list.size()); 313 EXPECT_EQ(1u, output.render_pass_list.size());
(...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id()); 1231 EXPECT_EQ(u_plane_resource_id, out_quad->u_plane_resource_id());
1193 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id()); 1232 EXPECT_EQ(v_plane_resource_id, out_quad->v_plane_resource_id());
1194 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id()); 1233 EXPECT_EQ(a_plane_resource_id, out_quad->a_plane_resource_id());
1195 EXPECT_EQ(color_space, out_quad->color_space); 1234 EXPECT_EQ(color_space, out_quad->color_space);
1196 EXPECT_EQ(resource_offset, out_quad->resource_offset); 1235 EXPECT_EQ(resource_offset, out_quad->resource_offset);
1197 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier); 1236 EXPECT_EQ(resource_multiplier, out_quad->resource_multiplier);
1198 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel); 1237 EXPECT_EQ(bits_per_channel, out_quad->bits_per_channel);
1199 } 1238 }
1200 1239
1201 } // namespace cc 1240 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698