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

Side by Side Diff: Source/core/animation/Animation.cpp

Issue 152853003: Web Animations API: Bindings for TimedItem.specified with readonly attributes (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix timed-item-specified-getters.html (mashed in rebase) Created 6 years, 10 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 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 333
334 if (m_activeInAnimationStack) { 334 if (m_activeInAnimationStack) {
335 const_cast<Animation*>(this)->clearEffects(); 335 const_cast<Animation*>(this)->clearEffects();
336 return true; 336 return true;
337 } 337 }
338 return false; 338 return false;
339 } 339 }
340 340
341 double Animation::calculateTimeToEffectChange(double localTime, double timeToNex tIteration) const 341 double Animation::calculateTimeToEffectChange(double localTime, double timeToNex tIteration) const
342 { 342 {
343 const double activeStartTime = startTime() + specified().startDelay; 343 const double activeStartTime = startTime() + specifiedTiming().startDelay;
344 switch (phase()) { 344 switch (phase()) {
345 case PhaseBefore: 345 case PhaseBefore:
346 return activeStartTime - localTime; 346 return activeStartTime - localTime;
347 case PhaseActive: 347 case PhaseActive:
348 if (hasActiveAnimationsOnCompositor()) { 348 if (hasActiveAnimationsOnCompositor()) {
349 // Need service to apply fill / fire events. 349 // Need service to apply fill / fire events.
350 const double activeEndTime = activeStartTime + activeDuration(); 350 const double activeEndTime = activeStartTime + activeDuration();
351 return std::min(activeEndTime - localTime, timeToNextIteration); 351 return std::min(activeEndTime - localTime, timeToNextIteration);
352 } 352 }
353 return 0; 353 return 0;
354 case PhaseAfter: 354 case PhaseAfter:
355 // If this Animation is still in effect then it will need to update 355 // If this Animation is still in effect then it will need to update
356 // when its parent goes out of effect. We have no way of knowing when 356 // when its parent goes out of effect. We have no way of knowing when
357 // that will be, however, so the parent will need to supply it. 357 // that will be, however, so the parent will need to supply it.
358 return std::numeric_limits<double>::infinity(); 358 return std::numeric_limits<double>::infinity();
359 case PhaseNone: 359 case PhaseNone:
360 ASSERT(player() && !player()->timeline().hasStarted()); 360 ASSERT(player() && !player()->timeline().hasStarted());
361 return std::numeric_limits<double>::infinity(); 361 return std::numeric_limits<double>::infinity();
362 default: 362 default:
363 ASSERT_NOT_REACHED(); 363 ASSERT_NOT_REACHED();
364 return 0; 364 return 0;
365 } 365 }
366 } 366 }
367 367
368 bool Animation::isCandidateForAnimationOnCompositor() const 368 bool Animation::isCandidateForAnimationOnCompositor() const
369 { 369 {
370 if (!effect() || !m_target) 370 if (!effect() || !m_target)
371 return false; 371 return false;
372 return CompositorAnimations::instance()->isCandidateForAnimationOnCompositor (specified(), *effect()); 372 return CompositorAnimations::instance()->isCandidateForAnimationOnCompositor (specifiedTiming(), *effect());
373 } 373 }
374 374
375 bool Animation::maybeStartAnimationOnCompositor() 375 bool Animation::maybeStartAnimationOnCompositor()
376 { 376 {
377 ASSERT(!hasActiveAnimationsOnCompositor()); 377 ASSERT(!hasActiveAnimationsOnCompositor());
378 if (!isCandidateForAnimationOnCompositor()) 378 if (!isCandidateForAnimationOnCompositor())
379 return false; 379 return false;
380 if (!CompositorAnimations::instance()->canStartAnimationOnCompositor(*m_targ et.get())) 380 if (!CompositorAnimations::instance()->canStartAnimationOnCompositor(*m_targ et.get()))
381 return false; 381 return false;
382 if (!CompositorAnimations::instance()->startAnimationOnCompositor(*m_target. get(), specified(), *effect(), m_compositorAnimationIds)) 382 if (!CompositorAnimations::instance()->startAnimationOnCompositor(*m_target. get(), specifiedTiming(), *effect(), m_compositorAnimationIds))
383 return false; 383 return false;
384 ASSERT(!m_compositorAnimationIds.isEmpty()); 384 ASSERT(!m_compositorAnimationIds.isEmpty());
385 return true; 385 return true;
386 } 386 }
387 387
388 bool Animation::hasActiveAnimationsOnCompositor() const 388 bool Animation::hasActiveAnimationsOnCompositor() const
389 { 389 {
390 return !m_compositorAnimationIds.isEmpty(); 390 return !m_compositorAnimationIds.isEmpty();
391 } 391 }
392 392
(...skipping 21 matching lines...) Expand all
414 void Animation::pauseAnimationForTestingOnCompositor(double pauseTime) 414 void Animation::pauseAnimationForTestingOnCompositor(double pauseTime)
415 { 415 {
416 ASSERT(hasActiveAnimationsOnCompositor()); 416 ASSERT(hasActiveAnimationsOnCompositor());
417 if (!m_target || !m_target->renderer()) 417 if (!m_target || !m_target->renderer())
418 return; 418 return;
419 for (size_t i = 0; i < m_compositorAnimationIds.size(); ++i) 419 for (size_t i = 0; i < m_compositorAnimationIds.size(); ++i)
420 CompositorAnimations::instance()->pauseAnimationForTestingOnCompositor(* m_target.get(), m_compositorAnimationIds[i], pauseTime); 420 CompositorAnimations::instance()->pauseAnimationForTestingOnCompositor(* m_target.get(), m_compositorAnimationIds[i], pauseTime);
421 } 421 }
422 422
423 } // namespace WebCore 423 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/webexposed/web-animations-api-expected.txt ('k') | Source/core/animation/AnimationTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698