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

Side by Side Diff: ui/compositor/layer_unittest.cc

Issue 2815073002: Revert of Remove CompositorObserver::OnCompositingEnded() (Closed)
Patch Set: Fix CompositorObservers test Created 3 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 | « ui/compositor/compositor_unittest.cc ('k') | ui/compositor/test/draw_waiter_for_test.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/compositor/layer.h" 5 #include "ui/compositor/layer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 DrawFadedStringLayerDelegate* delegate) { 181 DrawFadedStringLayerDelegate* delegate) {
182 std::unique_ptr<Layer> layer(new Layer(LAYER_TEXTURED)); 182 std::unique_ptr<Layer> layer(new Layer(LAYER_TEXTURED));
183 layer->SetBounds(bounds); 183 layer->SetBounds(bounds);
184 layer->set_delegate(delegate); 184 layer->set_delegate(delegate);
185 return layer; 185 return layer;
186 } 186 }
187 187
188 void DrawTree(Layer* root) { 188 void DrawTree(Layer* root) {
189 GetCompositor()->SetRootLayer(root); 189 GetCompositor()->SetRootLayer(root);
190 GetCompositor()->ScheduleDraw(); 190 GetCompositor()->ScheduleDraw();
191 WaitForDraw(); 191 WaitForSwap();
192 } 192 }
193 193
194 void ReadPixels(SkBitmap* bitmap) { 194 void ReadPixels(SkBitmap* bitmap) {
195 ReadPixels(bitmap, gfx::Rect(GetCompositor()->size())); 195 ReadPixels(bitmap, gfx::Rect(GetCompositor()->size()));
196 } 196 }
197 197
198 void ReadPixels(SkBitmap* bitmap, gfx::Rect source_rect) { 198 void ReadPixels(SkBitmap* bitmap, gfx::Rect source_rect) {
199 scoped_refptr<ReadbackHolder> holder(new ReadbackHolder); 199 scoped_refptr<ReadbackHolder> holder(new ReadbackHolder);
200 std::unique_ptr<cc::CopyOutputRequest> request = 200 std::unique_ptr<cc::CopyOutputRequest> request =
201 cc::CopyOutputRequest::CreateBitmapRequest( 201 cc::CopyOutputRequest::CreateBitmapRequest(
(...skipping 13 matching lines...) Expand all
215 // Waits for the callback to finish run and return result. 215 // Waits for the callback to finish run and return result.
216 holder->WaitForReadback(); 216 holder->WaitForReadback();
217 217
218 *bitmap = holder->result(); 218 *bitmap = holder->result();
219 } 219 }
220 220
221 void WaitForDraw() { 221 void WaitForDraw() {
222 ui::DrawWaiterForTest::WaitForCompositingStarted(GetCompositor()); 222 ui::DrawWaiterForTest::WaitForCompositingStarted(GetCompositor());
223 } 223 }
224 224
225 void WaitForSwap() {
226 ui::DrawWaiterForTest::WaitForCompositingEnded(GetCompositor());
227 }
228
225 void WaitForCommit() { 229 void WaitForCommit() {
226 ui::DrawWaiterForTest::WaitForCommit(GetCompositor()); 230 ui::DrawWaiterForTest::WaitForCommit(GetCompositor());
227 } 231 }
228 232
229 // Invalidates the entire contents of the layer. 233 // Invalidates the entire contents of the layer.
230 void SchedulePaintForLayer(Layer* layer) { 234 void SchedulePaintForLayer(Layer* layer) {
231 layer->SchedulePaint( 235 layer->SchedulePaint(
232 gfx::Rect(0, 0, layer->bounds().width(), layer->bounds().height())); 236 gfx::Rect(0, 0, layer->bounds().width(), layer->bounds().height()));
233 } 237 }
234 238
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 361
358 DISALLOW_COPY_AND_ASSIGN(NullLayerDelegate); 362 DISALLOW_COPY_AND_ASSIGN(NullLayerDelegate);
359 }; 363 };
360 364
361 // Remembers if it has been notified. 365 // Remembers if it has been notified.
362 class TestCompositorObserver : public CompositorObserver { 366 class TestCompositorObserver : public CompositorObserver {
363 public: 367 public:
364 TestCompositorObserver() = default; 368 TestCompositorObserver() = default;
365 369
366 bool committed() const { return committed_; } 370 bool committed() const { return committed_; }
367 bool started() const { return started_; } 371 bool notified() const { return started_ && ended_; }
368 372
369 void Reset() { 373 void Reset() {
370 committed_ = false; 374 committed_ = false;
371 started_ = false; 375 started_ = false;
376 ended_ = false;
372 } 377 }
373 378
374 private: 379 private:
375 void OnCompositingDidCommit(Compositor* compositor) override { 380 void OnCompositingDidCommit(Compositor* compositor) override {
376 committed_ = true; 381 committed_ = true;
377 } 382 }
378 383
379 void OnCompositingStarted(Compositor* compositor, 384 void OnCompositingStarted(Compositor* compositor,
380 base::TimeTicks start_time) override { 385 base::TimeTicks start_time) override {
381 started_ = true; 386 started_ = true;
382 } 387 }
383 388
389 void OnCompositingEnded(Compositor* compositor) override { ended_ = true; }
390
384 void OnCompositingLockStateChanged(Compositor* compositor) override {} 391 void OnCompositingLockStateChanged(Compositor* compositor) override {}
385 392
386 void OnCompositingShuttingDown(Compositor* compositor) override {} 393 void OnCompositingShuttingDown(Compositor* compositor) override {}
387 394
388 bool committed_ = false; 395 bool committed_ = false;
389 bool started_ = false; 396 bool started_ = false;
397 bool ended_ = false;
390 398
391 DISALLOW_COPY_AND_ASSIGN(TestCompositorObserver); 399 DISALLOW_COPY_AND_ASSIGN(TestCompositorObserver);
392 }; 400 };
393 401
394 class TestCompositorAnimationObserver : public CompositorAnimationObserver { 402 class TestCompositorAnimationObserver : public CompositorAnimationObserver {
395 public: 403 public:
396 explicit TestCompositorAnimationObserver(ui::Compositor* compositor) 404 explicit TestCompositorAnimationObserver(ui::Compositor* compositor)
397 : compositor_(compositor), 405 : compositor_(compositor),
398 animation_step_count_(0), 406 animation_step_count_(0),
399 shutdown_(false) { 407 shutdown_(false) {
(...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 CreateColorLayer(SK_ColorRED, gfx::Rect(20, 20, 400, 400))); 1310 CreateColorLayer(SK_ColorRED, gfx::Rect(20, 20, 400, 400)));
1303 std::unique_ptr<Layer> l2( 1311 std::unique_ptr<Layer> l2(
1304 CreateColorLayer(SK_ColorBLUE, gfx::Rect(10, 10, 350, 350))); 1312 CreateColorLayer(SK_ColorBLUE, gfx::Rect(10, 10, 350, 350)));
1305 l1->Add(l2.get()); 1313 l1->Add(l2.get());
1306 TestCompositorObserver observer; 1314 TestCompositorObserver observer;
1307 GetCompositor()->AddObserver(&observer); 1315 GetCompositor()->AddObserver(&observer);
1308 1316
1309 // Explicitly called DrawTree should cause the observers to be notified. 1317 // Explicitly called DrawTree should cause the observers to be notified.
1310 // NOTE: this call to DrawTree sets l1 to be the compositor's root layer. 1318 // NOTE: this call to DrawTree sets l1 to be the compositor's root layer.
1311 DrawTree(l1.get()); 1319 DrawTree(l1.get());
1312 EXPECT_TRUE(observer.started()); 1320 EXPECT_TRUE(observer.notified());
1313 1321
1314 // ScheduleDraw without any visible change should cause a commit. 1322 // ScheduleDraw without any visible change should cause a commit.
1315 observer.Reset(); 1323 observer.Reset();
1316 l1->ScheduleDraw(); 1324 l1->ScheduleDraw();
1317 WaitForCommit(); 1325 WaitForCommit();
1318 EXPECT_TRUE(observer.committed()); 1326 EXPECT_TRUE(observer.committed());
1319 1327
1320 // Moving, but not resizing, a layer should alert the observers. 1328 // Moving, but not resizing, a layer should alert the observers.
1321 observer.Reset(); 1329 observer.Reset();
1322 l2->SetBounds(gfx::Rect(0, 0, 350, 350)); 1330 l2->SetBounds(gfx::Rect(0, 0, 350, 350));
1323 WaitForDraw(); 1331 WaitForSwap();
1324 EXPECT_TRUE(observer.started()); 1332 EXPECT_TRUE(observer.notified());
1325 1333
1326 // So should resizing a layer. 1334 // So should resizing a layer.
1327 observer.Reset(); 1335 observer.Reset();
1328 l2->SetBounds(gfx::Rect(0, 0, 400, 400)); 1336 l2->SetBounds(gfx::Rect(0, 0, 400, 400));
1329 WaitForDraw(); 1337 WaitForSwap();
1330 EXPECT_TRUE(observer.started()); 1338 EXPECT_TRUE(observer.notified());
1331 1339
1332 // Opacity changes should alert the observers. 1340 // Opacity changes should alert the observers.
1333 observer.Reset(); 1341 observer.Reset();
1334 l2->SetOpacity(0.5f); 1342 l2->SetOpacity(0.5f);
1335 WaitForDraw(); 1343 WaitForSwap();
1336 EXPECT_TRUE(observer.started()); 1344 EXPECT_TRUE(observer.notified());
1337 1345
1338 // So should setting the opacity back. 1346 // So should setting the opacity back.
1339 observer.Reset(); 1347 observer.Reset();
1340 l2->SetOpacity(1.0f); 1348 l2->SetOpacity(1.0f);
1341 WaitForDraw(); 1349 WaitForSwap();
1342 EXPECT_TRUE(observer.started()); 1350 EXPECT_TRUE(observer.notified());
1343 1351
1344 // Setting the transform of a layer should alert the observers. 1352 // Setting the transform of a layer should alert the observers.
1345 observer.Reset(); 1353 observer.Reset();
1346 gfx::Transform transform; 1354 gfx::Transform transform;
1347 transform.Translate(200.0, 200.0); 1355 transform.Translate(200.0, 200.0);
1348 transform.Rotate(90.0); 1356 transform.Rotate(90.0);
1349 transform.Translate(-200.0, -200.0); 1357 transform.Translate(-200.0, -200.0);
1350 l2->SetTransform(transform); 1358 l2->SetTransform(transform);
1351 WaitForDraw(); 1359 WaitForSwap();
1352 EXPECT_TRUE(observer.started()); 1360 EXPECT_TRUE(observer.notified());
1353 1361
1354 GetCompositor()->RemoveObserver(&observer); 1362 GetCompositor()->RemoveObserver(&observer);
1355 1363
1356 // Opacity changes should no longer alert the removed observer. 1364 // Opacity changes should no longer alert the removed observer.
1357 observer.Reset(); 1365 observer.Reset();
1358 l2->SetOpacity(0.5f); 1366 l2->SetOpacity(0.5f);
1359 WaitForDraw(); 1367 WaitForSwap();
1360 1368
1361 EXPECT_FALSE(observer.started()); 1369 EXPECT_FALSE(observer.notified());
1362 } 1370 }
1363 1371
1364 // Checks that modifying the hierarchy correctly affects final composite. 1372 // Checks that modifying the hierarchy correctly affects final composite.
1365 TEST_F(LayerWithRealCompositorTest, ModifyHierarchy) { 1373 TEST_F(LayerWithRealCompositorTest, ModifyHierarchy) {
1366 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(50, 50)); 1374 GetCompositor()->SetScaleAndSize(1.0f, gfx::Size(50, 50));
1367 1375
1368 // l0 1376 // l0
1369 // +-l11 1377 // +-l11
1370 // | +-l21 1378 // | +-l21
1371 // +-l12 1379 // +-l12
(...skipping 858 matching lines...) Expand 10 before | Expand all | Expand 10 after
2230 layer.set_name("foo"); 2238 layer.set_name("foo");
2231 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> debug_info = 2239 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> debug_info =
2232 layer.TakeDebugInfo(nullptr); 2240 layer.TakeDebugInfo(nullptr);
2233 std::string trace_format("bar,"); 2241 std::string trace_format("bar,");
2234 debug_info->AppendAsTraceFormat(&trace_format); 2242 debug_info->AppendAsTraceFormat(&trace_format);
2235 std::string expected("bar,{\"layer_name\":\"foo\"}"); 2243 std::string expected("bar,{\"layer_name\":\"foo\"}");
2236 EXPECT_EQ(expected, trace_format); 2244 EXPECT_EQ(expected, trace_format);
2237 } 2245 }
2238 2246
2239 } // namespace ui 2247 } // namespace ui
OLDNEW
« no previous file with comments | « ui/compositor/compositor_unittest.cc ('k') | ui/compositor/test/draw_waiter_for_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698