OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |