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

Side by Side Diff: services/ui/ws/frame_generator_unittest.cc

Issue 2890913002: Add CompositorFrameSinkClientBinding To Be Used By FrameGenerator (Closed)
Patch Set: BeginFrameDidNotSwap Created 3 years, 7 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 | « services/ui/ws/frame_generator.cc ('k') | services/ui/ws/platform_display_default.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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "services/ui/ws/frame_generator.h" 5 #include "services/ui/ws/frame_generator.h"
6 6
7 #include "base/debug/stack_trace.h"
Fady Samuel 2017/05/18 11:55:28 Delete this.
Alex Z. 2017/05/18 14:32:22 Done.
7 #include "base/macros.h" 8 #include "base/macros.h"
8 #include "cc/output/compositor_frame_sink.h" 9 #include "cc/output/compositor_frame_sink.h"
9 #include "cc/scheduler/begin_frame_source.h" 10 #include "cc/scheduler/begin_frame_source.h"
10 #include "cc/test/begin_frame_args_test.h" 11 #include "cc/test/begin_frame_args_test.h"
11 #include "cc/test/fake_external_begin_frame_source.h" 12 #include "cc/test/fake_external_begin_frame_source.h"
12 #include "services/ui/ws/server_window.h" 13 #include "services/ui/ws/server_window.h"
13 #include "services/ui/ws/server_window_delegate.h" 14 #include "services/ui/ws/server_window_delegate.h"
14 #include "services/ui/ws/test_utils.h" 15 #include "services/ui/ws/test_utils.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 17
(...skipping 14 matching lines...) Expand all
31 } 32 }
32 33
33 ServerWindow* GetRootWindow(const ServerWindow* window) override { 34 ServerWindow* GetRootWindow(const ServerWindow* window) override {
34 return nullptr; 35 return nullptr;
35 } 36 }
36 37
37 private: 38 private:
38 DISALLOW_COPY_AND_ASSIGN(TestServerWindowDelegate); 39 DISALLOW_COPY_AND_ASSIGN(TestServerWindowDelegate);
39 }; 40 };
40 41
41 // FakeCompositorFrameSink observes a FakeExternalBeginFrameSource and receives 42 // TestClientBinding Observes a BeginFrame and accepts CompositorFrame submitted
42 // CompositorFrames from a FrameGenerator. 43 // from FrameGenerator. It provides a way to inspect CompositorFrames.
43 class FakeCompositorFrameSink : public cc::CompositorFrameSink, 44 class TestClientBinding : public CompositorFrameSinkClientBinding,
44 public cc::BeginFrameObserver, 45 public cc::BeginFrameObserver {
45 public cc::ExternalBeginFrameSourceClient {
46 public: 46 public:
47 FakeCompositorFrameSink() 47 explicit TestClientBinding(
48 : cc::CompositorFrameSink(nullptr, nullptr, nullptr, nullptr) {} 48 cc::mojom::MojoCompositorFrameSinkClient* sink_client)
49 : sink_client_(sink_client) {}
50 ~TestClientBinding() override = default;
49 51
50 // cc::CompositorFrameSink implementation: 52 // CompositorFrameSinkClientBinding implementation:
51 bool BindToClient(cc::CompositorFrameSinkClient* client) override { 53 void SubmitCompositorFrame(cc::CompositorFrame frame) override {
52 if (!cc::CompositorFrameSink::BindToClient(client)) 54 ++frames_submitted_;
53 return false; 55 last_frame_ = std::move(frame);
54 56 begin_frame_source_->DidFinishFrame(this,
55 external_begin_frame_source_ = 57 last_frame_.metadata.begin_frame_ack);
56 base::MakeUnique<cc::ExternalBeginFrameSource>(this);
57 client_->SetBeginFrameSource(external_begin_frame_source_.get());
58 return true;
59 } 58 }
60 59
61 void DetachFromClient() override { 60 void SetNeedsBeginFrame(bool needs_begin_frame) override {
62 cc::CompositorFrameSink::DetachFromClient(); 61 if (needs_begin_frame == observing_begin_frames_)
62 return;
63
64 observing_begin_frames_ = needs_begin_frame;
65 if (needs_begin_frame) {
66 begin_frame_source_->AddObserver(this);
67 } else
68 begin_frame_source_->RemoveObserver(this);
63 } 69 }
64 70
65 void SubmitCompositorFrame(cc::CompositorFrame frame) override { 71 void BeginFrameDidNotSwap(const cc::BeginFrameAck& ack) override {
66 ++number_frames_received_; 72 if (observing_begin_frames_)
67 last_frame_ = std::move(frame); 73 begin_frame_source_->DidFinishFrame(this, ack);
68 } 74 }
69 75
70 // cc::BeginFrameObserver implementation. 76 // cc::BeginFrameObserver implementation.
71 void OnBeginFrame(const cc::BeginFrameArgs& args) override { 77 void OnBeginFrame(const cc::BeginFrameArgs& args) override {
72 external_begin_frame_source_->OnBeginFrame(args); 78 sink_client_->OnBeginFrame(args);
73 last_begin_frame_args_ = args; 79 last_begin_frame_args_ = args;
74 } 80 }
75 81
76 const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override { 82 const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override {
77 return last_begin_frame_args_; 83 return last_begin_frame_args_;
78 } 84 }
79 85
80 void OnBeginFrameSourcePausedChanged(bool paused) override {} 86 void OnBeginFrameSourcePausedChanged(bool paused) override {}
81 87
82 // cc::ExternalBeginFrameSourceClient implementation: 88 void SetBeginFrameSource(cc::BeginFrameSource* begin_frame_source) {
83 void OnNeedsBeginFrames(bool needs_begin_frames) override { 89 begin_frame_source_ = begin_frame_source;
84 needs_begin_frames_ = needs_begin_frames;
85 UpdateNeedsBeginFramesInternal();
86 } 90 }
87 91
88 void OnDidFinishFrame(const cc::BeginFrameAck& ack) override { 92 const cc::RenderPassList& last_render_pass_list() const {
89 begin_frame_source_->DidFinishFrame(this, ack); 93 return last_frame_.render_pass_list;
90 }
91
92 void SetBeginFrameSource(cc::BeginFrameSource* source) {
93 if (begin_frame_source_ && observing_begin_frames_) {
94 begin_frame_source_->RemoveObserver(this);
95 observing_begin_frames_ = false;
96 }
97 begin_frame_source_ = source;
98 UpdateNeedsBeginFramesInternal();
99 } 94 }
100 95
101 const cc::CompositorFrameMetadata& last_metadata() const { 96 const cc::CompositorFrameMetadata& last_metadata() const {
102 return last_frame_.metadata; 97 return last_frame_.metadata;
103 } 98 }
104 99
105 const cc::RenderPassList& last_render_pass_list() const { 100 int frames_submitted() const { return frames_submitted_; }
106 return last_frame_.render_pass_list;
107 }
108
109 int number_frames_received() { return number_frames_received_; }
110 101
111 private: 102 private:
112 void UpdateNeedsBeginFramesInternal() { 103 cc::mojom::MojoCompositorFrameSinkClient* sink_client_;
113 if (!begin_frame_source_) 104 cc::BeginFrameArgs last_begin_frame_args_;
114 return; 105 cc::CompositorFrame last_frame_;
115
116 if (needs_begin_frames_ == observing_begin_frames_)
117 return;
118
119 observing_begin_frames_ = needs_begin_frames_;
120 if (needs_begin_frames_) {
121 begin_frame_source_->AddObserver(this);
122 } else {
123 begin_frame_source_->RemoveObserver(this);
124 }
125 }
126
127 int number_frames_received_ = 0;
128 std::unique_ptr<cc::ExternalBeginFrameSource> external_begin_frame_source_;
129 cc::BeginFrameSource* begin_frame_source_ = nullptr; 106 cc::BeginFrameSource* begin_frame_source_ = nullptr;
130 cc::BeginFrameArgs last_begin_frame_args_;
131 bool observing_begin_frames_ = false; 107 bool observing_begin_frames_ = false;
132 bool needs_begin_frames_ = false; 108 int frames_submitted_ = 0;
133 cc::CompositorFrame last_frame_;
134
135 DISALLOW_COPY_AND_ASSIGN(FakeCompositorFrameSink);
136 }; 109 };
137 110
138 class FrameGeneratorTest : public testing::Test { 111 class FrameGeneratorTest : public testing::Test {
139 public: 112 public:
140 FrameGeneratorTest() {} 113 FrameGeneratorTest() {}
141 ~FrameGeneratorTest() override {} 114 ~FrameGeneratorTest() override = default;
142 115
143 // testing::Test overrides: 116 // testing::Test overrides:
144 void SetUp() override { 117 void SetUp() override {
145 testing::Test::SetUp(); 118 testing::Test::SetUp();
146 119
147 std::unique_ptr<FakeCompositorFrameSink> compositor_frame_sink =
148 base::MakeUnique<FakeCompositorFrameSink>();
149 compositor_frame_sink_ = compositor_frame_sink.get();
150
151 constexpr float kRefreshRate = 0.f; 120 constexpr float kRefreshRate = 0.f;
152 constexpr bool kTickAutomatically = false; 121 constexpr bool kTickAutomatically = false;
122 frame_generator_ = base::MakeUnique<FrameGenerator>();
153 begin_frame_source_ = base::MakeUnique<cc::FakeExternalBeginFrameSource>( 123 begin_frame_source_ = base::MakeUnique<cc::FakeExternalBeginFrameSource>(
154 kRefreshRate, kTickAutomatically); 124 kRefreshRate, kTickAutomatically);
155 compositor_frame_sink_->SetBeginFrameSource(begin_frame_source_.get());
156 server_window_delegate_ = base::MakeUnique<TestServerWindowDelegate>();
157 frame_generator_ =
158 base::MakeUnique<FrameGenerator>(std::move(compositor_frame_sink));
159 frame_generator_->OnWindowSizeChanged(gfx::Size(1, 2));
160 }; 125 };
161 126
162 void InitWithSurfaceInfo() { 127 void InitWithSurfaceInfo() {
163 // FrameGenerator requires a valid SurfaceInfo before generating 128 // FrameGenerator requires a valid SurfaceInfo before generating
164 // CompositorFrames. 129 // CompositorFrames.
130 std::unique_ptr<TestClientBinding> client_binding =
131 base::MakeUnique<TestClientBinding>(frame_generator_.get());
132 binding_ = client_binding.get();
133 client_binding->SetBeginFrameSource(begin_frame_source_.get());
134 frame_generator_->Bind(std::move(client_binding));
165 const cc::SurfaceId kArbitrarySurfaceId( 135 const cc::SurfaceId kArbitrarySurfaceId(
166 cc::FrameSinkId(1, 1), 136 cc::FrameSinkId(1, 1),
167 cc::LocalSurfaceId(1, base::UnguessableToken::Create())); 137 cc::LocalSurfaceId(1, base::UnguessableToken::Create()));
168 const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f, 138 const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f,
169 gfx::Size(100, 100)); 139 gfx::Size(100, 100));
170 140 frame_generator_->OnSurfaceCreated(kArbitrarySurfaceInfo);
171 frame_generator()->OnSurfaceCreated(kArbitrarySurfaceInfo);
172 IssueBeginFrame(); 141 IssueBeginFrame();
173 EXPECT_EQ(1, NumberOfFramesReceived()); 142 EXPECT_EQ(1, binding_->frames_submitted());
174 }
175
176 int NumberOfFramesReceived() {
177 return compositor_frame_sink_->number_frames_received();
178 } 143 }
179 144
180 void IssueBeginFrame() { 145 void IssueBeginFrame() {
181 begin_frame_source_->TestOnBeginFrame(cc::CreateBeginFrameArgsForTesting( 146 begin_frame_source_->TestOnBeginFrame(cc::CreateBeginFrameArgsForTesting(
182 BEGINFRAME_FROM_HERE, 0, next_sequence_number_)); 147 BEGINFRAME_FROM_HERE, 0, next_sequence_number_));
183 ++next_sequence_number_; 148 ++next_sequence_number_;
184 } 149 }
185 150
186 FrameGenerator* frame_generator() { return frame_generator_.get(); } 151 int NumberOfFramesReceived() const { return binding_->frames_submitted(); }
152
153 const cc::BeginFrameAck& LastBeginFrameAck(
154 TestClientBinding* test_client_binding) {
155 return begin_frame_source_->LastAckForObserver(test_client_binding);
156 }
187 157
188 const cc::CompositorFrameMetadata& LastMetadata() const { 158 const cc::CompositorFrameMetadata& LastMetadata() const {
189 return compositor_frame_sink_->last_metadata(); 159 return binding_->last_metadata();
190 } 160 }
191 161
192 const cc::RenderPassList& LastRenderPassList() const { 162 const cc::RenderPassList& LastRenderPassList() const {
193 return compositor_frame_sink_->last_render_pass_list(); 163 return binding_->last_render_pass_list();
194 } 164 }
195 165
196 const cc::BeginFrameAck& LastBeginFrameAck() { 166 FrameGenerator* frame_generator() { return frame_generator_.get(); }
197 return begin_frame_source_->LastAckForObserver(compositor_frame_sink_); 167 cc::BeginFrameSource* begin_frame_source() {
168 return begin_frame_source_.get();
198 } 169 }
199 170
171 TestClientBinding* binding() { return binding_; }
172
200 private: 173 private:
201 FakeCompositorFrameSink* compositor_frame_sink_ = nullptr;
202 std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_; 174 std::unique_ptr<cc::FakeExternalBeginFrameSource> begin_frame_source_;
203 std::unique_ptr<TestServerWindowDelegate> server_window_delegate_;
204 std::unique_ptr<FrameGenerator> frame_generator_; 175 std::unique_ptr<FrameGenerator> frame_generator_;
176 TestClientBinding* binding_ = nullptr;
205 int next_sequence_number_ = 1; 177 int next_sequence_number_ = 1;
206 178
207 DISALLOW_COPY_AND_ASSIGN(FrameGeneratorTest); 179 DISALLOW_COPY_AND_ASSIGN(FrameGeneratorTest);
208 }; 180 };
209 181
210 TEST_F(FrameGeneratorTest, InvalidSurfaceInfo) {
211 // After SetUP(), frame_generator() has its |is_window_visible_| set to true
Fady Samuel 2017/05/18 11:55:28 Why delete this?
Alex Z. 2017/05/18 14:32:22 It's restored. It was deleted because there wasn't
212 // and |bounds_| to an arbitrary non-empty gfx::Rect but not a valid
213 // SurfaceInfo. frame_generator() should not request BeginFrames in this
214 // state.
215 IssueBeginFrame();
216 EXPECT_EQ(0, NumberOfFramesReceived());
217 }
218
219 TEST_F(FrameGeneratorTest, OnSurfaceCreated) { 182 TEST_F(FrameGeneratorTest, OnSurfaceCreated) {
220 EXPECT_EQ(0, NumberOfFramesReceived()); 183 std::unique_ptr<TestClientBinding> test_client_binding =
Fady Samuel 2017/05/18 11:55:28 Why delete this?
Alex Z. 2017/05/18 14:32:23 It's moved to InitWithSurfaceInfo in the next patc
221 184 base::MakeUnique<TestClientBinding>(frame_generator());
185 test_client_binding->SetBeginFrameSource(begin_frame_source());
186 TestClientBinding* binding = test_client_binding.get();
187 frame_generator()->Bind(std::move(test_client_binding));
Fady Samuel 2017/05/18 11:55:28 Why can't this be part of the setup?
Alex Z. 2017/05/18 14:32:23 It's using InitWithSurfaceInfo() now. I didn't us
222 // FrameGenerator does not request BeginFrames upon creation. 188 // FrameGenerator does not request BeginFrames upon creation.
223 IssueBeginFrame(); 189 IssueBeginFrame();
224 EXPECT_EQ(0, NumberOfFramesReceived()); 190 EXPECT_EQ(cc::BeginFrameAck(), LastBeginFrameAck(binding));
225 EXPECT_EQ(cc::BeginFrameAck(), LastBeginFrameAck());
226 191
227 const cc::SurfaceId kArbitrarySurfaceId( 192 const cc::SurfaceId kArbitrarySurfaceId(
228 cc::FrameSinkId(1, 1), 193 cc::FrameSinkId(1, 1),
229 cc::LocalSurfaceId(1, base::UnguessableToken::Create())); 194 cc::LocalSurfaceId(1, base::UnguessableToken::Create()));
230 const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f, 195 const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f,
231 gfx::Size(100, 100)); 196 gfx::Size(100, 100));
232 frame_generator()->OnSurfaceCreated(kArbitrarySurfaceInfo); 197 frame_generator()->OnSurfaceCreated(kArbitrarySurfaceInfo);
233 EXPECT_EQ(0, NumberOfFramesReceived()); 198 frame_generator()->OnWindowSizeChanged(gfx::Size(1, 2));
Fady Samuel 2017/05/18 11:55:27 Why introduce this?
Alex Z. 2017/05/18 14:32:23 Thanks for pointing this out. It was part of the r
234 199
235 IssueBeginFrame(); 200 IssueBeginFrame();
236 EXPECT_EQ(1, NumberOfFramesReceived()); 201 EXPECT_EQ(1, binding->frames_submitted());
237 202
238 // Verify that the CompositorFrame refers to the window manager's surface via 203 // Verify that the CompositorFrame refers to the window manager's surface via
239 // referenced_surfaces. 204 // referenced_surfaces.
240 const cc::CompositorFrameMetadata& last_metadata = LastMetadata(); 205 const cc::CompositorFrameMetadata& last_metadata = binding->last_metadata();
241 const std::vector<cc::SurfaceId>& referenced_surfaces = 206 const std::vector<cc::SurfaceId>& referenced_surfaces =
242 last_metadata.referenced_surfaces; 207 last_metadata.referenced_surfaces;
243 EXPECT_EQ(1lu, referenced_surfaces.size()); 208 EXPECT_EQ(1lu, referenced_surfaces.size());
244 EXPECT_EQ(kArbitrarySurfaceId, referenced_surfaces.front()); 209 EXPECT_EQ(kArbitrarySurfaceId, referenced_surfaces.front());
245 210
246 cc::BeginFrameAck expected_ack(0, 2, 2, true); 211 cc::BeginFrameAck expected_ack(0, 2, 2, true);
247 EXPECT_EQ(expected_ack, LastBeginFrameAck()); 212 EXPECT_EQ(expected_ack, LastBeginFrameAck(binding));
Fady Samuel 2017/05/18 11:55:28 Maybe store binding in FrameGeneratorTest instead?
Alex Z. 2017/05/18 14:32:22 Done.
248 EXPECT_EQ(expected_ack, last_metadata.begin_frame_ack); 213 EXPECT_EQ(expected_ack, last_metadata.begin_frame_ack);
249 214
250 // FrameGenerator stops requesting BeginFrames after submitting a 215 // FrameGenerator stops requesting BeginFrames after submitting a
251 // CompositorFrame. 216 // CompositorFrame.
252 IssueBeginFrame(); 217 IssueBeginFrame();
253 EXPECT_EQ(1, NumberOfFramesReceived()); 218 EXPECT_EQ(expected_ack, LastBeginFrameAck(binding));
254 EXPECT_EQ(expected_ack, LastBeginFrameAck());
255 } 219 }
256 220
257 TEST_F(FrameGeneratorTest, SetDeviceScaleFactor) { 221 TEST_F(FrameGeneratorTest, SetDeviceScaleFactor) {
258 EXPECT_EQ(0, NumberOfFramesReceived()); 222 InitWithSurfaceInfo();
259 const cc::SurfaceId kArbitrarySurfaceId(
260 cc::FrameSinkId(1, 1),
261 cc::LocalSurfaceId(1, base::UnguessableToken::Create()));
262 const cc::SurfaceInfo kArbitrarySurfaceInfo(kArbitrarySurfaceId, 1.0f,
263 gfx::Size(100, 100));
264 constexpr float kDefaultScaleFactor = 1.0f; 223 constexpr float kDefaultScaleFactor = 1.0f;
265 constexpr float kArbitraryScaleFactor = 0.5f; 224 constexpr float kArbitraryScaleFactor = 0.5f;
266 225
267 // A valid SurfaceInfo is required before setting device scale factor.
268 frame_generator()->OnSurfaceCreated(kArbitrarySurfaceInfo);
269 IssueBeginFrame();
Fady Samuel 2017/05/18 11:55:28 Are we losing part of the test?
Alex Z. 2017/05/18 14:32:23 This is now in InitWithSurfaceInfo. It's fine sinc
270 EXPECT_EQ(1, NumberOfFramesReceived());
271
272 // FrameGenerator stops requesting BeginFrames after receiving one.
273 IssueBeginFrame();
274 EXPECT_EQ(1, NumberOfFramesReceived());
Fady Samuel 2017/05/18 11:55:28 Why delete this?
Alex Z. 2017/05/18 14:32:22 The "FrameGenerator stopping requesting BeginFrame
275
276 // FrameGenerator does not request BeginFrames if its device scale factor 226 // FrameGenerator does not request BeginFrames if its device scale factor
277 // remains unchanged. 227 // remains unchanged.
278 frame_generator()->SetDeviceScaleFactor(kDefaultScaleFactor); 228 frame_generator()->SetDeviceScaleFactor(kDefaultScaleFactor);
279 IssueBeginFrame(); 229 IssueBeginFrame();
280 EXPECT_EQ(1, NumberOfFramesReceived());
Fady Samuel 2017/05/18 11:55:28 Why delete this?
Alex Z. 2017/05/18 14:32:22 Thanks for pointing it out. It was removed when I
281 const cc::CompositorFrameMetadata& last_metadata = LastMetadata(); 230 const cc::CompositorFrameMetadata& last_metadata = LastMetadata();
282 EXPECT_EQ(kDefaultScaleFactor, last_metadata.device_scale_factor); 231 EXPECT_EQ(kDefaultScaleFactor, last_metadata.device_scale_factor);
283 232
284 frame_generator()->SetDeviceScaleFactor(kArbitraryScaleFactor); 233 frame_generator()->SetDeviceScaleFactor(kArbitraryScaleFactor);
285 IssueBeginFrame(); 234 IssueBeginFrame();
286 EXPECT_EQ(2, NumberOfFramesReceived()); 235 EXPECT_EQ(2, NumberOfFramesReceived());
287 const cc::CompositorFrameMetadata& second_last_metadata = LastMetadata(); 236 const cc::CompositorFrameMetadata& second_last_metadata = LastMetadata();
288 EXPECT_EQ(kArbitraryScaleFactor, second_last_metadata.device_scale_factor); 237 EXPECT_EQ(kArbitraryScaleFactor, second_last_metadata.device_scale_factor);
289 } 238 }
290 239
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 frame_generator()->OnWindowSizeChanged(kArbitrarySize); 278 frame_generator()->OnWindowSizeChanged(kArbitrarySize);
330 frame_generator()->OnWindowSizeChanged(kAnotherArbitrarySize); 279 frame_generator()->OnWindowSizeChanged(kAnotherArbitrarySize);
331 IssueBeginFrame(); 280 IssueBeginFrame();
332 EXPECT_EQ(2, NumberOfFramesReceived()); 281 EXPECT_EQ(2, NumberOfFramesReceived());
333 cc::RenderPass* received_render_pass = LastRenderPassList().front().get(); 282 cc::RenderPass* received_render_pass = LastRenderPassList().front().get();
334 EXPECT_EQ(kAnotherArbitrarySize, received_render_pass->output_rect.size()); 283 EXPECT_EQ(kAnotherArbitrarySize, received_render_pass->output_rect.size());
335 EXPECT_EQ(kAnotherArbitrarySize, received_render_pass->damage_rect.size()); 284 EXPECT_EQ(kAnotherArbitrarySize, received_render_pass->damage_rect.size());
336 285
337 // frame_generator() stops requesting BeginFrames after getting one. 286 // frame_generator() stops requesting BeginFrames after getting one.
338 IssueBeginFrame(); 287 IssueBeginFrame();
339 EXPECT_EQ(2, NumberOfFramesReceived());
Fady Samuel 2017/05/18 11:55:28 Why delete this?
Alex Z. 2017/05/18 14:32:23 It was deleted while converting to use gmock. It's
340 } 288 }
341 289
342 TEST_F(FrameGeneratorTest, WindowDamaged) { 290 TEST_F(FrameGeneratorTest, WindowDamaged) {
343 InitWithSurfaceInfo(); 291 InitWithSurfaceInfo();
344 292
345 frame_generator()->OnWindowDamaged(); 293 frame_generator()->OnWindowDamaged();
346 IssueBeginFrame(); 294 IssueBeginFrame();
347 EXPECT_EQ(2, NumberOfFramesReceived()); 295 EXPECT_EQ(2, NumberOfFramesReceived());
348 } 296 }
349 297
350 } // namespace test 298 } // namespace test
351 } // namespace ws 299 } // namespace ws
352 } // namespace ui 300 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/ws/frame_generator.cc ('k') | services/ui/ws/platform_display_default.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698