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

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

Issue 2286273003: Make cc::Display not own its BeginFrameSource (Closed)
Patch Set: Fix webview Created 4 years, 3 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.cc ('k') | cc/surfaces/surface_display_output_surface_unittest.cc » ('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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 task_runner_(new base::NullTaskRunner) { 101 task_runner_(new base::NullTaskRunner) {
102 manager_.RegisterSurfaceClientId(id_allocator_.client_id()); 102 manager_.RegisterSurfaceClientId(id_allocator_.client_id());
103 } 103 }
104 104
105 ~DisplayTest() override { 105 ~DisplayTest() override {
106 manager_.InvalidateSurfaceClientId(id_allocator_.client_id()); 106 manager_.InvalidateSurfaceClientId(id_allocator_.client_id());
107 } 107 }
108 108
109 void SetUpDisplay(const RendererSettings& settings, 109 void SetUpDisplay(const RendererSettings& settings,
110 std::unique_ptr<TestWebGraphicsContext3D> context) { 110 std::unique_ptr<TestWebGraphicsContext3D> context) {
111 std::unique_ptr<BeginFrameSource> begin_frame_source(
112 new StubBeginFrameSource);
113
114 std::unique_ptr<FakeOutputSurface> output_surface; 111 std::unique_ptr<FakeOutputSurface> output_surface;
115 if (context) { 112 if (context) {
116 output_surface = FakeOutputSurface::Create3d(std::move(context)); 113 output_surface = FakeOutputSurface::Create3d(std::move(context));
117 } else { 114 } else {
118 std::unique_ptr<TestSoftwareOutputDevice> device( 115 std::unique_ptr<TestSoftwareOutputDevice> device(
119 new TestSoftwareOutputDevice); 116 new TestSoftwareOutputDevice);
120 software_output_device_ = device.get(); 117 software_output_device_ = device.get();
121 output_surface = FakeOutputSurface::CreateSoftware(std::move(device)); 118 output_surface = FakeOutputSurface::CreateSoftware(std::move(device));
122 } 119 }
123 output_surface_ = output_surface.get(); 120 output_surface_ = output_surface.get();
124 121
125 std::unique_ptr<TestDisplayScheduler> scheduler( 122 std::unique_ptr<TestDisplayScheduler> scheduler(
126 new TestDisplayScheduler(begin_frame_source.get(), task_runner_.get())); 123 new TestDisplayScheduler(&begin_frame_source_, task_runner_.get()));
127 scheduler_ = scheduler.get(); 124 scheduler_ = scheduler.get();
128 125
129 display_ = base::MakeUnique<Display>( 126 display_ = base::MakeUnique<Display>(
130 &shared_bitmap_manager_, nullptr /* gpu_memory_buffer_manager */, 127 &shared_bitmap_manager_, nullptr /* gpu_memory_buffer_manager */,
131 settings, std::move(begin_frame_source), std::move(output_surface), 128 settings, &begin_frame_source_, std::move(output_surface),
132 std::move(scheduler), 129 std::move(scheduler),
133 base::MakeUnique<TextureMailboxDeleter>(task_runner_.get())); 130 base::MakeUnique<TextureMailboxDeleter>(task_runner_.get()));
134 display_->SetVisible(true); 131 display_->SetVisible(true);
135 } 132 }
136 133
137 protected: 134 protected:
138 void SubmitCompositorFrame(RenderPassList* pass_list, 135 void SubmitCompositorFrame(RenderPassList* pass_list,
139 const SurfaceId& surface_id) { 136 const SurfaceId& surface_id) {
140 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData); 137 std::unique_ptr<DelegatedFrameData> frame_data(new DelegatedFrameData);
141 pass_list->swap(frame_data->render_pass_list); 138 pass_list->swap(frame_data->render_pass_list);
142 139
143 CompositorFrame frame; 140 CompositorFrame frame;
144 frame.delegated_frame_data = std::move(frame_data); 141 frame.delegated_frame_data = std::move(frame_data);
145 142
146 factory_.SubmitCompositorFrame(surface_id, std::move(frame), 143 factory_.SubmitCompositorFrame(surface_id, std::move(frame),
147 SurfaceFactory::DrawCallback()); 144 SurfaceFactory::DrawCallback());
148 } 145 }
149 146
150 static constexpr int kArbitraryClientId = 3; 147 static constexpr int kArbitraryClientId = 3;
151 148
152 SurfaceManager manager_; 149 SurfaceManager manager_;
153 FakeSurfaceFactoryClient surface_factory_client_; 150 FakeSurfaceFactoryClient surface_factory_client_;
154 SurfaceFactory factory_; 151 SurfaceFactory factory_;
155 SurfaceIdAllocator id_allocator_; 152 SurfaceIdAllocator id_allocator_;
153 StubBeginFrameSource begin_frame_source_;
156 scoped_refptr<base::NullTaskRunner> task_runner_; 154 scoped_refptr<base::NullTaskRunner> task_runner_;
157 TestSharedBitmapManager shared_bitmap_manager_; 155 TestSharedBitmapManager shared_bitmap_manager_;
158 std::unique_ptr<Display> display_; 156 std::unique_ptr<Display> display_;
159 TestSoftwareOutputDevice* software_output_device_ = nullptr; 157 TestSoftwareOutputDevice* software_output_device_ = nullptr;
160 FakeOutputSurface* output_surface_ = nullptr; 158 FakeOutputSurface* output_surface_ = nullptr;
161 TestDisplayScheduler* scheduler_ = nullptr; 159 TestDisplayScheduler* scheduler_ = nullptr;
162 }; 160 };
163 161
164 class StubDisplayClient : public DisplayClient { 162 class StubDisplayClient : public DisplayClient {
165 public: 163 public:
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 493
496 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM()); 494 EXPECT_CALL(*context_ptr, shallowFinishCHROMIUM());
497 display_->Resize(gfx::Size(250, 250)); 495 display_->Resize(gfx::Size(250, 250));
498 testing::Mock::VerifyAndClearExpectations(context_ptr); 496 testing::Mock::VerifyAndClearExpectations(context_ptr);
499 497
500 factory_.Destroy(surface_id); 498 factory_.Destroy(surface_id);
501 } 499 }
502 500
503 } // namespace 501 } // namespace
504 } // namespace cc 502 } // namespace cc
OLDNEW
« no previous file with comments | « cc/surfaces/display.cc ('k') | cc/surfaces/surface_display_output_surface_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698