| 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 "cc/surfaces/display.h" | 5 #include "cc/surfaces/display.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/test/null_task_runner.h" | 9 #include "base/test/null_task_runner.h" |
| 10 #include "cc/output/compositor_frame.h" | 10 #include "cc/output/compositor_frame.h" |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 id_allocator_.id_namespace(), std::move(begin_frame_source), | 128 id_allocator_.id_namespace(), std::move(begin_frame_source), |
| 129 std::move(output_surface), std::move(scheduler), | 129 std::move(output_surface), std::move(scheduler), |
| 130 base::MakeUnique<TextureMailboxDeleter>(task_runner_.get())); | 130 base::MakeUnique<TextureMailboxDeleter>(task_runner_.get())); |
| 131 } | 131 } |
| 132 | 132 |
| 133 protected: | 133 protected: |
| 134 void SubmitCompositorFrame(RenderPassList* pass_list, SurfaceId surface_id) { | 134 void SubmitCompositorFrame(RenderPassList* pass_list, SurfaceId surface_id) { |
| 135 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); | 135 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); |
| 136 pass_list->swap(frame_data->render_pass_list); | 136 pass_list->swap(frame_data->render_pass_list); |
| 137 | 137 |
| 138 std::unique_ptr<CompositorFrame> frame(new CompositorFrame); | 138 std::unique_ptr<CompositorFrame> frame(CompositorFrame::Create()); |
| 139 frame->delegated_frame_data = std::move(frame_data); | 139 frame->delegated_frame_data = std::move(frame_data); |
| 140 | 140 |
| 141 factory_.SubmitCompositorFrame(surface_id, std::move(frame), | 141 factory_.SubmitCompositorFrame(surface_id, std::move(frame), |
| 142 SurfaceFactory::DrawCallback()); | 142 SurfaceFactory::DrawCallback()); |
| 143 } | 143 } |
| 144 | 144 |
| 145 static constexpr int kArbitrarySurfaceNamespace = 3; | 145 static constexpr int kArbitrarySurfaceNamespace = 3; |
| 146 | 146 |
| 147 SurfaceManager manager_; | 147 SurfaceManager manager_; |
| 148 FakeSurfaceFactoryClient surface_factory_client_; | 148 FakeSurfaceFactoryClient surface_factory_client_; |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 pass = RenderPass::Create(); | 330 pass = RenderPass::Create(); |
| 331 pass->output_rect = gfx::Rect(0, 0, 100, 100); | 331 pass->output_rect = gfx::Rect(0, 0, 100, 100); |
| 332 pass->damage_rect = gfx::Rect(10, 10, 0, 0); | 332 pass->damage_rect = gfx::Rect(10, 10, 0, 0); |
| 333 pass->id = RenderPassId(1, 1); | 333 pass->id = RenderPassId(1, 1); |
| 334 | 334 |
| 335 pass_list.push_back(std::move(pass)); | 335 pass_list.push_back(std::move(pass)); |
| 336 scheduler_->ResetDamageForTest(); | 336 scheduler_->ResetDamageForTest(); |
| 337 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); | 337 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); |
| 338 pass_list.swap(frame_data->render_pass_list); | 338 pass_list.swap(frame_data->render_pass_list); |
| 339 | 339 |
| 340 std::unique_ptr<CompositorFrame> frame(new CompositorFrame); | 340 std::unique_ptr<CompositorFrame> frame(CompositorFrame::Create()); |
| 341 frame->delegated_frame_data = std::move(frame_data); | 341 frame->delegated_frame_data = std::move(frame_data); |
| 342 frame->metadata.latency_info.push_back(ui::LatencyInfo()); | 342 frame->metadata.latency_info.push_back(ui::LatencyInfo()); |
| 343 | 343 |
| 344 factory_.SubmitCompositorFrame(surface_id, std::move(frame), | 344 factory_.SubmitCompositorFrame(surface_id, std::move(frame), |
| 345 SurfaceFactory::DrawCallback()); | 345 SurfaceFactory::DrawCallback()); |
| 346 EXPECT_TRUE(scheduler_->damaged); | 346 EXPECT_TRUE(scheduler_->damaged); |
| 347 EXPECT_FALSE(scheduler_->display_resized_); | 347 EXPECT_FALSE(scheduler_->display_resized_); |
| 348 EXPECT_FALSE(scheduler_->has_new_root_surface); | 348 EXPECT_FALSE(scheduler_->has_new_root_surface); |
| 349 | 349 |
| 350 scheduler_->swapped = false; | 350 scheduler_->swapped = false; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 363 pass = RenderPass::Create(); | 363 pass = RenderPass::Create(); |
| 364 pass->output_rect = gfx::Rect(0, 0, 200, 200); | 364 pass->output_rect = gfx::Rect(0, 0, 200, 200); |
| 365 pass->damage_rect = gfx::Rect(10, 10, 10, 10); | 365 pass->damage_rect = gfx::Rect(10, 10, 10, 10); |
| 366 pass->id = RenderPassId(1, 1); | 366 pass->id = RenderPassId(1, 1); |
| 367 | 367 |
| 368 pass_list.push_back(std::move(pass)); | 368 pass_list.push_back(std::move(pass)); |
| 369 scheduler_->ResetDamageForTest(); | 369 scheduler_->ResetDamageForTest(); |
| 370 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); | 370 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); |
| 371 pass_list.swap(frame_data->render_pass_list); | 371 pass_list.swap(frame_data->render_pass_list); |
| 372 | 372 |
| 373 std::unique_ptr<CompositorFrame> frame(new CompositorFrame); | 373 std::unique_ptr<CompositorFrame> frame(CompositorFrame::Create()); |
| 374 frame->delegated_frame_data = std::move(frame_data); | 374 frame->delegated_frame_data = std::move(frame_data); |
| 375 | 375 |
| 376 factory_.SubmitCompositorFrame(surface_id, std::move(frame), | 376 factory_.SubmitCompositorFrame(surface_id, std::move(frame), |
| 377 SurfaceFactory::DrawCallback()); | 377 SurfaceFactory::DrawCallback()); |
| 378 EXPECT_TRUE(scheduler_->damaged); | 378 EXPECT_TRUE(scheduler_->damaged); |
| 379 EXPECT_FALSE(scheduler_->display_resized_); | 379 EXPECT_FALSE(scheduler_->display_resized_); |
| 380 EXPECT_FALSE(scheduler_->has_new_root_surface); | 380 EXPECT_FALSE(scheduler_->has_new_root_surface); |
| 381 | 381 |
| 382 scheduler_->swapped = false; | 382 scheduler_->swapped = false; |
| 383 display_->Resize(gfx::Size(100, 100)); | 383 display_->Resize(gfx::Size(100, 100)); |
| 384 EXPECT_TRUE(scheduler_->swapped); | 384 EXPECT_TRUE(scheduler_->swapped); |
| 385 EXPECT_EQ(5u, output_surface_->num_sent_frames()); | 385 EXPECT_EQ(5u, output_surface_->num_sent_frames()); |
| 386 | 386 |
| 387 // Latency info from previous frame should be sent now. | 387 // Latency info from previous frame should be sent now. |
| 388 EXPECT_EQ(1u, | 388 EXPECT_EQ(1u, |
| 389 output_surface_->last_sent_frame().metadata.latency_info.size()); | 389 output_surface_->last_sent_frame()->metadata.latency_info.size()); |
| 390 } | 390 } |
| 391 | 391 |
| 392 { | 392 { |
| 393 // Surface that's damaged completely should be resized and swapped. | 393 // Surface that's damaged completely should be resized and swapped. |
| 394 pass = RenderPass::Create(); | 394 pass = RenderPass::Create(); |
| 395 pass->output_rect = gfx::Rect(0, 0, 99, 99); | 395 pass->output_rect = gfx::Rect(0, 0, 99, 99); |
| 396 pass->damage_rect = gfx::Rect(0, 0, 99, 99); | 396 pass->damage_rect = gfx::Rect(0, 0, 99, 99); |
| 397 pass->id = RenderPassId(1, 1); | 397 pass->id = RenderPassId(1, 1); |
| 398 | 398 |
| 399 pass_list.push_back(std::move(pass)); | 399 pass_list.push_back(std::move(pass)); |
| 400 scheduler_->ResetDamageForTest(); | 400 scheduler_->ResetDamageForTest(); |
| 401 SubmitCompositorFrame(&pass_list, surface_id); | 401 SubmitCompositorFrame(&pass_list, surface_id); |
| 402 EXPECT_TRUE(scheduler_->damaged); | 402 EXPECT_TRUE(scheduler_->damaged); |
| 403 EXPECT_FALSE(scheduler_->display_resized_); | 403 EXPECT_FALSE(scheduler_->display_resized_); |
| 404 EXPECT_FALSE(scheduler_->has_new_root_surface); | 404 EXPECT_FALSE(scheduler_->has_new_root_surface); |
| 405 | 405 |
| 406 scheduler_->swapped = false; | 406 scheduler_->swapped = false; |
| 407 display_->DrawAndSwap(); | 407 display_->DrawAndSwap(); |
| 408 EXPECT_TRUE(scheduler_->swapped); | 408 EXPECT_TRUE(scheduler_->swapped); |
| 409 EXPECT_EQ(6u, output_surface_->num_sent_frames()); | 409 EXPECT_EQ(6u, output_surface_->num_sent_frames()); |
| 410 EXPECT_EQ(gfx::Size(100, 100), | 410 EXPECT_EQ(gfx::Size(100, 100), |
| 411 software_output_device_->viewport_pixel_size()); | 411 software_output_device_->viewport_pixel_size()); |
| 412 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), | 412 EXPECT_EQ(gfx::Rect(0, 0, 100, 100), |
| 413 software_output_device_->damage_rect()); | 413 software_output_device_->damage_rect()); |
| 414 EXPECT_EQ(0u, | 414 EXPECT_EQ(0u, |
| 415 output_surface_->last_sent_frame().metadata.latency_info.size()); | 415 output_surface_->last_sent_frame()->metadata.latency_info.size()); |
| 416 } | 416 } |
| 417 | 417 |
| 418 factory_.Destroy(surface_id); | 418 factory_.Destroy(surface_id); |
| 419 } | 419 } |
| 420 | 420 |
| 421 class MockedContext : public TestWebGraphicsContext3D { | 421 class MockedContext : public TestWebGraphicsContext3D { |
| 422 public: | 422 public: |
| 423 MOCK_METHOD0(shallowFinishCHROMIUM, void()); | 423 MOCK_METHOD0(shallowFinishCHROMIUM, void()); |
| 424 }; | 424 }; |
| 425 | 425 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 | 487 |
| 488 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); | 488 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); |
| 489 display_->Resize(gfx::Size(250, 250)); | 489 display_->Resize(gfx::Size(250, 250)); |
| 490 testing::Mock::VerifyAndClearExpectations(context_ptr); | 490 testing::Mock::VerifyAndClearExpectations(context_ptr); |
| 491 | 491 |
| 492 factory_.Destroy(surface_id); | 492 factory_.Destroy(surface_id); |
| 493 } | 493 } |
| 494 | 494 |
| 495 } // namespace | 495 } // namespace |
| 496 } // namespace cc | 496 } // namespace cc |
| OLD | NEW |