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

Side by Side Diff: cc/trees/layer_tree_host_unittest_proxy.cc

Issue 2778223005: Plumb activation time to main (Closed)
Patch Set: update test; remove test-only method in proxy_main 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 | « cc/test/begin_frame_args_test.cc ('k') | cc/trees/proxy_impl.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/compiler_specific.h" 5 #include "base/compiler_specific.h"
6 #include "base/macros.h" 6 #include "base/macros.h"
7 #include "cc/test/fake_content_layer_client.h" 7 #include "cc/test/fake_content_layer_client.h"
8 #include "cc/test/fake_picture_layer.h" 8 #include "cc/test/fake_picture_layer.h"
9 #include "cc/test/layer_tree_test.h" 9 #include "cc/test/layer_tree_test.h"
10 #include "cc/trees/proxy_impl.h" 10 #include "cc/trees/proxy_impl.h"
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 311
312 private: 312 private:
313 base::Lock activate_blocked_lock_; 313 base::Lock activate_blocked_lock_;
314 bool activate_blocked_ = false; 314 bool activate_blocked_ = false;
315 315
316 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestCommitWaitsForActivation); 316 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestCommitWaitsForActivation);
317 }; 317 };
318 318
319 MULTI_THREAD_TEST_F(LayerTreeHostProxyTestCommitWaitsForActivation); 319 MULTI_THREAD_TEST_F(LayerTreeHostProxyTestCommitWaitsForActivation);
320 320
321 // Test for a corner case of main frame before activation (MFBA) and commit
322 // waits for activation. If a commit (with wait for activation flag set)
323 // is ready before the activation for a previous commit then the activation
324 // should not signal the completion event of the second commit.
brianderson 2017/04/17 22:26:33 Looks like this comment was accidentally removed.
panicker 2017/04/17 22:53:29 Done.
325 class LayerTreeHostProxyTestCommitWaitsForActivationMFBA 321 class LayerTreeHostProxyTestCommitWaitsForActivationMFBA
326 : public LayerTreeHostProxyTest { 322 : public LayerTreeHostProxyTest {
327 protected: 323 protected:
328 LayerTreeHostProxyTestCommitWaitsForActivationMFBA() = default; 324 LayerTreeHostProxyTestCommitWaitsForActivationMFBA() = default;
329 325
330 void InitializeSettings(LayerTreeSettings* settings) override { 326 void InitializeSettings(LayerTreeSettings* settings) override {
331 settings->main_frame_before_activation_enabled = true; 327 settings->main_frame_before_activation_enabled = true;
332 LayerTreeHostProxyTest::InitializeSettings(settings); 328 LayerTreeHostProxyTest::InitializeSettings(settings);
333 } 329 }
334 330
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 409
414 private: 410 private:
415 base::Lock activate_blocked_lock_; 411 base::Lock activate_blocked_lock_;
416 bool activate_blocked_ = false; 412 bool activate_blocked_ = false;
417 413
418 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestCommitWaitsForActivationMFBA); 414 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestCommitWaitsForActivationMFBA);
419 }; 415 };
420 416
421 MULTI_THREAD_TEST_F(LayerTreeHostProxyTestCommitWaitsForActivationMFBA); 417 MULTI_THREAD_TEST_F(LayerTreeHostProxyTestCommitWaitsForActivationMFBA);
422 418
419 // Test for activation time passed in BeginFrameArgs.
420 class LayerTreeHostProxyTestActivationTime : public LayerTreeHostProxyTest {
421 protected:
422 LayerTreeHostProxyTestActivationTime() = default;
423
424 void BeginTest() override { PostSetNeedsCommitToMainThread(); }
425
426 void InitializeSettings(LayerTreeSettings* settings) override {
427 settings->main_frame_before_activation_enabled = true;
428 LayerTreeHostProxyTest::InitializeSettings(settings);
429 }
430
431 void DidSendBeginMainFrameOnThread(LayerTreeHostImpl* impl) override {
432 if (activate_blocked_) {
433 impl->BlockNotifyReadyToActivateForTesting(false);
434 {
435 base::AutoLock hold(activate_blocked_lock_);
436 activate_blocked_ = false;
437 }
438 }
439 }
440
441 void BeginMainFrame(const BeginFrameArgs& args) override {
442 {
443 base::AutoLock hold(activate_blocked_lock_);
444 EXPECT_FALSE(activate_blocked_);
brianderson 2017/04/17 22:26:33 Only expect during case 1.
panicker 2017/04/17 22:53:29 Acknowledged.
445 }
446 switch (args.source_frame_number) {
447 case 0:
448 // Initial frame, no activation yet.
449 EXPECT_EQ(0UL, args.ready_to_activate_time.size());
450 break;
451 case 1:
452 // Frame #1, activation is delayed in BeginCommitOnThread.
453 EXPECT_EQ(0UL, args.ready_to_activate_time.size());
454 break;
455 case 2:
456 // Frame #2, activation is delayed in BeginCommitOnThread.
457 EXPECT_EQ(0UL, args.ready_to_activate_time.size());
458 break;
459 case 3:
460 // Frame #3, received activation for first two frames.
461 EXPECT_EQ(2UL, args.ready_to_activate_time.size());
462 EXPECT_EQ(1UL, args.ready_to_activate_time[0].first);
panicker 2017/04/17 21:54:50 Hmm I think I expected this to be #0 vs. #1?
brianderson 2017/04/17 22:26:33 I think case 1 should have the #0 and case 3 shoul
panicker 2017/04/17 22:53:29 Acknowledged.
463 EXPECT_EQ(2UL, args.ready_to_activate_time[1].first);
464 EndTest();
465 }
466 }
467
468 void DidActivateTreeOnThread(LayerTreeHostImpl* impl) override {
469 if (impl->sync_tree()->source_frame_number() == 2)
brianderson 2017/04/17 22:26:33 || source_frame_number == 0.
panicker 2017/04/17 22:53:29 Done.
470 PostSetNeedsCommitToMainThread(); // invoke for frame 3
471 }
472
473 void BeginCommitOnThread(LayerTreeHostImpl* impl) override {
474 // Block activation for the first two frames
475 // and invoke PostSetNeedsCommitToMainThread for frame 1, 2
476 if (impl->sync_tree()->source_frame_number() <= 0) {
brianderson 2017/04/17 22:26:33 Change the method override to CommitCompleteOnThre
panicker 2017/04/17 22:53:29 Done.
477 impl->BlockNotifyReadyToActivateForTesting(true);
478 PostSetNeedsCommitToMainThread();
479 {
480 base::AutoLock hold(activate_blocked_lock_);
481 activate_blocked_ = true;
482 }
483 }
484 }
485
486 void AfterTest() override {}
487
488 private:
489 base::Lock activate_blocked_lock_;
490 bool activate_blocked_ = false;
491
492 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostProxyTestActivationTime);
493 };
494
495 MULTI_THREAD_TEST_F(LayerTreeHostProxyTestActivationTime);
496
423 } // namespace cc 497 } // namespace cc
OLDNEW
« no previous file with comments | « cc/test/begin_frame_args_test.cc ('k') | cc/trees/proxy_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698