OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "cc/output/compositor_frame.h" | 7 #include "cc/output/compositor_frame.h" |
8 #include "cc/surfaces/surface.h" | 8 #include "cc/surfaces/surface.h" |
9 #include "cc/surfaces/surface_factory.h" | 9 #include "cc/surfaces/surface_factory.h" |
10 #include "cc/surfaces/surface_factory_client.h" | 10 #include "cc/surfaces/surface_factory_client.h" |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 // This test verifies that hit testing on a surface that does not exist does | 59 // This test verifies that hit testing on a surface that does not exist does |
60 // not crash. | 60 // not crash. |
61 TEST(SurfaceHittestTest, Hittest_BadCompositorFrameDoesNotCrash) { | 61 TEST(SurfaceHittestTest, Hittest_BadCompositorFrameDoesNotCrash) { |
62 SurfaceManager manager; | 62 SurfaceManager manager; |
63 EmptySurfaceFactoryClient client; | 63 EmptySurfaceFactoryClient client; |
64 SurfaceFactory factory(&manager, &client); | 64 SurfaceFactory factory(&manager, &client); |
65 | 65 |
66 // Creates a root surface. | 66 // Creates a root surface. |
67 gfx::Rect root_rect(300, 300); | 67 gfx::Rect root_rect(300, 300); |
68 RenderPass* root_pass = nullptr; | 68 RenderPass* root_pass = nullptr; |
69 scoped_ptr<CompositorFrame> root_frame = | 69 std::unique_ptr<CompositorFrame> root_frame = |
70 CreateCompositorFrame(root_rect, &root_pass); | 70 CreateCompositorFrame(root_rect, &root_pass); |
71 | 71 |
72 // Add a reference to a non-existant child surface on the root surface. | 72 // Add a reference to a non-existant child surface on the root surface. |
73 SurfaceIdAllocator child_allocator(3); | 73 SurfaceIdAllocator child_allocator(3); |
74 SurfaceId child_surface_id; | 74 SurfaceId child_surface_id; |
75 child_surface_id.id = 0xdeadbeef; | 75 child_surface_id.id = 0xdeadbeef; |
76 gfx::Rect child_rect(200, 200); | 76 gfx::Rect child_rect(200, 200); |
77 CreateSurfaceDrawQuad(root_pass, | 77 CreateSurfaceDrawQuad(root_pass, |
78 gfx::Transform(), | 78 gfx::Transform(), |
79 root_rect, | 79 root_rect, |
(...skipping 20 matching lines...) Expand all Loading... |
100 } | 100 } |
101 | 101 |
102 TEST(SurfaceHittestTest, Hittest_SingleSurface) { | 102 TEST(SurfaceHittestTest, Hittest_SingleSurface) { |
103 SurfaceManager manager; | 103 SurfaceManager manager; |
104 EmptySurfaceFactoryClient client; | 104 EmptySurfaceFactoryClient client; |
105 SurfaceFactory factory(&manager, &client); | 105 SurfaceFactory factory(&manager, &client); |
106 | 106 |
107 // Creates a root surface. | 107 // Creates a root surface. |
108 gfx::Rect root_rect(300, 300); | 108 gfx::Rect root_rect(300, 300); |
109 RenderPass* root_pass = nullptr; | 109 RenderPass* root_pass = nullptr; |
110 scoped_ptr<CompositorFrame> root_frame = | 110 std::unique_ptr<CompositorFrame> root_frame = |
111 CreateCompositorFrame(root_rect, &root_pass); | 111 CreateCompositorFrame(root_rect, &root_pass); |
112 | 112 |
113 // Submit the root frame. | 113 // Submit the root frame. |
114 SurfaceIdAllocator root_allocator(2); | 114 SurfaceIdAllocator root_allocator(2); |
115 SurfaceId root_surface_id = root_allocator.GenerateId(); | 115 SurfaceId root_surface_id = root_allocator.GenerateId(); |
116 factory.Create(root_surface_id); | 116 factory.Create(root_surface_id); |
117 factory.SubmitCompositorFrame(root_surface_id, std::move(root_frame), | 117 factory.SubmitCompositorFrame(root_surface_id, std::move(root_frame), |
118 SurfaceFactory::DrawCallback()); | 118 SurfaceFactory::DrawCallback()); |
119 TestCase tests[] = { | 119 TestCase tests[] = { |
120 { | 120 { |
(...skipping 10 matching lines...) Expand all Loading... |
131 } | 131 } |
132 | 132 |
133 TEST(SurfaceHittestTest, Hittest_ChildSurface) { | 133 TEST(SurfaceHittestTest, Hittest_ChildSurface) { |
134 SurfaceManager manager; | 134 SurfaceManager manager; |
135 EmptySurfaceFactoryClient client; | 135 EmptySurfaceFactoryClient client; |
136 SurfaceFactory factory(&manager, &client); | 136 SurfaceFactory factory(&manager, &client); |
137 | 137 |
138 // Creates a root surface. | 138 // Creates a root surface. |
139 gfx::Rect root_rect(300, 300); | 139 gfx::Rect root_rect(300, 300); |
140 RenderPass* root_pass = nullptr; | 140 RenderPass* root_pass = nullptr; |
141 scoped_ptr<CompositorFrame> root_frame = | 141 std::unique_ptr<CompositorFrame> root_frame = |
142 CreateCompositorFrame(root_rect, &root_pass); | 142 CreateCompositorFrame(root_rect, &root_pass); |
143 | 143 |
144 // Add a reference to the child surface on the root surface. | 144 // Add a reference to the child surface on the root surface. |
145 SurfaceIdAllocator child_allocator(3); | 145 SurfaceIdAllocator child_allocator(3); |
146 SurfaceId child_surface_id = child_allocator.GenerateId(); | 146 SurfaceId child_surface_id = child_allocator.GenerateId(); |
147 gfx::Rect child_rect(200, 200); | 147 gfx::Rect child_rect(200, 200); |
148 CreateSurfaceDrawQuad(root_pass, | 148 CreateSurfaceDrawQuad(root_pass, |
149 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, | 149 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, |
150 0.0f, 1.0f, 0.0f, 50.0f, | 150 0.0f, 1.0f, 0.0f, 50.0f, |
151 0.0f, 0.0f, 1.0f, 0.0f, | 151 0.0f, 0.0f, 1.0f, 0.0f, |
152 0.0f, 0.0f, 0.0f, 1.0f), | 152 0.0f, 0.0f, 0.0f, 1.0f), |
153 root_rect, | 153 root_rect, |
154 child_rect, | 154 child_rect, |
155 child_surface_id); | 155 child_surface_id); |
156 | 156 |
157 // Submit the root frame. | 157 // Submit the root frame. |
158 SurfaceIdAllocator root_allocator(2); | 158 SurfaceIdAllocator root_allocator(2); |
159 SurfaceId root_surface_id = root_allocator.GenerateId(); | 159 SurfaceId root_surface_id = root_allocator.GenerateId(); |
160 factory.Create(root_surface_id); | 160 factory.Create(root_surface_id); |
161 factory.SubmitCompositorFrame(root_surface_id, std::move(root_frame), | 161 factory.SubmitCompositorFrame(root_surface_id, std::move(root_frame), |
162 SurfaceFactory::DrawCallback()); | 162 SurfaceFactory::DrawCallback()); |
163 | 163 |
164 // Creates a child surface. | 164 // Creates a child surface. |
165 RenderPass* child_pass = nullptr; | 165 RenderPass* child_pass = nullptr; |
166 scoped_ptr<CompositorFrame> child_frame = | 166 std::unique_ptr<CompositorFrame> child_frame = |
167 CreateCompositorFrame(child_rect, &child_pass); | 167 CreateCompositorFrame(child_rect, &child_pass); |
168 | 168 |
169 // Add a solid quad in the child surface. | 169 // Add a solid quad in the child surface. |
170 gfx::Rect child_solid_quad_rect(100, 100); | 170 gfx::Rect child_solid_quad_rect(100, 100); |
171 CreateSolidColorDrawQuad( | 171 CreateSolidColorDrawQuad( |
172 child_pass, | 172 child_pass, |
173 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, | 173 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, |
174 0.0f, 1.0f, 0.0f, 50.0f, | 174 0.0f, 1.0f, 0.0f, 50.0f, |
175 0.0f, 0.0f, 1.0f, 0.0f, | 175 0.0f, 0.0f, 1.0f, 0.0f, |
176 0.0f, 0.0f, 0.0f, 1.0f), | 176 0.0f, 0.0f, 0.0f, 1.0f), |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 // This test verifies that hit testing will progress to the next quad if it | 264 // This test verifies that hit testing will progress to the next quad if it |
265 // encounters an invalid RenderPassDrawQuad for whatever reason. | 265 // encounters an invalid RenderPassDrawQuad for whatever reason. |
266 TEST(SurfaceHittestTest, Hittest_InvalidRenderPassDrawQuad) { | 266 TEST(SurfaceHittestTest, Hittest_InvalidRenderPassDrawQuad) { |
267 SurfaceManager manager; | 267 SurfaceManager manager; |
268 EmptySurfaceFactoryClient client; | 268 EmptySurfaceFactoryClient client; |
269 SurfaceFactory factory(&manager, &client); | 269 SurfaceFactory factory(&manager, &client); |
270 | 270 |
271 // Creates a root surface. | 271 // Creates a root surface. |
272 gfx::Rect root_rect(300, 300); | 272 gfx::Rect root_rect(300, 300); |
273 RenderPass* root_pass = nullptr; | 273 RenderPass* root_pass = nullptr; |
274 scoped_ptr<CompositorFrame> root_frame = | 274 std::unique_ptr<CompositorFrame> root_frame = |
275 CreateCompositorFrame(root_rect, &root_pass); | 275 CreateCompositorFrame(root_rect, &root_pass); |
276 | 276 |
277 // Create a RenderPassDrawQuad to a non-existant RenderPass. | 277 // Create a RenderPassDrawQuad to a non-existant RenderPass. |
278 CreateRenderPassDrawQuad(root_pass, | 278 CreateRenderPassDrawQuad(root_pass, |
279 gfx::Transform(), | 279 gfx::Transform(), |
280 root_rect, | 280 root_rect, |
281 root_rect, | 281 root_rect, |
282 RenderPassId(1337, 1337)); | 282 RenderPassId(1337, 1337)); |
283 | 283 |
284 // Add a reference to the child surface on the root surface. | 284 // Add a reference to the child surface on the root surface. |
(...skipping 11 matching lines...) Expand all Loading... |
296 | 296 |
297 // Submit the root frame. | 297 // Submit the root frame. |
298 SurfaceIdAllocator root_allocator(2); | 298 SurfaceIdAllocator root_allocator(2); |
299 SurfaceId root_surface_id = root_allocator.GenerateId(); | 299 SurfaceId root_surface_id = root_allocator.GenerateId(); |
300 factory.Create(root_surface_id); | 300 factory.Create(root_surface_id); |
301 factory.SubmitCompositorFrame(root_surface_id, std::move(root_frame), | 301 factory.SubmitCompositorFrame(root_surface_id, std::move(root_frame), |
302 SurfaceFactory::DrawCallback()); | 302 SurfaceFactory::DrawCallback()); |
303 | 303 |
304 // Creates a child surface. | 304 // Creates a child surface. |
305 RenderPass* child_pass = nullptr; | 305 RenderPass* child_pass = nullptr; |
306 scoped_ptr<CompositorFrame> child_frame = | 306 std::unique_ptr<CompositorFrame> child_frame = |
307 CreateCompositorFrame(child_rect, &child_pass); | 307 CreateCompositorFrame(child_rect, &child_pass); |
308 | 308 |
309 // Add a solid quad in the child surface. | 309 // Add a solid quad in the child surface. |
310 gfx::Rect child_solid_quad_rect(100, 100); | 310 gfx::Rect child_solid_quad_rect(100, 100); |
311 CreateSolidColorDrawQuad(child_pass, | 311 CreateSolidColorDrawQuad(child_pass, |
312 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, | 312 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, |
313 0.0f, 1.0f, 0.0f, 50.0f, | 313 0.0f, 1.0f, 0.0f, 50.0f, |
314 0.0f, 0.0f, 1.0f, 0.0f, | 314 0.0f, 0.0f, 1.0f, 0.0f, |
315 0.0f, 0.0f, 0.0f, 1.0f), | 315 0.0f, 0.0f, 0.0f, 1.0f), |
316 root_rect, | 316 root_rect, |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 gfx::Rect(100, 100), | 385 gfx::Rect(100, 100), |
386 transform_to_root_target, | 386 transform_to_root_target, |
387 &render_pass_list); | 387 &render_pass_list); |
388 | 388 |
389 // Create the root RenderPass. | 389 // Create the root RenderPass. |
390 RenderPassId root_render_pass_id(1, 2); | 390 RenderPassId root_render_pass_id(1, 2); |
391 CreateRenderPass(root_render_pass_id, root_rect, gfx::Transform(), | 391 CreateRenderPass(root_render_pass_id, root_rect, gfx::Transform(), |
392 &render_pass_list); | 392 &render_pass_list); |
393 | 393 |
394 RenderPass* root_pass = nullptr; | 394 RenderPass* root_pass = nullptr; |
395 scoped_ptr<CompositorFrame> root_frame = | 395 std::unique_ptr<CompositorFrame> root_frame = |
396 CreateCompositorFrameWithRenderPassList(&render_pass_list); | 396 CreateCompositorFrameWithRenderPassList(&render_pass_list); |
397 root_pass = root_frame->delegated_frame_data->render_pass_list.back().get(); | 397 root_pass = root_frame->delegated_frame_data->render_pass_list.back().get(); |
398 | 398 |
399 // Create a RenderPassDrawQuad. | 399 // Create a RenderPassDrawQuad. |
400 gfx::Rect render_pass_quad_rect(100, 100); | 400 gfx::Rect render_pass_quad_rect(100, 100); |
401 CreateRenderPassDrawQuad(root_pass, | 401 CreateRenderPassDrawQuad(root_pass, |
402 transform_to_root_target, | 402 transform_to_root_target, |
403 root_rect, | 403 root_rect, |
404 render_pass_quad_rect, | 404 render_pass_quad_rect, |
405 child_render_pass_id); | 405 child_render_pass_id); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 } | 470 } |
471 | 471 |
472 TEST(SurfaceHittestTest, Hittest_SingleSurface_WithInsetsDelegate) { | 472 TEST(SurfaceHittestTest, Hittest_SingleSurface_WithInsetsDelegate) { |
473 SurfaceManager manager; | 473 SurfaceManager manager; |
474 EmptySurfaceFactoryClient client; | 474 EmptySurfaceFactoryClient client; |
475 SurfaceFactory factory(&manager, &client); | 475 SurfaceFactory factory(&manager, &client); |
476 | 476 |
477 // Creates a root surface. | 477 // Creates a root surface. |
478 gfx::Rect root_rect(300, 300); | 478 gfx::Rect root_rect(300, 300); |
479 RenderPass* root_pass = nullptr; | 479 RenderPass* root_pass = nullptr; |
480 scoped_ptr<CompositorFrame> root_frame = | 480 std::unique_ptr<CompositorFrame> root_frame = |
481 CreateCompositorFrame(root_rect, &root_pass); | 481 CreateCompositorFrame(root_rect, &root_pass); |
482 | 482 |
483 // Add a reference to the child surface on the root surface. | 483 // Add a reference to the child surface on the root surface. |
484 SurfaceIdAllocator child_allocator(3); | 484 SurfaceIdAllocator child_allocator(3); |
485 SurfaceId child_surface_id = child_allocator.GenerateId(); | 485 SurfaceId child_surface_id = child_allocator.GenerateId(); |
486 gfx::Rect child_rect(200, 200); | 486 gfx::Rect child_rect(200, 200); |
487 CreateSurfaceDrawQuad( | 487 CreateSurfaceDrawQuad( |
488 root_pass, | 488 root_pass, |
489 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, | 489 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, |
490 0.0f, 1.0f, 0.0f, 50.0f, | 490 0.0f, 1.0f, 0.0f, 50.0f, |
491 0.0f, 0.0f, 1.0f, 0.0f, | 491 0.0f, 0.0f, 1.0f, 0.0f, |
492 0.0f, 0.0f, 0.0f, 1.0f), | 492 0.0f, 0.0f, 0.0f, 1.0f), |
493 root_rect, child_rect, child_surface_id); | 493 root_rect, child_rect, child_surface_id); |
494 | 494 |
495 // Submit the root frame. | 495 // Submit the root frame. |
496 SurfaceIdAllocator root_allocator(2); | 496 SurfaceIdAllocator root_allocator(2); |
497 SurfaceId root_surface_id = root_allocator.GenerateId(); | 497 SurfaceId root_surface_id = root_allocator.GenerateId(); |
498 factory.Create(root_surface_id); | 498 factory.Create(root_surface_id); |
499 factory.SubmitCompositorFrame(root_surface_id, std::move(root_frame), | 499 factory.SubmitCompositorFrame(root_surface_id, std::move(root_frame), |
500 SurfaceFactory::DrawCallback()); | 500 SurfaceFactory::DrawCallback()); |
501 | 501 |
502 // Creates a child surface. | 502 // Creates a child surface. |
503 RenderPass* child_pass = nullptr; | 503 RenderPass* child_pass = nullptr; |
504 scoped_ptr<CompositorFrame> child_frame = | 504 std::unique_ptr<CompositorFrame> child_frame = |
505 CreateCompositorFrame(child_rect, &child_pass); | 505 CreateCompositorFrame(child_rect, &child_pass); |
506 | 506 |
507 // Add a solid quad in the child surface. | 507 // Add a solid quad in the child surface. |
508 gfx::Rect child_solid_quad_rect(190, 190); | 508 gfx::Rect child_solid_quad_rect(190, 190); |
509 CreateSolidColorDrawQuad( | 509 CreateSolidColorDrawQuad( |
510 child_pass, | 510 child_pass, |
511 gfx::Transform(1.0f, 0.0f, 0.0f, 5.0f, 0.0f, 1.0f, 0.0f, 5.0f, 0.0f, 0.0f, | 511 gfx::Transform(1.0f, 0.0f, 0.0f, 5.0f, 0.0f, 1.0f, 0.0f, 5.0f, 0.0f, 0.0f, |
512 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f), | 512 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f), |
513 root_rect, child_solid_quad_rect); | 513 root_rect, child_solid_quad_rect); |
514 | 514 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 arraysize(test_expectations_with_accept_insets)); | 591 arraysize(test_expectations_with_accept_insets)); |
592 | 592 |
593 // Verify that insets have affected hit targeting. | 593 // Verify that insets have affected hit targeting. |
594 EXPECT_EQ(0, accept_delegate.reject_target_overrides()); | 594 EXPECT_EQ(0, accept_delegate.reject_target_overrides()); |
595 EXPECT_EQ(2, accept_delegate.accept_target_overrides()); | 595 EXPECT_EQ(2, accept_delegate.accept_target_overrides()); |
596 | 596 |
597 factory.Destroy(root_surface_id); | 597 factory.Destroy(root_surface_id); |
598 } | 598 } |
599 | 599 |
600 } // namespace cc | 600 } // namespace cc |
OLD | NEW |