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

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

Issue 1821863002: Hook up ui::Compositor to Display's BeginFrameSource (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Display member destruction order 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
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/surface_display_output_surface.h" 5 #include "cc/surfaces/surface_display_output_surface.h"
6 6
7 #include "cc/surfaces/onscreen_display_client.h" 7 #include "cc/surfaces/onscreen_display_client.h"
8 #include "cc/surfaces/surface_id_allocator.h" 8 #include "cc/surfaces/surface_id_allocator.h"
9 #include "cc/surfaces/surface_manager.h" 9 #include "cc/surfaces/surface_manager.h"
10 #include "cc/test/fake_output_surface.h" 10 #include "cc/test/fake_output_surface.h"
11 #include "cc/test/fake_output_surface_client.h" 11 #include "cc/test/fake_output_surface_client.h"
12 #include "cc/test/ordered_simple_task_runner.h" 12 #include "cc/test/ordered_simple_task_runner.h"
13 #include "cc/test/test_context_provider.h" 13 #include "cc/test/test_context_provider.h"
14 #include "cc/test/test_gpu_memory_buffer_manager.h" 14 #include "cc/test/test_gpu_memory_buffer_manager.h"
15 #include "cc/test/test_shared_bitmap_manager.h" 15 #include "cc/test/test_shared_bitmap_manager.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 namespace cc { 18 namespace cc {
19 namespace { 19 namespace {
20 20
21 class FakeOnscreenDisplayClient : public OnscreenDisplayClient { 21 class FakeOnscreenDisplayClient : public OnscreenDisplayClient {
22 public: 22 public:
23 FakeOnscreenDisplayClient( 23 FakeOnscreenDisplayClient(
24 SurfaceManager* manager, 24 SurfaceManager* manager,
25 SharedBitmapManager* bitmap_manager, 25 SharedBitmapManager* bitmap_manager,
26 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 26 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
27 const RendererSettings& settings, 27 const RendererSettings& settings,
28 scoped_refptr<base::SingleThreadTaskRunner> task_runner) 28 scoped_refptr<base::SingleThreadTaskRunner> task_runner,
29 uint32_t compositor_surface_namespace)
29 : OnscreenDisplayClient(FakeOutputSurface::Create3d(), 30 : OnscreenDisplayClient(FakeOutputSurface::Create3d(),
30 manager, 31 manager,
31 bitmap_manager, 32 bitmap_manager,
32 gpu_memory_buffer_manager, 33 gpu_memory_buffer_manager,
33 settings, 34 settings,
34 task_runner) { 35 task_runner,
36 compositor_surface_namespace) {
35 // Ownership is passed to another object later, store a pointer 37 // Ownership is passed to another object later, store a pointer
36 // to it now for future reference. 38 // to it now for future reference.
37 fake_output_surface_ = 39 fake_output_surface_ =
38 static_cast<FakeOutputSurface*>(output_surface_.get()); 40 static_cast<FakeOutputSurface*>(output_surface_.get());
39 fake_output_surface_->set_max_frames_pending(2); 41 fake_output_surface_->set_max_frames_pending(2);
40 } 42 }
41 43
42 FakeOutputSurface* output_surface() { return fake_output_surface_; } 44 FakeOutputSurface* output_surface() { return fake_output_surface_; }
43 45
44 protected: 46 protected:
45 FakeOutputSurface* fake_output_surface_; 47 FakeOutputSurface* fake_output_surface_;
46 }; 48 };
47 49
48 class SurfaceDisplayOutputSurfaceTest : public testing::Test { 50 class SurfaceDisplayOutputSurfaceTest : public testing::Test {
49 public: 51 public:
50 SurfaceDisplayOutputSurfaceTest() 52 SurfaceDisplayOutputSurfaceTest()
51 : now_src_(new base::SimpleTestTickClock()), 53 : now_src_(new base::SimpleTestTickClock()),
52 task_runner_(new OrderedSimpleTaskRunner(now_src_.get(), true)), 54 task_runner_(new OrderedSimpleTaskRunner(now_src_.get(), true)),
53 allocator_(0), 55 allocator_(0),
54 display_size_(1920, 1080), 56 display_size_(1920, 1080),
55 display_rect_(display_size_), 57 display_rect_(display_size_),
56 display_client_(&surface_manager_, 58 display_client_(&surface_manager_,
57 &bitmap_manager_, 59 &bitmap_manager_,
58 &gpu_memory_buffer_manager_, 60 &gpu_memory_buffer_manager_,
59 renderer_settings_, 61 renderer_settings_,
60 task_runner_), 62 task_runner_,
63 allocator_.id_namespace()),
61 context_provider_(TestContextProvider::Create()), 64 context_provider_(TestContextProvider::Create()),
62 surface_display_output_surface_(&surface_manager_, 65 surface_display_output_surface_(&surface_manager_,
63 &allocator_, 66 &allocator_,
64 context_provider_, 67 context_provider_,
65 nullptr) { 68 nullptr) {
66 surface_manager_.RegisterSurfaceIdNamespace(allocator_.id_namespace()); 69 surface_manager_.RegisterSurfaceIdNamespace(allocator_.id_namespace());
67 output_surface_ = display_client_.output_surface(); 70 output_surface_ = display_client_.output_surface();
68 display_client_.set_surface_output_surface( 71 display_client_.set_surface_output_surface(
69 &surface_display_output_surface_); 72 &surface_display_output_surface_);
70 surface_display_output_surface_.set_display_client(&display_client_); 73 surface_display_output_surface_.set_display_client(&display_client_);
74
75 // Set the Display's begin frame source like a real browser compositor
76 // output surface would.
77 begin_frame_source_.reset(
78 new BackToBackBeginFrameSource(task_runner_.get()));
79 display_client_.display()->SetBeginFrameSource(begin_frame_source_.get());
80
71 surface_display_output_surface_.BindToClient( 81 surface_display_output_surface_.BindToClient(
72 &surface_display_output_surface_client_); 82 &surface_display_output_surface_client_);
83
73 display_client_.display()->Resize(display_size_); 84 display_client_.display()->Resize(display_size_);
74 85
75 EXPECT_FALSE(surface_display_output_surface_client_ 86 EXPECT_FALSE(surface_display_output_surface_client_
76 .did_lose_output_surface_called()); 87 .did_lose_output_surface_called());
77 } 88 }
78 89
79 ~SurfaceDisplayOutputSurfaceTest() override {} 90 ~SurfaceDisplayOutputSurfaceTest() override {}
80 91
81 void SwapBuffersWithDamage(const gfx::Rect& damage_rect_) { 92 void SwapBuffersWithDamage(const gfx::Rect& damage_rect_) {
82 std::unique_ptr<RenderPass> render_pass(RenderPass::Create()); 93 std::unique_ptr<RenderPass> render_pass(RenderPass::Create());
(...skipping 14 matching lines...) Expand all
97 SwapBuffersWithDamage(display_rect_); 108 SwapBuffersWithDamage(display_rect_);
98 109
99 EXPECT_EQ(0u, output_surface_->num_sent_frames()); 110 EXPECT_EQ(0u, output_surface_->num_sent_frames());
100 task_runner_->RunUntilIdle(); 111 task_runner_->RunUntilIdle();
101 EXPECT_EQ(1u, output_surface_->num_sent_frames()); 112 EXPECT_EQ(1u, output_surface_->num_sent_frames());
102 } 113 }
103 114
104 protected: 115 protected:
105 std::unique_ptr<base::SimpleTestTickClock> now_src_; 116 std::unique_ptr<base::SimpleTestTickClock> now_src_;
106 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; 117 scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
118 scoped_ptr<BackToBackBeginFrameSource> begin_frame_source_;
107 SurfaceIdAllocator allocator_; 119 SurfaceIdAllocator allocator_;
108 120
109 const gfx::Size display_size_; 121 const gfx::Size display_size_;
110 const gfx::Rect display_rect_; 122 const gfx::Rect display_rect_;
111 FakeOutputSurface* output_surface_; 123 FakeOutputSurface* output_surface_;
112 SurfaceManager surface_manager_; 124 SurfaceManager surface_manager_;
113 TestSharedBitmapManager bitmap_manager_; 125 TestSharedBitmapManager bitmap_manager_;
114 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; 126 TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
115 RendererSettings renderer_settings_; 127 RendererSettings renderer_settings_;
116 FakeOnscreenDisplayClient display_client_; 128 FakeOnscreenDisplayClient display_client_;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 EXPECT_EQ(1u, output_surface_->num_sent_frames()); 170 EXPECT_EQ(1u, output_surface_->num_sent_frames());
159 171
160 SwapBuffersWithDamage(gfx::Rect()); 172 SwapBuffersWithDamage(gfx::Rect());
161 EXPECT_EQ(1u, output_surface_->num_sent_frames()); 173 EXPECT_EQ(1u, output_surface_->num_sent_frames());
162 task_runner_->RunUntilIdle(); 174 task_runner_->RunUntilIdle();
163 EXPECT_EQ(1u, output_surface_->num_sent_frames()); 175 EXPECT_EQ(1u, output_surface_->num_sent_frames());
164 } 176 }
165 177
166 } // namespace 178 } // namespace
167 } // namespace cc 179 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/surface_display_output_surface.cc ('k') | cc/test/fake_layer_tree_host_impl_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698