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

Side by Side Diff: cc/surfaces/display_unittest.cc

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase Created 4 years, 8 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
« no previous file with comments | « cc/surfaces/display_scheduler_unittest.cc ('k') | cc/surfaces/onscreen_display_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 }; 54 };
55 55
56 class DisplayTest : public testing::Test { 56 class DisplayTest : public testing::Test {
57 public: 57 public:
58 DisplayTest() 58 DisplayTest()
59 : factory_(&manager_, &surface_factory_client_), 59 : factory_(&manager_, &surface_factory_client_),
60 software_output_device_(nullptr), 60 software_output_device_(nullptr),
61 task_runner_(new base::NullTaskRunner) {} 61 task_runner_(new base::NullTaskRunner) {}
62 62
63 protected: 63 protected:
64 void SetUpContext(scoped_ptr<TestWebGraphicsContext3D> context) { 64 void SetUpContext(std::unique_ptr<TestWebGraphicsContext3D> context) {
65 if (context) { 65 if (context) {
66 output_surface_ = FakeOutputSurface::Create3d( 66 output_surface_ = FakeOutputSurface::Create3d(
67 TestContextProvider::Create(std::move(context))); 67 TestContextProvider::Create(std::move(context)));
68 } else { 68 } else {
69 scoped_ptr<TestSoftwareOutputDevice> output_device( 69 std::unique_ptr<TestSoftwareOutputDevice> output_device(
70 new TestSoftwareOutputDevice); 70 new TestSoftwareOutputDevice);
71 software_output_device_ = output_device.get(); 71 software_output_device_ = output_device.get();
72 output_surface_ = 72 output_surface_ =
73 FakeOutputSurface::CreateSoftware(std::move(output_device)); 73 FakeOutputSurface::CreateSoftware(std::move(output_device));
74 } 74 }
75 shared_bitmap_manager_.reset(new TestSharedBitmapManager); 75 shared_bitmap_manager_.reset(new TestSharedBitmapManager);
76 output_surface_ptr_ = output_surface_.get(); 76 output_surface_ptr_ = output_surface_.get();
77 } 77 }
78 78
79 void SubmitCompositorFrame(RenderPassList* pass_list, SurfaceId surface_id) { 79 void SubmitCompositorFrame(RenderPassList* pass_list, SurfaceId surface_id) {
80 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); 80 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
81 pass_list->swap(frame_data->render_pass_list); 81 pass_list->swap(frame_data->render_pass_list);
82 82
83 scoped_ptr<CompositorFrame> frame(new CompositorFrame); 83 std::unique_ptr<CompositorFrame> frame(new CompositorFrame);
84 frame->delegated_frame_data = std::move(frame_data); 84 frame->delegated_frame_data = std::move(frame_data);
85 85
86 factory_.SubmitCompositorFrame(surface_id, std::move(frame), 86 factory_.SubmitCompositorFrame(surface_id, std::move(frame),
87 SurfaceFactory::DrawCallback()); 87 SurfaceFactory::DrawCallback());
88 } 88 }
89 89
90 SurfaceManager manager_; 90 SurfaceManager manager_;
91 FakeSurfaceFactoryClient surface_factory_client_; 91 FakeSurfaceFactoryClient surface_factory_client_;
92 SurfaceFactory factory_; 92 SurfaceFactory factory_;
93 TestSoftwareOutputDevice* software_output_device_; 93 TestSoftwareOutputDevice* software_output_device_;
94 scoped_ptr<FakeOutputSurface> output_surface_; 94 std::unique_ptr<FakeOutputSurface> output_surface_;
95 FakeOutputSurface* output_surface_ptr_; 95 FakeOutputSurface* output_surface_ptr_;
96 FakeBeginFrameSource fake_begin_frame_source_; 96 FakeBeginFrameSource fake_begin_frame_source_;
97 scoped_refptr<base::NullTaskRunner> task_runner_; 97 scoped_refptr<base::NullTaskRunner> task_runner_;
98 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; 98 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_;
99 }; 99 };
100 100
101 class TestDisplayClient : public DisplayClient { 101 class TestDisplayClient : public DisplayClient {
102 public: 102 public:
103 TestDisplayClient() {} 103 TestDisplayClient() {}
104 ~TestDisplayClient() override {} 104 ~TestDisplayClient() override {}
105 105
106 void CommitVSyncParameters(base::TimeTicks timebase, 106 void CommitVSyncParameters(base::TimeTicks timebase,
107 base::TimeDelta interval) override {} 107 base::TimeDelta interval) override {}
108 void OutputSurfaceLost() override {} 108 void OutputSurfaceLost() override {}
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 display_resized_ = false; 142 display_resized_ = false;
143 has_new_root_surface = false; 143 has_new_root_surface = false;
144 } 144 }
145 145
146 bool damaged; 146 bool damaged;
147 bool display_resized_; 147 bool display_resized_;
148 bool has_new_root_surface; 148 bool has_new_root_surface;
149 bool swapped; 149 bool swapped;
150 }; 150 };
151 151
152 void CopyCallback(bool* called, scoped_ptr<CopyOutputResult> result) { 152 void CopyCallback(bool* called, std::unique_ptr<CopyOutputResult> result) {
153 *called = true; 153 *called = true;
154 } 154 }
155 155
156 // Check that frame is damaged and swapped only under correct conditions. 156 // Check that frame is damaged and swapped only under correct conditions.
157 TEST_F(DisplayTest, DisplayDamaged) { 157 TEST_F(DisplayTest, DisplayDamaged) {
158 SetUpContext(nullptr); 158 SetUpContext(nullptr);
159 TestDisplayClient client; 159 TestDisplayClient client;
160 RendererSettings settings; 160 RendererSettings settings;
161 settings.partial_swap_enabled = true; 161 settings.partial_swap_enabled = true;
162 settings.finish_rendering_on_resize = true; 162 settings.finish_rendering_on_resize = true;
(...skipping 15 matching lines...) Expand all
178 scheduler.ResetDamageForTest(); 178 scheduler.ResetDamageForTest();
179 display.Resize(gfx::Size(100, 100)); 179 display.Resize(gfx::Size(100, 100));
180 EXPECT_FALSE(scheduler.damaged); 180 EXPECT_FALSE(scheduler.damaged);
181 EXPECT_TRUE(scheduler.display_resized_); 181 EXPECT_TRUE(scheduler.display_resized_);
182 EXPECT_FALSE(scheduler.has_new_root_surface); 182 EXPECT_FALSE(scheduler.has_new_root_surface);
183 183
184 factory_.Create(surface_id); 184 factory_.Create(surface_id);
185 185
186 // First draw from surface should have full damage. 186 // First draw from surface should have full damage.
187 RenderPassList pass_list; 187 RenderPassList pass_list;
188 scoped_ptr<RenderPass> pass = RenderPass::Create(); 188 std::unique_ptr<RenderPass> pass = RenderPass::Create();
189 pass->output_rect = gfx::Rect(0, 0, 100, 100); 189 pass->output_rect = gfx::Rect(0, 0, 100, 100);
190 pass->damage_rect = gfx::Rect(10, 10, 1, 1); 190 pass->damage_rect = gfx::Rect(10, 10, 1, 1);
191 pass->id = RenderPassId(1, 1); 191 pass->id = RenderPassId(1, 1);
192 pass_list.push_back(std::move(pass)); 192 pass_list.push_back(std::move(pass));
193 193
194 scheduler.ResetDamageForTest(); 194 scheduler.ResetDamageForTest();
195 SubmitCompositorFrame(&pass_list, surface_id); 195 SubmitCompositorFrame(&pass_list, surface_id);
196 EXPECT_TRUE(scheduler.damaged); 196 EXPECT_TRUE(scheduler.damaged);
197 EXPECT_FALSE(scheduler.display_resized_); 197 EXPECT_FALSE(scheduler.display_resized_);
198 EXPECT_FALSE(scheduler.has_new_root_surface); 198 EXPECT_FALSE(scheduler.has_new_root_surface);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 // Pass has no damage, so shouldn't be swapped, but latency info should be 318 // Pass has no damage, so shouldn't be swapped, but latency info should be
319 // saved for next swap. 319 // saved for next swap.
320 { 320 {
321 pass = RenderPass::Create(); 321 pass = RenderPass::Create();
322 pass->output_rect = gfx::Rect(0, 0, 100, 100); 322 pass->output_rect = gfx::Rect(0, 0, 100, 100);
323 pass->damage_rect = gfx::Rect(10, 10, 0, 0); 323 pass->damage_rect = gfx::Rect(10, 10, 0, 0);
324 pass->id = RenderPassId(1, 1); 324 pass->id = RenderPassId(1, 1);
325 325
326 pass_list.push_back(std::move(pass)); 326 pass_list.push_back(std::move(pass));
327 scheduler.ResetDamageForTest(); 327 scheduler.ResetDamageForTest();
328 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); 328 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
329 pass_list.swap(frame_data->render_pass_list); 329 pass_list.swap(frame_data->render_pass_list);
330 330
331 scoped_ptr<CompositorFrame> frame(new CompositorFrame); 331 std::unique_ptr<CompositorFrame> frame(new CompositorFrame);
332 frame->delegated_frame_data = std::move(frame_data); 332 frame->delegated_frame_data = std::move(frame_data);
333 frame->metadata.latency_info.push_back(ui::LatencyInfo()); 333 frame->metadata.latency_info.push_back(ui::LatencyInfo());
334 334
335 factory_.SubmitCompositorFrame(surface_id, std::move(frame), 335 factory_.SubmitCompositorFrame(surface_id, std::move(frame),
336 SurfaceFactory::DrawCallback()); 336 SurfaceFactory::DrawCallback());
337 EXPECT_TRUE(scheduler.damaged); 337 EXPECT_TRUE(scheduler.damaged);
338 EXPECT_FALSE(scheduler.display_resized_); 338 EXPECT_FALSE(scheduler.display_resized_);
339 EXPECT_FALSE(scheduler.has_new_root_surface); 339 EXPECT_FALSE(scheduler.has_new_root_surface);
340 340
341 scheduler.swapped = false; 341 scheduler.swapped = false;
342 display.DrawAndSwap(); 342 display.DrawAndSwap();
343 EXPECT_TRUE(scheduler.swapped); 343 EXPECT_TRUE(scheduler.swapped);
344 EXPECT_EQ(4u, output_surface_ptr_->num_sent_frames()); 344 EXPECT_EQ(4u, output_surface_ptr_->num_sent_frames());
345 } 345 }
346 346
347 // Resize should cause a swap if no frame was swapped at the previous size. 347 // Resize should cause a swap if no frame was swapped at the previous size.
348 { 348 {
349 scheduler.swapped = false; 349 scheduler.swapped = false;
350 display.Resize(gfx::Size(200, 200)); 350 display.Resize(gfx::Size(200, 200));
351 EXPECT_FALSE(scheduler.swapped); 351 EXPECT_FALSE(scheduler.swapped);
352 EXPECT_EQ(4u, output_surface_ptr_->num_sent_frames()); 352 EXPECT_EQ(4u, output_surface_ptr_->num_sent_frames());
353 353
354 pass = RenderPass::Create(); 354 pass = RenderPass::Create();
355 pass->output_rect = gfx::Rect(0, 0, 200, 200); 355 pass->output_rect = gfx::Rect(0, 0, 200, 200);
356 pass->damage_rect = gfx::Rect(10, 10, 10, 10); 356 pass->damage_rect = gfx::Rect(10, 10, 10, 10);
357 pass->id = RenderPassId(1, 1); 357 pass->id = RenderPassId(1, 1);
358 358
359 pass_list.push_back(std::move(pass)); 359 pass_list.push_back(std::move(pass));
360 scheduler.ResetDamageForTest(); 360 scheduler.ResetDamageForTest();
361 scoped_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); 361 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
362 pass_list.swap(frame_data->render_pass_list); 362 pass_list.swap(frame_data->render_pass_list);
363 363
364 scoped_ptr<CompositorFrame> frame(new CompositorFrame); 364 std::unique_ptr<CompositorFrame> frame(new CompositorFrame);
365 frame->delegated_frame_data = std::move(frame_data); 365 frame->delegated_frame_data = std::move(frame_data);
366 366
367 factory_.SubmitCompositorFrame(surface_id, std::move(frame), 367 factory_.SubmitCompositorFrame(surface_id, std::move(frame),
368 SurfaceFactory::DrawCallback()); 368 SurfaceFactory::DrawCallback());
369 EXPECT_TRUE(scheduler.damaged); 369 EXPECT_TRUE(scheduler.damaged);
370 EXPECT_FALSE(scheduler.display_resized_); 370 EXPECT_FALSE(scheduler.display_resized_);
371 EXPECT_FALSE(scheduler.has_new_root_surface); 371 EXPECT_FALSE(scheduler.has_new_root_surface);
372 372
373 scheduler.swapped = false; 373 scheduler.swapped = false;
374 display.Resize(gfx::Size(100, 100)); 374 display.Resize(gfx::Size(100, 100));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 410
411 factory_.Destroy(surface_id); 411 factory_.Destroy(surface_id);
412 } 412 }
413 413
414 class MockedContext : public TestWebGraphicsContext3D { 414 class MockedContext : public TestWebGraphicsContext3D {
415 public: 415 public:
416 MOCK_METHOD0(shallowFinishCHROMIUM, void()); 416 MOCK_METHOD0(shallowFinishCHROMIUM, void());
417 }; 417 };
418 418
419 TEST_F(DisplayTest, Finish) { 419 TEST_F(DisplayTest, Finish) {
420 scoped_ptr<MockedContext> context(new MockedContext()); 420 std::unique_ptr<MockedContext> context(new MockedContext());
421 MockedContext* context_ptr = context.get(); 421 MockedContext* context_ptr = context.get();
422 SetUpContext(std::move(context)); 422 SetUpContext(std::move(context));
423 423
424 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0); 424 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0);
425 TestDisplayClient client; 425 TestDisplayClient client;
426 RendererSettings settings; 426 RendererSettings settings;
427 settings.partial_swap_enabled = true; 427 settings.partial_swap_enabled = true;
428 settings.finish_rendering_on_resize = true; 428 settings.finish_rendering_on_resize = true;
429 Display display(&client, &manager_, shared_bitmap_manager_.get(), nullptr, 429 Display display(&client, &manager_, shared_bitmap_manager_.get(), nullptr,
430 settings); 430 settings);
431 431
432 TestDisplayScheduler scheduler(&display, &fake_begin_frame_source_, 432 TestDisplayScheduler scheduler(&display, &fake_begin_frame_source_,
433 task_runner_.get()); 433 task_runner_.get());
434 display.Initialize(std::move(output_surface_), &scheduler); 434 display.Initialize(std::move(output_surface_), &scheduler);
435 435
436 SurfaceId surface_id(7u); 436 SurfaceId surface_id(7u);
437 display.SetSurfaceId(surface_id, 1.f); 437 display.SetSurfaceId(surface_id, 1.f);
438 438
439 display.Resize(gfx::Size(100, 100)); 439 display.Resize(gfx::Size(100, 100));
440 factory_.Create(surface_id); 440 factory_.Create(surface_id);
441 441
442 { 442 {
443 RenderPassList pass_list; 443 RenderPassList pass_list;
444 scoped_ptr<RenderPass> pass = RenderPass::Create(); 444 std::unique_ptr<RenderPass> pass = RenderPass::Create();
445 pass->output_rect = gfx::Rect(0, 0, 100, 100); 445 pass->output_rect = gfx::Rect(0, 0, 100, 100);
446 pass->damage_rect = gfx::Rect(10, 10, 1, 1); 446 pass->damage_rect = gfx::Rect(10, 10, 1, 1);
447 pass->id = RenderPassId(1, 1); 447 pass->id = RenderPassId(1, 1);
448 pass_list.push_back(std::move(pass)); 448 pass_list.push_back(std::move(pass));
449 449
450 SubmitCompositorFrame(&pass_list, surface_id); 450 SubmitCompositorFrame(&pass_list, surface_id);
451 } 451 }
452 452
453 display.DrawAndSwap(); 453 display.DrawAndSwap();
454 454
455 // First resize and draw shouldn't finish. 455 // First resize and draw shouldn't finish.
456 testing::Mock::VerifyAndClearExpectations(context_ptr); 456 testing::Mock::VerifyAndClearExpectations(context_ptr);
457 457
458 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); 458 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM());
459 display.Resize(gfx::Size(150, 150)); 459 display.Resize(gfx::Size(150, 150));
460 testing::Mock::VerifyAndClearExpectations(context_ptr); 460 testing::Mock::VerifyAndClearExpectations(context_ptr);
461 461
462 // Another resize without a swap doesn't need to finish. 462 // Another resize without a swap doesn't need to finish.
463 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0); 463 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0);
464 display.Resize(gfx::Size(200, 200)); 464 display.Resize(gfx::Size(200, 200));
465 testing::Mock::VerifyAndClearExpectations(context_ptr); 465 testing::Mock::VerifyAndClearExpectations(context_ptr);
466 466
467 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0); 467 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()).Times(0);
468 { 468 {
469 RenderPassList pass_list; 469 RenderPassList pass_list;
470 scoped_ptr<RenderPass> pass = RenderPass::Create(); 470 std::unique_ptr<RenderPass> pass = RenderPass::Create();
471 pass->output_rect = gfx::Rect(0, 0, 200, 200); 471 pass->output_rect = gfx::Rect(0, 0, 200, 200);
472 pass->damage_rect = gfx::Rect(10, 10, 1, 1); 472 pass->damage_rect = gfx::Rect(10, 10, 1, 1);
473 pass->id = RenderPassId(1, 1); 473 pass->id = RenderPassId(1, 1);
474 pass_list.push_back(std::move(pass)); 474 pass_list.push_back(std::move(pass));
475 475
476 SubmitCompositorFrame(&pass_list, surface_id); 476 SubmitCompositorFrame(&pass_list, surface_id);
477 } 477 }
478 478
479 display.DrawAndSwap(); 479 display.DrawAndSwap();
480 480
481 testing::Mock::VerifyAndClearExpectations(context_ptr); 481 testing::Mock::VerifyAndClearExpectations(context_ptr);
482 482
483 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); 483 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM());
484 display.Resize(gfx::Size(250, 250)); 484 display.Resize(gfx::Size(250, 250));
485 testing::Mock::VerifyAndClearExpectations(context_ptr); 485 testing::Mock::VerifyAndClearExpectations(context_ptr);
486 486
487 factory_.Destroy(surface_id); 487 factory_.Destroy(surface_id);
488 } 488 }
489 489
490 } // namespace 490 } // namespace
491 } // namespace cc 491 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/display_scheduler_unittest.cc ('k') | cc/surfaces/onscreen_display_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698