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

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

Issue 1887243002: cc: Remove retro frames from scheduler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
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"
11 #include "cc/test/begin_frame_args_test.h" 11 #include "cc/test/begin_frame_args_test.h"
12 #include "cc/test/begin_frame_source_test.h" 12 #include "cc/test/begin_frame_source_test.h"
13 #include "cc/test/scheduler_test_common.h" 13 #include "cc/test/scheduler_test_common.h"
14 #include "testing/gmock/include/gmock/gmock.h" 14 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 using testing::Mock; 17 using testing::Mock;
18 using testing::StrictMock; 18 using testing::StrictMock;
19 19
20 namespace cc { 20 namespace cc {
21 namespace { 21 namespace {
22 22
23 // BeginFrameObserverBase testing ---------------------------------------
24 class MockMinimalBeginFrameObserverBase : public BeginFrameObserverBase {
25 public:
26 MOCK_METHOD1(OnBeginFrameDerivedImpl, bool(const BeginFrameArgs&));
27 MOCK_METHOD1(OnBeginFrameSourcePausedChanged, void(bool));
28 int64_t dropped_begin_frame_args() const { return dropped_begin_frame_args_; }
29 };
30
31 TEST(BeginFrameObserverBaseTest, OnBeginFrameImplementation) {
32 using ::testing::Return;
33 MockMinimalBeginFrameObserverBase obs;
34 ::testing::InSequence ordered; // These calls should be ordered
35
36 // Initial conditions
37 EXPECT_EQ(BeginFrameArgs(), obs.LastUsedBeginFrameArgs());
38 EXPECT_EQ(0, obs.dropped_begin_frame_args());
39
40 #ifndef NDEBUG
41 EXPECT_DEATH({ obs.OnBeginFrame(BeginFrameArgs()); }, "");
42 #endif
43
44 BeginFrameArgs args1 =
45 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 100, 200, 300);
46 EXPECT_CALL(obs, OnBeginFrameDerivedImpl(args1)).WillOnce(Return(true));
47 obs.OnBeginFrame(args1);
48 EXPECT_EQ(args1, obs.LastUsedBeginFrameArgs());
49 EXPECT_EQ(0, obs.dropped_begin_frame_args());
50
51 #ifndef NDEBUG
52 EXPECT_DEATH({
53 obs.OnBeginFrame(CreateBeginFrameArgsForTesting(
54 BEGINFRAME_FROM_HERE, 50, 200, 300));
55 },
56 "");
57 #endif
58
59 // Returning false shouldn't update the LastUsedBeginFrameArgs value.
60 BeginFrameArgs args2 =
61 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 200, 300, 400);
62 EXPECT_CALL(obs, OnBeginFrameDerivedImpl(args2)).WillOnce(Return(false));
63 obs.OnBeginFrame(args2);
64 EXPECT_EQ(args1, obs.LastUsedBeginFrameArgs());
65 EXPECT_EQ(1, obs.dropped_begin_frame_args());
66
67 BeginFrameArgs args3 =
68 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 150, 300, 400);
69 EXPECT_CALL(obs, OnBeginFrameDerivedImpl(args3)).WillOnce(Return(true));
70 obs.OnBeginFrame(args3);
71 EXPECT_EQ(args3, obs.LastUsedBeginFrameArgs());
72 EXPECT_EQ(1, obs.dropped_begin_frame_args());
73 }
74
75 // BeginFrameSource testing ---------------------------------------------- 23 // BeginFrameSource testing ----------------------------------------------
76 TEST(BeginFrameSourceBaseTest, ObserverManipulation) { 24 TEST(BeginFrameSourceBaseTest, ObserverManipulation) {
77 MockBeginFrameObserver obs; 25 MockBeginFrameObserver obs;
78 MockBeginFrameObserver otherObs; 26 MockBeginFrameObserver otherObs;
79 FakeBeginFrameSource source; 27 FakeBeginFrameSource source;
80 28
81 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); 29 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false);
82 source.AddObserver(&obs); 30 source.AddObserver(&obs);
83 EXPECT_TRUE(source.has_observers()); 31 EXPECT_TRUE(source.has_observers());
84 32
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 114
167 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false); 115 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs2, false);
168 source.SetBeginFrameSourcePaused(false); 116 source.SetBeginFrameSourcePaused(false);
169 117
170 EXPECT_BEGIN_FRAME_USED(obs2, 300, 400, 100); 118 EXPECT_BEGIN_FRAME_USED(obs2, 300, 400, 100);
171 SEND_BEGIN_FRAME_USED(source, 300, 400, 100); 119 SEND_BEGIN_FRAME_USED(source, 300, 400, 100);
172 120
173 source.RemoveObserver(&obs2); 121 source.RemoveObserver(&obs2);
174 } 122 }
175 123
176 class LoopingBeginFrameObserver : public BeginFrameObserverBase { 124 class LoopingBeginFrameObserver : public BeginFrameObserver {
177 public: 125 public:
178 BeginFrameSource* source_; 126 BeginFrameSource* source_;
179 127
180 void AsValueInto(base::trace_event::TracedValue* dict) const override { 128 void AsValueInto(base::trace_event::TracedValue* dict) const override {
181 dict->SetString("type", "LoopingBeginFrameObserver"); 129 dict->SetString("type", "LoopingBeginFrameObserver");
182 dict->BeginDictionary("source"); 130 dict->BeginDictionary("source");
183 source_->AsValueInto(dict); 131 source_->AsValueInto(dict);
184 dict->EndDictionary(); 132 dict->EndDictionary();
185 } 133 }
186 134
187 protected: 135 protected:
188 // BeginFrameObserverBase 136 // BeginFrameObserver
189 bool OnBeginFrameDerivedImpl(const BeginFrameArgs& args) override { 137 const BeginFrameArgs& LastUsedBeginFrameArgs() const override {
190 return true; 138 return dummy_begin_frame_args_;
191 } 139 }
140 void OnBeginFrame(const BeginFrameArgs& args) override {}
141 void OnBeginFrameSourcePausedChanged(bool paused) override {}
192 142
193 void OnBeginFrameSourcePausedChanged(bool paused) override {} 143 private:
144 BeginFrameArgs dummy_begin_frame_args_;
194 }; 145 };
195 146
196 TEST(BeginFrameSourceBaseTest, DetectAsValueIntoLoop) { 147 TEST(BeginFrameSourceBaseTest, DetectAsValueIntoLoop) {
197 LoopingBeginFrameObserver obs; 148 LoopingBeginFrameObserver obs;
198 FakeBeginFrameSource source; 149 FakeBeginFrameSource source;
199 150
200 obs.source_ = &source; 151 obs.source_ = &source;
201 source.AddObserver(&obs); 152 source.AddObserver(&obs);
202 153
203 std::unique_ptr<base::trace_event::TracedValue> state( 154 std::unique_ptr<base::trace_event::TracedValue> state(
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 202
252 TEST_F(BackToBackBeginFrameSourceTest, AddObserverSendsBeginFrame) { 203 TEST_F(BackToBackBeginFrameSourceTest, AddObserverSendsBeginFrame) {
253 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 204 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
254 source_->AddObserver(obs_.get()); 205 source_->AddObserver(obs_.get());
255 EXPECT_TRUE(task_runner_->HasPendingTasks()); 206 EXPECT_TRUE(task_runner_->HasPendingTasks());
256 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 207 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
257 task_runner_->RunPendingTasks(); 208 task_runner_->RunPendingTasks();
258 209
259 EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval); 210 EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
260 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 211 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
261 source_->DidFinishFrame(0); 212 source_->DidFinishFrame(obs_.get());
262 task_runner_->RunPendingTasks(); 213 task_runner_->RunPendingTasks();
263 } 214 }
264 215
265 TEST_F(BackToBackBeginFrameSourceTest, 216 TEST_F(BackToBackBeginFrameSourceTest,
266 DidFinishFrameThenRemoveObserverProducesNoFrame) { 217 DidFinishFrameThenRemoveObserverProducesNoFrame) {
267 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 218 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
268 source_->AddObserver(obs_.get()); 219 source_->AddObserver(obs_.get());
269 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 220 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
270 task_runner_->RunPendingTasks(); 221 task_runner_->RunPendingTasks();
271 222
272 source_->RemoveObserver(obs_.get()); 223 source_->RemoveObserver(obs_.get());
273 source_->DidFinishFrame(0); 224 source_->DidFinishFrame(obs_.get());
274 225
275 EXPECT_FALSE(task_runner_->HasPendingTasks()); 226 EXPECT_FALSE(task_runner_->HasPendingTasks());
276 } 227 }
277 228
278 TEST_F(BackToBackBeginFrameSourceTest, 229 TEST_F(BackToBackBeginFrameSourceTest,
279 RemoveObserverThenDidFinishFrameProducesNoFrame) { 230 RemoveObserverThenDidFinishFrameProducesNoFrame) {
280 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 231 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
281 source_->AddObserver(obs_.get()); 232 source_->AddObserver(obs_.get());
282 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 233 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
283 task_runner_->RunPendingTasks(); 234 task_runner_->RunPendingTasks();
284 235
285 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 236 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
286 source_->DidFinishFrame(0); 237 source_->DidFinishFrame(obs_.get());
287 source_->RemoveObserver(obs_.get()); 238 source_->RemoveObserver(obs_.get());
288 239
289 EXPECT_TRUE(task_runner_->HasPendingTasks()); 240 EXPECT_TRUE(task_runner_->HasPendingTasks());
290 task_runner_->RunPendingTasks(); 241 task_runner_->RunPendingTasks();
291 } 242 }
292 243
293 TEST_F(BackToBackBeginFrameSourceTest, 244 TEST_F(BackToBackBeginFrameSourceTest,
294 TogglingObserverThenDidFinishFrameProducesCorrectFrame) { 245 TogglingObserverThenDidFinishFrameProducesCorrectFrame) {
295 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 246 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
296 source_->AddObserver(obs_.get()); 247 source_->AddObserver(obs_.get());
297 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 248 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
298 task_runner_->RunPendingTasks(); 249 task_runner_->RunPendingTasks();
299 250
300 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 251 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
301 source_->RemoveObserver(obs_.get()); 252 source_->RemoveObserver(obs_.get());
302 253
303 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 254 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
304 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 255 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
305 source_->AddObserver(obs_.get()); 256 source_->AddObserver(obs_.get());
306 257
307 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 258 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
308 source_->DidFinishFrame(0); 259 source_->DidFinishFrame(obs_.get());
309 260
310 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 261 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
311 EXPECT_BEGIN_FRAME_USED(*obs_, 1130, 1130 + kDeadline, kInterval); 262 EXPECT_BEGIN_FRAME_USED(*obs_, 1130, 1130 + kDeadline, kInterval);
312 EXPECT_TRUE(task_runner_->HasPendingTasks()); 263 EXPECT_TRUE(task_runner_->HasPendingTasks());
313 task_runner_->RunPendingTasks(); 264 task_runner_->RunPendingTasks();
314 } 265 }
315 266
316 TEST_F(BackToBackBeginFrameSourceTest, 267 TEST_F(BackToBackBeginFrameSourceTest,
317 DidFinishFrameThenTogglingObserverProducesCorrectFrame) { 268 DidFinishFrameThenTogglingObserverProducesCorrectFrame) {
318 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 269 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
319 source_->AddObserver(obs_.get()); 270 source_->AddObserver(obs_.get());
320 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 271 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
321 task_runner_->RunPendingTasks(); 272 task_runner_->RunPendingTasks();
322 273
323 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 274 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
324 source_->DidFinishFrame(0); 275 source_->DidFinishFrame(obs_.get());
325 276
326 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 277 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
327 source_->RemoveObserver(obs_.get()); 278 source_->RemoveObserver(obs_.get());
328 279
329 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 280 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
330 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 281 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
331 source_->AddObserver(obs_.get()); 282 source_->AddObserver(obs_.get());
332 283
333 now_src_->Advance(base::TimeDelta::FromMicroseconds(10)); 284 now_src_->Advance(base::TimeDelta::FromMicroseconds(10));
334 EXPECT_BEGIN_FRAME_USED(*obs_, 1130, 1130 + kDeadline, kInterval); 285 EXPECT_BEGIN_FRAME_USED(*obs_, 1130, 1130 + kDeadline, kInterval);
335 EXPECT_TRUE(task_runner_->HasPendingTasks()); 286 EXPECT_TRUE(task_runner_->HasPendingTasks());
336 task_runner_->RunPendingTasks(); 287 task_runner_->RunPendingTasks();
337 } 288 }
338 289
339 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameNoObserver) { 290 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameNoObserver) {
340 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 291 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
341 source_->AddObserver(obs_.get()); 292 source_->AddObserver(obs_.get());
342 source_->RemoveObserver(obs_.get()); 293 source_->RemoveObserver(obs_.get());
343 source_->DidFinishFrame(0); 294 source_->DidFinishFrame(obs_.get());
344 EXPECT_FALSE(task_runner_->RunPendingTasks()); 295 EXPECT_FALSE(task_runner_->RunPendingTasks());
345 } 296 }
346 297
347 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameRemainingFrames) {
348 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
349 source_->AddObserver(obs_.get());
350 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
351 task_runner_->RunPendingTasks();
352
353 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
354
355 source_->DidFinishFrame(3);
356 EXPECT_FALSE(task_runner_->HasPendingTasks());
357 source_->DidFinishFrame(2);
358 EXPECT_FALSE(task_runner_->HasPendingTasks());
359 source_->DidFinishFrame(1);
360 EXPECT_FALSE(task_runner_->HasPendingTasks());
361
362 EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
363 source_->DidFinishFrame(0);
364 EXPECT_EQ(base::TimeDelta(), task_runner_->DelayToNextTaskTime());
365 task_runner_->RunPendingTasks();
366 }
367
368 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameMultipleCallsIdempotent) { 298 TEST_F(BackToBackBeginFrameSourceTest, DidFinishFrameMultipleCallsIdempotent) {
369 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 299 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
370 source_->AddObserver(obs_.get()); 300 source_->AddObserver(obs_.get());
371 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 301 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
372 task_runner_->RunPendingTasks(); 302 task_runner_->RunPendingTasks();
373 303
374 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 304 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
375 source_->DidFinishFrame(0); 305 source_->DidFinishFrame(obs_.get());
376 source_->DidFinishFrame(0); 306 source_->DidFinishFrame(obs_.get());
377 source_->DidFinishFrame(0); 307 source_->DidFinishFrame(obs_.get());
378 EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval); 308 EXPECT_BEGIN_FRAME_USED(*obs_, 1100, 1100 + kDeadline, kInterval);
379 task_runner_->RunPendingTasks(); 309 task_runner_->RunPendingTasks();
380 310
381 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 311 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
382 source_->DidFinishFrame(0); 312 source_->DidFinishFrame(obs_.get());
383 source_->DidFinishFrame(0); 313 source_->DidFinishFrame(obs_.get());
384 source_->DidFinishFrame(0); 314 source_->DidFinishFrame(obs_.get());
385 EXPECT_BEGIN_FRAME_USED(*obs_, 1200, 1200 + kDeadline, kInterval); 315 EXPECT_BEGIN_FRAME_USED(*obs_, 1200, 1200 + kDeadline, kInterval);
386 task_runner_->RunPendingTasks(); 316 task_runner_->RunPendingTasks();
387 } 317 }
388 318
389 TEST_F(BackToBackBeginFrameSourceTest, DelayInPostedTaskProducesCorrectFrame) { 319 TEST_F(BackToBackBeginFrameSourceTest, DelayInPostedTaskProducesCorrectFrame) {
390 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false); 320 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(*obs_, false);
391 source_->AddObserver(obs_.get()); 321 source_->AddObserver(obs_.get());
392 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval); 322 EXPECT_BEGIN_FRAME_USED(*obs_, 1000, 1000 + kDeadline, kInterval);
393 task_runner_->RunPendingTasks(); 323 task_runner_->RunPendingTasks();
394 324
395 now_src_->Advance(base::TimeDelta::FromMicroseconds(100)); 325 now_src_->Advance(base::TimeDelta::FromMicroseconds(100));
396 source_->DidFinishFrame(0); 326 source_->DidFinishFrame(obs_.get());
397 now_src_->Advance(base::TimeDelta::FromMicroseconds(50)); 327 now_src_->Advance(base::TimeDelta::FromMicroseconds(50));
398 EXPECT_BEGIN_FRAME_USED(*obs_, 1150, 1150 + kDeadline, kInterval); 328 EXPECT_BEGIN_FRAME_USED(*obs_, 1150, 1150 + kDeadline, kInterval);
399 329
400 EXPECT_TRUE(task_runner_->HasPendingTasks()); 330 EXPECT_TRUE(task_runner_->HasPendingTasks());
401 task_runner_->RunPendingTasks(); 331 task_runner_->RunPendingTasks();
402 } 332 }
403 333
404 // SyntheticBeginFrameSource testing ------------------------------------------ 334 // SyntheticBeginFrameSource testing ------------------------------------------
405 class SyntheticBeginFrameSourceTest : public ::testing::Test { 335 class SyntheticBeginFrameSourceTest : public ::testing::Test {
406 public: 336 public:
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 base::TimeDelta::FromInternalValue(10000)); 486 base::TimeDelta::FromInternalValue(10000));
557 now_src_->Advance(base::TimeDelta::FromInternalValue(5000)); 487 now_src_->Advance(base::TimeDelta::FromInternalValue(5000));
558 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false); 488 EXPECT_BEGIN_FRAME_SOURCE_PAUSED(obs, false);
559 EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000); 489 EXPECT_BEGIN_FRAME_USED_MISSED(obs, 10000, 20000, 10000);
560 source_->AddObserver(&obs); 490 source_->AddObserver(&obs);
561 source_->RemoveObserver(&obs); 491 source_->RemoveObserver(&obs);
562 } 492 }
563 493
564 } // namespace 494 } // namespace
565 } // namespace cc 495 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698