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

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

Issue 2061273002: cc: Make BackToBackBeginFrameSource a SyntheticBeginFrameSource. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: syntheticbeginframesource: deleted Created 4 years, 6 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
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/begin_frame_source.h" 5 #include "cc/scheduler/begin_frame_source.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/test/test_simple_task_runner.h" 10 #include "base/test/test_simple_task_runner.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 166
167 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false); 167 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false);
168 source.SetBeginFrameSourcePaused(false); 168 source.SetBeginFrameSourcePaused(false);
169 169
170 EXPECT_BEGIN_FRAME_USED(obs2, 300, 400, 100); 170 EXPECT_BEGIN_FRAME_USED(obs2, 300, 400, 100);
171 SEND_BEGIN_FRAME_USED(source, 300, 400, 100); 171 SEND_BEGIN_FRAME_USED(source, 300, 400, 100);
172 172
173 source.RemoveObserver(&obs2); 173 source.RemoveObserver(&obs2);
174 } 174 }
175 175
176 // BackToBackBeginFrameSource testing ----------------------------------------- 176 class BackToBackBeginFrameSourceTest : public ::testing::Test {
177 class TestBackToBackBeginFrameSource : public BackToBackBeginFrameSource {
178 public:
179 TestBackToBackBeginFrameSource(base::SimpleTestTickClock* now_src,
180 base::SingleThreadTaskRunner* task_runner)
181 : BackToBackBeginFrameSource(task_runner), now_src_(now_src) {}
182
183 protected: 177 protected:
184 base::TimeTicks Now() override { return now_src_->NowTicks(); }
185
186 // Not owned.
187 base::SimpleTestTickClock* now_src_;
188 };
189
190 class BackToBackBeginFrameSourceTest : public ::testing::Test {
191 public:
192 static const int64_t kDeadline; 178 static const int64_t kDeadline;
193 static const int64_t kInterval; 179 static const int64_t kInterval;
194 180
195 std::unique_ptr<base::SimpleTestTickClock> now_src_;
196 scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
197 std::unique_ptr<TestBackToBackBeginFrameSource> source_;
198 std::unique_ptr<MockBeginFrameObserver> obs_;
199
200 void SetUp() override { 181 void SetUp() override {
201 now_src_.reset(new base::SimpleTestTickClock()); 182 now_src_.reset(new base::SimpleTestTickClock());
202 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); 183 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000));
203 task_runner_ = 184 task_runner_ =
204 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false)); 185 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false));
205 source_.reset( 186 std::unique_ptr<TestDelayBasedTimeSource> time_source(
206 new TestBackToBackBeginFrameSource(now_src_.get(), task_runner_.get())); 187 new TestDelayBasedTimeSource(now_src_.get(), task_runner_.get()));
207 obs_ = 188 source_.reset(new SyntheticBeginFrameSource(std::move(time_source)));
208 base::WrapUnique(new ::testing::StrictMock<MockBeginFrameObserver>()); 189 source_->SetUnthrottled(true);
190 obs_ = base::WrapUnique(new ::testing::StrictMock<MockBeginFrameObserver>);
209 } 191 }
210 192
211 void TearDown() override { obs_.reset(); } 193 void TearDown() override { obs_.reset(); }
194
195 std::unique_ptr<base::SimpleTestTickClock> now_src_;
196 scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
197 std::unique_ptr<SyntheticBeginFrameSource> source_;
198 std::unique_ptr<MockBeginFrameObserver> obs_;
212 }; 199 };
213 200
214 const int64_t BackToBackBeginFrameSourceTest::kDeadline = 201 const int64_t BackToBackBeginFrameSourceTest::kDeadline =
215 BeginFrameArgs::DefaultInterval().ToInternalValue(); 202 BeginFrameArgs::DefaultInterval().ToInternalValue();
216 203
217 const int64_t BackToBackBeginFrameSourceTest::kInterval = 204 const int64_t BackToBackBeginFrameSourceTest::kInterval =
218 BeginFrameArgs::DefaultInterval().ToInternalValue(); 205 BeginFrameArgs::DefaultInterval().ToInternalValue();
219 206
220 TEST_F(BackToBackBeginFrameSourceTest, AddObserverSendsBeginFrame) { 207 TEST_F(BackToBackBeginFrameSourceTest, AddObserverSendsBeginFrame) {
221 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 208 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
(...skipping 11 matching lines...) Expand all
233 TEST_F(BackToBackBeginFrameSourceTest, 220 TEST_F(BackToBackBeginFrameSourceTest,
234 DidFinishFrameThenRemoveObserverProducesNoFrame) { 221 DidFinishFrameThenRemoveObserverProducesNoFrame) {
235 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 222 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
236 source_->AddObserver(obs_.get()); 223 source_->AddObserver(obs_.get());
237 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 224 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
238 task_runner_->RunPendingTasks(); 225 task_runner_->RunPendingTasks();
239 226
240 source_->RemoveObserver(obs_.get()); 227 source_->RemoveObserver(obs_.get());
241 source_->DidFinishFrame(obs_.get(), 0); 228 source_->DidFinishFrame(obs_.get(), 0);
242 229
230 // Verify no BeginFrame is sent to |obs_|. There is a pending task in the
231 // task_runner_ as a BeginFrame was posted, but it gets aborted since |obs_|
232 // is removed.
233 task_runner_->RunPendingTasks();
243 EXPECT_FALSE(task_runner_->HasPendingTasks()); 234 EXPECT_FALSE(task_runner_->HasPendingTasks());
244 } 235 }
245 236
246 TEST_F(BackToBackBeginFrameSourceTest, 237 TEST_F(BackToBackBeginFrameSourceTest,
247 RemoveObserverThenDidFinishFrameProducesNoFrame) { 238 RemoveObserverThenDidFinishFrameProducesNoFrame) {
248 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 239 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
249 source_->AddObserver(obs_.get()); 240 source_->AddObserver(obs_.get());
250 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 241 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
251 task_runner_->RunPendingTasks(); 242 task_runner_->RunPendingTasks();
252 243
(...skipping 16 matching lines...) Expand all
269 source_->RemoveObserver(obs_.get()); 260 source_->RemoveObserver(obs_.get());
270 261
271 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 262 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
272 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 263 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
273 source_->AddObserver(obs_.get()); 264 source_->AddObserver(obs_.get());
274 265
275 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 266 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
276 source_->DidFinishFrame(obs_.get(), 0); 267 source_->DidFinishFrame(obs_.get(), 0);
277 268
278 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 269 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
279 EXPECT_BEGIN_FRAME_USED(*obs_, 1130, 1130 + kDeadline, kInterval); 270 // The begin frame is posted at the time when the observer was added,
271 // so it ignores changes to "now" afterward.
272 EXPECT_BEGIN_FRAME_USED(*obs_, 1110, 1110 + kDeadline, kInterval);
280 EXPECT_TRUE(task_runner_->HasPendingTasks()); 273 EXPECT_TRUE(task_runner_->HasPendingTasks());
281 task_runner_->RunPendingTasks(); 274 task_runner_->RunPendingTasks();
282 } 275 }
283 276
284 TEST_F(BackToBackBeginFrameSourceTest, 277 TEST_F(BackToBackBeginFrameSourceTest,
285 DidFinishFrameThenTogglingObserverProducesCorrectFrame) { 278 DidFinishFrameThenTogglingObserverProducesCorrectFrame) {
286 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 279 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
287 source_->AddObserver(obs_.get()); 280 source_->AddObserver(obs_.get());
288 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 281 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
289 task_runner_->RunPendingTasks(); 282 task_runner_->RunPendingTasks();
290 283
291 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 284 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
292 source_->DidFinishFrame(obs_.get(), 0); 285 source_->DidFinishFrame(obs_.get(), 0);
293 286
294 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 287 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
295 source_->RemoveObserver(obs_.get()); 288 source_->RemoveObserver(obs_.get());
296 289
297 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 290 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
298 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 291 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
299 source_->AddObserver(obs_.get()); 292 source_->AddObserver(obs_.get());
300 293
301 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 294 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
302 EXPECT_BEGIN_FRAME_USED(*obs_, 1130, 1130 + kDeadline, kInterval); 295 // Ticks at the time at which the observer was added, ignoring the
296 // last change to "now".
297 EXPECT_BEGIN_FRAME_USED(*obs_, 1120, 1120 + kDeadline, kInterval);
303 EXPECT_TRUE(task_runner_->HasPendingTasks()); 298 EXPECT_TRUE(task_runner_->HasPendingTasks());
304 task_runner_->RunPendingTasks(); 299 task_runner_->RunPendingTasks();
305 } 300 }
306 301
307 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameNoObserver) { 302 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameNoObserver) {
308 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 303 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
309 source_->AddObserver(obs_.get()); 304 source_->AddObserver(obs_.get());
310 source_->RemoveObserver(obs_.get()); 305 source_->RemoveObserver(obs_.get());
311 source_->DidFinishFrame(obs_.get(), 0); 306 source_->DidFinishFrame(obs_.get(), 0);
312 EXPECT_FALSE(task_runner_->RunPendingTasks()); 307 EXPECT_FALSE(task_runner_->RunPendingTasks());
313 } 308 }
314 309
315 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameRemainingFrames) { 310 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameRemainingFrames) {
316 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 311 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
317 source_->AddObserver(obs_.get()); 312 source_->AddObserver(obs_.get());
318 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 313 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
314 // Runs the pending begin frame.
319 task_runner_->RunPendingTasks(); 315 task_runner_->RunPendingTasks();
316 // While running the begin frame, the next frame was cancelled, this
317 // runs the next frame, sees it was cancelled, and goes to sleep.
318 task_runner_->RunPendingTasks();
319 EXPECT_FALSE(task_runner_->HasPendingTasks());
320 320
321 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 321 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
322 322
323 source_->DidFinishFrame(obs_.get(), 3); 323 source_->DidFinishFrame(obs_.get(), 3);
324 EXPECT_FALSE(task_runner_->HasPendingTasks()); 324 EXPECT_FALSE(task_runner_->HasPendingTasks());
325 source_->DidFinishFrame(obs_.get(), 2); 325 source_->DidFinishFrame(obs_.get(), 2);
326 EXPECT_FALSE(task_runner_->HasPendingTasks()); 326 EXPECT_FALSE(task_runner_->HasPendingTasks());
327 source_->DidFinishFrame(obs_.get(), 1); 327 source_->DidFinishFrame(obs_.get(), 1);
328 EXPECT_FALSE(task_runner_->HasPendingTasks()); 328 EXPECT_FALSE(task_runner_->HasPendingTasks());
329 329
(...skipping 26 matching lines...) Expand all
356 356
357 TEST_F(BackToBackBeginFrameSourceTest, DelayInPostedTaskProducesCorrectFrame) { 357 TEST_F(BackToBackBeginFrameSourceTest, DelayInPostedTaskProducesCorrectFrame) {
358 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 358 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
359 source_->AddObserver(obs_.get()); 359 source_->AddObserver(obs_.get());
360 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 360 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
361 task_runner_->RunPendingTasks(); 361 task_runner_->RunPendingTasks();
362 362
363 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 363 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
364 source_->DidFinishFrame(obs_.get(), 0); 364 source_->DidFinishFrame(obs_.get(), 0);
365 now_src_->Advance(base::TimeDelta::FromMicroseconds(50)); 365 now_src_->Advance(base::TimeDelta::FromMicroseconds(50));
366 EXPECT_BEGIN_FRAME_USED(*obs_, 1150, 1150 + kDeadline, kInterval); 366 // Ticks at the time the last frame finished, so ignores the last change to
367 // "now".
368 EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
367 369
368 EXPECT_TRUE(task_runner_->HasPendingTasks()); 370 EXPECT_TRUE(task_runner_->HasPendingTasks());
369 task_runner_->RunPendingTasks(); 371 task_runner_->RunPendingTasks();
370 } 372 }
371 373
372 TEST_F(BackToBackBeginFrameSourceTest, MultipleObserversSynchronized) { 374 TEST_F(BackToBackBeginFrameSourceTest, MultipleObserversSynchronized) {
373 StrictMock<MockBeginFrameObserver> obs1, obs2; 375 StrictMock<MockBeginFrameObserver> obs1, obs2;
374 376
375 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs1, false); 377 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs1, false);
376 source_->AddObserver(&obs1); 378 source_->AddObserver(&obs1);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 EXPECT_BEGIN_FRAME_USED(obs2, 1100, 1100 + kDeadline, kInterval); 413 EXPECT_BEGIN_FRAME_USED(obs2, 1100, 1100 + kDeadline, kInterval);
412 task_runner_->RunPendingTasks(); 414 task_runner_->RunPendingTasks();
413 415
414 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 416 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
415 source_->DidFinishFrame(&obs1, 0); 417 source_->DidFinishFrame(&obs1, 0);
416 EXPECT_BEGIN_FRAME_USED(obs1, 1200, 1200 + kDeadline, kInterval); 418 EXPECT_BEGIN_FRAME_USED(obs1, 1200, 1200 + kDeadline, kInterval);
417 task_runner_->RunPendingTasks(); 419 task_runner_->RunPendingTasks();
418 420
419 source_->DidFinishFrame(&obs1, 0); 421 source_->DidFinishFrame(&obs1, 0);
420 source_->RemoveObserver(&obs1); 422 source_->RemoveObserver(&obs1);
423 // Finishing the frame for |obs1| posts a begin frame task, which will be
424 // aborted since |obs1| is removed. Clear that from the task runner.
425 task_runner_->RunPendingTasks();
421 426
422 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 427 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
423 source_->DidFinishFrame(&obs2, 0); 428 source_->DidFinishFrame(&obs2, 0);
424 EXPECT_BEGIN_FRAME_USED(obs2, 1300, 1300 + kDeadline, kInterval); 429 EXPECT_BEGIN_FRAME_USED(obs2, 1300, 1300 + kDeadline, kInterval);
425 task_runner_->RunPendingTasks(); 430 task_runner_->RunPendingTasks();
426 431
427 source_->DidFinishFrame(&obs2, 0); 432 source_->DidFinishFrame(&obs2, 0);
428 source_->RemoveObserver(&obs2); 433 source_->RemoveObserver(&obs2);
429 } 434 }
430 435
436 TEST_F(BackToBackBeginFrameSourceTest, MultipleObserversAtOnce) {
437 StrictMock<MockBeginFrameObserver> obs1, obs2;
438
439 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs1, false);
440 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false);
441 source_->AddObserver(&obs1);
442 source_->AddObserver(&obs2);
443 EXPECT_BEGIN_FRAME_USED(obs1, 1000, 1000 + kDeadline, kInterval);
444 EXPECT_BEGIN_FRAME_USED(obs2, 1000, 1000 + kDeadline, kInterval);
445 task_runner_->RunPendingTasks();
446
447 // |obs1| finishes first.
448 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
449 source_->DidFinishFrame(&obs1, 0);
450
451 // |obs2| finishes also, before getting to the newly posted begin frame.
452 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
453 source_->DidFinishFrame(&obs2, 0);
454
455 // Because the begin frame source already ticked when |obs1| finished,
456 // we see it as the frame time for both observers.
457 EXPECT_BEGIN_FRAME_USED(obs1, 1100, 1100 + kDeadline, kInterval);
458 EXPECT_BEGIN_FRAME_USED(obs2, 1100, 1100 + kDeadline, kInterval);
459 task_runner_->RunPendingTasks();
460
461 source_->DidFinishFrame(&obs1, 0);
462 source_->RemoveObserver(&obs1);
463 source_->DidFinishFrame(&obs2, 0);
464 source_->RemoveObserver(&obs2);
465 }
466
431 // SyntheticBeginFrameSource testing ------------------------------------------ 467 // SyntheticBeginFrameSource testing ------------------------------------------
432 class SyntheticBeginFrameSourceTest : public ::testing::Test { 468 class SyntheticBeginFrameSourceTest : public ::testing::Test {
433 public: 469 public:
434 std::unique_ptr<base::SimpleTestTickClock> now_src_; 470 std::unique_ptr<base::SimpleTestTickClock> now_src_;
435 scoped_refptr<OrderedSimpleTaskRunner> task_runner_; 471 scoped_refptr<OrderedSimpleTaskRunner> task_runner_;
436 std::unique_ptr<TestSyntheticBeginFrameSource> source_; 472 std::unique_ptr<SyntheticBeginFrameSource> source_;
437 std::unique_ptr<MockBeginFrameObserver> obs_; 473 std::unique_ptr<MockBeginFrameObserver> obs_;
438 474
439 void SetUp() override { 475 void SetUp() override {
440 now_src_.reset(new base::SimpleTestTickClock()); 476 now_src_.reset(new base::SimpleTestTickClock());
441 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000)); 477 now_src_->Advance(base::TimeDelta::FromMicroseconds(1000));
442 task_runner_ = 478 task_runner_ =
443 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false)); 479 make_scoped_refptr(new OrderedSimpleTaskRunner(now_src_.get(), false));
444 source_.reset(new TestSyntheticBeginFrameSource( 480 std::unique_ptr<DelayBasedTimeSource> time_source(
445 now_src_.get(), task_runner_.get(), 481 new TestDelayBasedTimeSource(now_src_.get(), task_runner_.get()));
446 base::TimeDelta::FromMicroseconds(10000))); 482 time_source->SetTimebaseAndInterval(
447 obs_ = base::WrapUnique(new MockBeginFrameObserver()); 483 base::TimeTicks(), base::TimeDelta::FromMicroseconds(10000));
484 source_.reset(new SyntheticBeginFrameSource(std::move(time_source)));
485 obs_.reset(new MockBeginFrameObserver);
448 } 486 }
449 487
450 void TearDown() override { obs_.reset(); } 488 void TearDown() override { obs_.reset(); }
451 }; 489 };
452 490
453 TEST_F(SyntheticBeginFrameSourceTest, 491 TEST_F(SyntheticBeginFrameSourceTest,
454 AddObserverCallsOnBeginFrameWithMissedTick) { 492 AddObserverCallsOnBeginFrameWithMissedTick) {
455 now_src_->Advance(base::TimeDelta::FromMicroseconds(9010)); 493 now_src_->Advance(base::TimeDelta::FromMicroseconds(9010));
456 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 494 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
457 EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 10000, 20000, 10000); 495 EXPECT_BEGIN_FRAME_USED_MISSED(*obs_, 10000, 20000, 10000);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 base::TimeDelta::FromInternalValue(10000)); 648 base::TimeDelta::FromInternalValue(10000));
611 now_src_->Advance(base::TimeDelta::FromInternalValue(5000)); 649 now_src_->Advance(base::TimeDelta::FromInternalValue(5000));
612 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); 650 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false);
613 EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000); 651 EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000);
614 source_->AddObserver(&obs); 652 source_->AddObserver(&obs);
615 source_->RemoveObserver(&obs); 653 source_->RemoveObserver(&obs);
616 } 654 }
617 655
618 } // namespace 656 } // namespace
619 } // namespace cc 657 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698