| 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/local_surface_id_allocator.h" |
| 8 #include "cc/surfaces/surface.h" | 9 #include "cc/surfaces/surface.h" |
| 9 #include "cc/surfaces/surface_factory.h" | 10 #include "cc/surfaces/surface_factory.h" |
| 10 #include "cc/surfaces/surface_factory_client.h" | 11 #include "cc/surfaces/surface_factory_client.h" |
| 11 #include "cc/surfaces/surface_hittest.h" | 12 #include "cc/surfaces/surface_hittest.h" |
| 12 #include "cc/surfaces/surface_id_allocator.h" | |
| 13 #include "cc/surfaces/surface_manager.h" | 13 #include "cc/surfaces/surface_manager.h" |
| 14 #include "cc/test/surface_hittest_test_helpers.h" | 14 #include "cc/test/surface_hittest_test_helpers.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 16 #include "third_party/skia/include/core/SkColor.h" | 16 #include "third_party/skia/include/core/SkColor.h" |
| 17 #include "ui/gfx/geometry/size.h" | 17 #include "ui/gfx/geometry/size.h" |
| 18 | 18 |
| 19 namespace cc { | 19 namespace cc { |
| 20 | 20 |
| 21 namespace { | 21 namespace { |
| 22 | 22 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 kArbitraryFrameSinkId, | 76 kArbitraryFrameSinkId, |
| 77 LocalSurfaceId(0xdeadbeef, base::UnguessableToken::Create())); | 77 LocalSurfaceId(0xdeadbeef, base::UnguessableToken::Create())); |
| 78 gfx::Rect child_rect(200, 200); | 78 gfx::Rect child_rect(200, 200); |
| 79 CreateSurfaceDrawQuad(root_pass, | 79 CreateSurfaceDrawQuad(root_pass, |
| 80 gfx::Transform(), | 80 gfx::Transform(), |
| 81 root_rect, | 81 root_rect, |
| 82 child_rect, | 82 child_rect, |
| 83 child_surface_id); | 83 child_surface_id); |
| 84 | 84 |
| 85 // Submit the root frame. | 85 // Submit the root frame. |
| 86 SurfaceIdAllocator root_allocator; | 86 LocalSurfaceIdAllocator root_allocator; |
| 87 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); | 87 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); |
| 88 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); | 88 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); |
| 89 root_factory.SubmitCompositorFrame(root_local_surface_id, | 89 root_factory.SubmitCompositorFrame(root_local_surface_id, |
| 90 std::move(root_frame), | 90 std::move(root_frame), |
| 91 SurfaceFactory::DrawCallback()); | 91 SurfaceFactory::DrawCallback()); |
| 92 | 92 |
| 93 { | 93 { |
| 94 SurfaceHittest hittest(nullptr, &manager); | 94 SurfaceHittest hittest(nullptr, &manager); |
| 95 // It is expected this test will complete without crashes. | 95 // It is expected this test will complete without crashes. |
| 96 gfx::Transform transform; | 96 gfx::Transform transform; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 109 EmptySurfaceFactoryClient root_client; | 109 EmptySurfaceFactoryClient root_client; |
| 110 FrameSinkId root_frame_sink_id(1, 1); | 110 FrameSinkId root_frame_sink_id(1, 1); |
| 111 SurfaceFactory root_factory(root_frame_sink_id, &manager, &root_client); | 111 SurfaceFactory root_factory(root_frame_sink_id, &manager, &root_client); |
| 112 | 112 |
| 113 // Creates a root surface. | 113 // Creates a root surface. |
| 114 gfx::Rect root_rect(300, 300); | 114 gfx::Rect root_rect(300, 300); |
| 115 RenderPass* root_pass = nullptr; | 115 RenderPass* root_pass = nullptr; |
| 116 CompositorFrame root_frame = CreateCompositorFrame(root_rect, &root_pass); | 116 CompositorFrame root_frame = CreateCompositorFrame(root_rect, &root_pass); |
| 117 | 117 |
| 118 // Submit the root frame. | 118 // Submit the root frame. |
| 119 SurfaceIdAllocator root_allocator; | 119 LocalSurfaceIdAllocator root_allocator; |
| 120 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); | 120 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); |
| 121 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); | 121 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); |
| 122 root_factory.SubmitCompositorFrame(root_local_surface_id, | 122 root_factory.SubmitCompositorFrame(root_local_surface_id, |
| 123 std::move(root_frame), | 123 std::move(root_frame), |
| 124 SurfaceFactory::DrawCallback()); | 124 SurfaceFactory::DrawCallback()); |
| 125 TestCase tests[] = { | 125 TestCase tests[] = { |
| 126 { | 126 { |
| 127 root_surface_id, | 127 root_surface_id, |
| 128 gfx::Point(100, 100), | 128 gfx::Point(100, 100), |
| 129 root_surface_id, | 129 root_surface_id, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 148 EmptySurfaceFactoryClient child_client; | 148 EmptySurfaceFactoryClient child_client; |
| 149 FrameSinkId child_frame_sink_id(2, 2); | 149 FrameSinkId child_frame_sink_id(2, 2); |
| 150 SurfaceFactory child_factory(child_frame_sink_id, &manager, &child_client); | 150 SurfaceFactory child_factory(child_frame_sink_id, &manager, &child_client); |
| 151 | 151 |
| 152 // Creates a root surface. | 152 // Creates a root surface. |
| 153 gfx::Rect root_rect(300, 300); | 153 gfx::Rect root_rect(300, 300); |
| 154 RenderPass* root_pass = nullptr; | 154 RenderPass* root_pass = nullptr; |
| 155 CompositorFrame root_frame = CreateCompositorFrame(root_rect, &root_pass); | 155 CompositorFrame root_frame = CreateCompositorFrame(root_rect, &root_pass); |
| 156 | 156 |
| 157 // Add a reference to the child surface on the root surface. | 157 // Add a reference to the child surface on the root surface. |
| 158 SurfaceIdAllocator child_allocator; | 158 LocalSurfaceIdAllocator child_allocator; |
| 159 LocalSurfaceId child_local_surface_id = child_allocator.GenerateId(); | 159 LocalSurfaceId child_local_surface_id = child_allocator.GenerateId(); |
| 160 SurfaceId child_surface_id(child_frame_sink_id, child_local_surface_id); | 160 SurfaceId child_surface_id(child_frame_sink_id, child_local_surface_id); |
| 161 gfx::Rect child_rect(200, 200); | 161 gfx::Rect child_rect(200, 200); |
| 162 CreateSurfaceDrawQuad(root_pass, | 162 CreateSurfaceDrawQuad(root_pass, |
| 163 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, | 163 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, |
| 164 0.0f, 1.0f, 0.0f, 50.0f, | 164 0.0f, 1.0f, 0.0f, 50.0f, |
| 165 0.0f, 0.0f, 1.0f, 0.0f, | 165 0.0f, 0.0f, 1.0f, 0.0f, |
| 166 0.0f, 0.0f, 0.0f, 1.0f), | 166 0.0f, 0.0f, 0.0f, 1.0f), |
| 167 root_rect, | 167 root_rect, |
| 168 child_rect, | 168 child_rect, |
| 169 child_surface_id); | 169 child_surface_id); |
| 170 | 170 |
| 171 // Submit the root frame. | 171 // Submit the root frame. |
| 172 SurfaceIdAllocator root_allocator; | 172 LocalSurfaceIdAllocator root_allocator; |
| 173 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); | 173 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); |
| 174 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); | 174 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); |
| 175 root_factory.SubmitCompositorFrame(root_local_surface_id, | 175 root_factory.SubmitCompositorFrame(root_local_surface_id, |
| 176 std::move(root_frame), | 176 std::move(root_frame), |
| 177 SurfaceFactory::DrawCallback()); | 177 SurfaceFactory::DrawCallback()); |
| 178 | 178 |
| 179 // Creates a child surface. | 179 // Creates a child surface. |
| 180 RenderPass* child_pass = nullptr; | 180 RenderPass* child_pass = nullptr; |
| 181 CompositorFrame child_frame = CreateCompositorFrame(child_rect, &child_pass); | 181 CompositorFrame child_frame = CreateCompositorFrame(child_rect, &child_pass); |
| 182 | 182 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 gfx::Rect root_rect(300, 300); | 295 gfx::Rect root_rect(300, 300); |
| 296 RenderPass* root_pass = nullptr; | 296 RenderPass* root_pass = nullptr; |
| 297 CompositorFrame root_frame = CreateCompositorFrame(root_rect, &root_pass); | 297 CompositorFrame root_frame = CreateCompositorFrame(root_rect, &root_pass); |
| 298 | 298 |
| 299 // Create a RenderPassDrawQuad to a non-existant RenderPass. | 299 // Create a RenderPassDrawQuad to a non-existant RenderPass. |
| 300 int invalid_render_pass_id = 1337; | 300 int invalid_render_pass_id = 1337; |
| 301 CreateRenderPassDrawQuad(root_pass, gfx::Transform(), root_rect, root_rect, | 301 CreateRenderPassDrawQuad(root_pass, gfx::Transform(), root_rect, root_rect, |
| 302 invalid_render_pass_id); | 302 invalid_render_pass_id); |
| 303 | 303 |
| 304 // Add a reference to the child surface on the root surface. | 304 // Add a reference to the child surface on the root surface. |
| 305 SurfaceIdAllocator child_allocator; | 305 LocalSurfaceIdAllocator child_allocator; |
| 306 LocalSurfaceId child_local_surface_id = child_allocator.GenerateId(); | 306 LocalSurfaceId child_local_surface_id = child_allocator.GenerateId(); |
| 307 SurfaceId child_surface_id(child_frame_sink_id, child_local_surface_id); | 307 SurfaceId child_surface_id(child_frame_sink_id, child_local_surface_id); |
| 308 gfx::Rect child_rect(200, 200); | 308 gfx::Rect child_rect(200, 200); |
| 309 CreateSurfaceDrawQuad(root_pass, | 309 CreateSurfaceDrawQuad(root_pass, |
| 310 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, | 310 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, |
| 311 0.0f, 1.0f, 0.0f, 50.0f, | 311 0.0f, 1.0f, 0.0f, 50.0f, |
| 312 0.0f, 0.0f, 1.0f, 0.0f, | 312 0.0f, 0.0f, 1.0f, 0.0f, |
| 313 0.0f, 0.0f, 0.0f, 1.0f), | 313 0.0f, 0.0f, 0.0f, 1.0f), |
| 314 root_rect, | 314 root_rect, |
| 315 child_rect, | 315 child_rect, |
| 316 child_surface_id); | 316 child_surface_id); |
| 317 | 317 |
| 318 // Submit the root frame. | 318 // Submit the root frame. |
| 319 SurfaceIdAllocator root_allocator; | 319 LocalSurfaceIdAllocator root_allocator; |
| 320 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); | 320 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); |
| 321 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); | 321 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); |
| 322 root_factory.SubmitCompositorFrame(root_local_surface_id, | 322 root_factory.SubmitCompositorFrame(root_local_surface_id, |
| 323 std::move(root_frame), | 323 std::move(root_frame), |
| 324 SurfaceFactory::DrawCallback()); | 324 SurfaceFactory::DrawCallback()); |
| 325 | 325 |
| 326 // Creates a child surface. | 326 // Creates a child surface. |
| 327 RenderPass* child_pass = nullptr; | 327 RenderPass* child_pass = nullptr; |
| 328 CompositorFrame child_frame = CreateCompositorFrame(child_rect, &child_pass); | 328 CompositorFrame child_frame = CreateCompositorFrame(child_rect, &child_pass); |
| 329 | 329 |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 | 427 |
| 428 // Add a solid quad in the child render pass. | 428 // Add a solid quad in the child render pass. |
| 429 RenderPass* child_render_pass = root_frame.render_pass_list.front().get(); | 429 RenderPass* child_render_pass = root_frame.render_pass_list.front().get(); |
| 430 gfx::Rect child_solid_quad_rect(100, 100); | 430 gfx::Rect child_solid_quad_rect(100, 100); |
| 431 CreateSolidColorDrawQuad(child_render_pass, | 431 CreateSolidColorDrawQuad(child_render_pass, |
| 432 gfx::Transform(), | 432 gfx::Transform(), |
| 433 gfx::Rect(100, 100), | 433 gfx::Rect(100, 100), |
| 434 child_solid_quad_rect); | 434 child_solid_quad_rect); |
| 435 | 435 |
| 436 // Submit the root frame. | 436 // Submit the root frame. |
| 437 SurfaceIdAllocator root_allocator; | 437 LocalSurfaceIdAllocator root_allocator; |
| 438 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); | 438 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); |
| 439 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); | 439 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); |
| 440 factory.SubmitCompositorFrame(root_local_surface_id, std::move(root_frame), | 440 factory.SubmitCompositorFrame(root_local_surface_id, std::move(root_frame), |
| 441 SurfaceFactory::DrawCallback()); | 441 SurfaceFactory::DrawCallback()); |
| 442 | 442 |
| 443 TestCase tests[] = { | 443 TestCase tests[] = { |
| 444 // These tests just miss the RenderPassDrawQuad. | 444 // These tests just miss the RenderPassDrawQuad. |
| 445 { | 445 { |
| 446 root_surface_id, | 446 root_surface_id, |
| 447 gfx::Point(49, 49), | 447 gfx::Point(49, 49), |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 EmptySurfaceFactoryClient child_client; | 501 EmptySurfaceFactoryClient child_client; |
| 502 FrameSinkId child_frame_sink_id(2, 2); | 502 FrameSinkId child_frame_sink_id(2, 2); |
| 503 SurfaceFactory child_factory(child_frame_sink_id, &manager, &child_client); | 503 SurfaceFactory child_factory(child_frame_sink_id, &manager, &child_client); |
| 504 | 504 |
| 505 // Creates a root surface. | 505 // Creates a root surface. |
| 506 gfx::Rect root_rect(300, 300); | 506 gfx::Rect root_rect(300, 300); |
| 507 RenderPass* root_pass = nullptr; | 507 RenderPass* root_pass = nullptr; |
| 508 CompositorFrame root_frame = CreateCompositorFrame(root_rect, &root_pass); | 508 CompositorFrame root_frame = CreateCompositorFrame(root_rect, &root_pass); |
| 509 | 509 |
| 510 // Add a reference to the child surface on the root surface. | 510 // Add a reference to the child surface on the root surface. |
| 511 SurfaceIdAllocator child_allocator; | 511 LocalSurfaceIdAllocator child_allocator; |
| 512 LocalSurfaceId child_local_surface_id = child_allocator.GenerateId(); | 512 LocalSurfaceId child_local_surface_id = child_allocator.GenerateId(); |
| 513 SurfaceId child_surface_id(child_frame_sink_id, child_local_surface_id); | 513 SurfaceId child_surface_id(child_frame_sink_id, child_local_surface_id); |
| 514 gfx::Rect child_rect(200, 200); | 514 gfx::Rect child_rect(200, 200); |
| 515 CreateSurfaceDrawQuad( | 515 CreateSurfaceDrawQuad( |
| 516 root_pass, | 516 root_pass, |
| 517 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, | 517 gfx::Transform(1.0f, 0.0f, 0.0f, 50.0f, |
| 518 0.0f, 1.0f, 0.0f, 50.0f, | 518 0.0f, 1.0f, 0.0f, 50.0f, |
| 519 0.0f, 0.0f, 1.0f, 0.0f, | 519 0.0f, 0.0f, 1.0f, 0.0f, |
| 520 0.0f, 0.0f, 0.0f, 1.0f), | 520 0.0f, 0.0f, 0.0f, 1.0f), |
| 521 root_rect, child_rect, child_surface_id); | 521 root_rect, child_rect, child_surface_id); |
| 522 | 522 |
| 523 // Submit the root frame. | 523 // Submit the root frame. |
| 524 SurfaceIdAllocator root_allocator; | 524 LocalSurfaceIdAllocator root_allocator; |
| 525 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); | 525 LocalSurfaceId root_local_surface_id = root_allocator.GenerateId(); |
| 526 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); | 526 SurfaceId root_surface_id(root_frame_sink_id, root_local_surface_id); |
| 527 root_factory.SubmitCompositorFrame(root_local_surface_id, | 527 root_factory.SubmitCompositorFrame(root_local_surface_id, |
| 528 std::move(root_frame), | 528 std::move(root_frame), |
| 529 SurfaceFactory::DrawCallback()); | 529 SurfaceFactory::DrawCallback()); |
| 530 | 530 |
| 531 // Creates a child surface. | 531 // Creates a child surface. |
| 532 RenderPass* child_pass = nullptr; | 532 RenderPass* child_pass = nullptr; |
| 533 CompositorFrame child_frame = CreateCompositorFrame(child_rect, &child_pass); | 533 CompositorFrame child_frame = CreateCompositorFrame(child_rect, &child_pass); |
| 534 | 534 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 | 620 |
| 621 // Verify that insets have affected hit targeting. | 621 // Verify that insets have affected hit targeting. |
| 622 EXPECT_EQ(0, accept_delegate.reject_target_overrides()); | 622 EXPECT_EQ(0, accept_delegate.reject_target_overrides()); |
| 623 EXPECT_EQ(2, accept_delegate.accept_target_overrides()); | 623 EXPECT_EQ(2, accept_delegate.accept_target_overrides()); |
| 624 | 624 |
| 625 root_factory.EvictSurface(); | 625 root_factory.EvictSurface(); |
| 626 child_factory.EvictSurface(); | 626 child_factory.EvictSurface(); |
| 627 } | 627 } |
| 628 | 628 |
| 629 } // namespace cc | 629 } // namespace cc |
| OLD | NEW |