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 |