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

Side by Side Diff: cc/scheduler/scheduler_unittest.cc

Issue 1781663004: Allow null begin frame sources in cc::Scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scheduler_change_begin_frame_source
Patch Set: Created 4 years, 9 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/scheduler/scheduler.cc ('k') | cc/test/scheduler_test_common.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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/scheduler/scheduler.h" 5 #include "cc/scheduler/scheduler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 3151 matching lines...) Expand 10 before | Expand all | Expand 10 after
3162 3162
3163 EXPECT_SCOPED(AdvanceFrame()); 3163 EXPECT_SCOPED(AdvanceFrame());
3164 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1); 3164 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 1);
3165 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending()); 3165 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
3166 EXPECT_TRUE(scheduler_->begin_frames_expected()); 3166 EXPECT_TRUE(scheduler_->begin_frames_expected());
3167 client_->Reset(); 3167 client_->Reset();
3168 task_runner().RunPendingTasks(); // Run posted deadline. 3168 task_runner().RunPendingTasks(); // Run posted deadline.
3169 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1); 3169 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1);
3170 } 3170 }
3171 3171
3172 TEST_F(SchedulerTest, SwitchFrameSourceToNullInsideDeadline) {
3173 scheduler_settings_.use_external_begin_frame_source = true;
3174 SetUpScheduler(true);
3175
3176 scheduler_->SetNeedsRedraw();
3177 EXPECT_SINGLE_ACTION("AddObserver(this)", client_);
3178 client_->Reset();
3179
3180 EXPECT_SCOPED(AdvanceFrame());
3181 EXPECT_SINGLE_ACTION("WillBeginImplFrame", client_);
3182 client_->Reset();
3183
3184 // Switch to a null frame source.
3185 scheduler_->SetBeginFrameSource(nullptr);
3186 EXPECT_SINGLE_ACTION("RemoveObserver(this)", client_);
3187 client_->Reset();
3188
3189 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
3190 task_runner().RunPendingTasks(); // Run posted deadline.
3191 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1);
3192 EXPECT_FALSE(scheduler_->begin_frames_expected());
3193 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
3194 client_->Reset();
3195
3196 // AdvanceFrame helper can't be used here because there's no deadline posted.
3197 scheduler_->SetNeedsRedraw();
3198 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
3199 EXPECT_NO_ACTION(client_);
3200 client_->Reset();
3201
3202 scheduler_->SetNeedsBeginMainFrame();
3203 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
3204 EXPECT_NO_ACTION(client_);
3205 client_->Reset();
3206
3207 // Switch back to the same source, make sure frames continue to be produced.
3208 scheduler_->SetBeginFrameSource(fake_external_begin_frame_source_.get());
3209 EXPECT_SINGLE_ACTION("AddObserver(this)", client_);
3210 EXPECT_FALSE(scheduler_->BeginImplFrameDeadlinePending());
3211 client_->Reset();
3212
3213 EXPECT_SCOPED(AdvanceFrame());
3214 EXPECT_ACTION("WillBeginImplFrame", client_, 0, 2);
3215 EXPECT_ACTION("ScheduledActionSendBeginMainFrame", client_, 1, 2);
3216 EXPECT_TRUE(scheduler_->BeginImplFrameDeadlinePending());
3217 client_->Reset();
3218
3219 task_runner().RunPendingTasks();
3220 EXPECT_ACTION("ScheduledActionDrawAndSwapIfPossible", client_, 0, 1);
3221 }
3222
3172 // This test maskes sure that switching a frame source when not observing 3223 // This test maskes sure that switching a frame source when not observing
3173 // such as when not visible also works. 3224 // such as when not visible also works.
3174 TEST_F(SchedulerTest, SwitchFrameSourceWhenNotObserving) { 3225 TEST_F(SchedulerTest, SwitchFrameSourceWhenNotObserving) {
3175 scheduler_settings_.use_external_begin_frame_source = true; 3226 scheduler_settings_.use_external_begin_frame_source = true;
3176 SetUpScheduler(true); 3227 SetUpScheduler(true);
3177 3228
3178 // SetNeedsBeginMainFrame should begin the frame on the next BeginImplFrame. 3229 // SetNeedsBeginMainFrame should begin the frame on the next BeginImplFrame.
3179 scheduler_->SetNeedsBeginMainFrame(); 3230 scheduler_->SetNeedsBeginMainFrame();
3180 EXPECT_SINGLE_ACTION("AddObserver(this)", client_); 3231 EXPECT_SINGLE_ACTION("AddObserver(this)", client_);
3181 client_->Reset(); 3232 client_->Reset();
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
3799 } 3850 }
3800 3851
3801 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_AHS) { 3852 TEST_F(SchedulerTest, BeginMainFrameOnCriticalPath_AHS) {
3802 EXPECT_FALSE(BeginMainFrameOnCriticalPath( 3853 EXPECT_FALSE(BeginMainFrameOnCriticalPath(
3803 SMOOTHNESS_TAKES_PRIORITY, 3854 SMOOTHNESS_TAKES_PRIORITY,
3804 ScrollHandlerState::SCROLL_AFFECTS_SCROLL_HANDLER, kSlowDuration)); 3855 ScrollHandlerState::SCROLL_AFFECTS_SCROLL_HANDLER, kSlowDuration));
3805 } 3856 }
3806 3857
3807 } // namespace 3858 } // namespace
3808 } // namespace cc 3859 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler.cc ('k') | cc/test/scheduler_test_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698