Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple 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 | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 492 // Go through the sandwich from lowest prio to highest and generate | 492 // Go through the sandwich from lowest prio to highest and generate |
| 493 // the animated value (if any.) | 493 // the animated value (if any.) |
| 494 for (const auto& animation : sandwich) | 494 for (const auto& animation : sandwich) |
| 495 animation->updateAnimatedValue(resultElement); | 495 animation->updateAnimatedValue(resultElement); |
| 496 | 496 |
| 497 animationsToApply.append(resultElement); | 497 animationsToApply.append(resultElement); |
| 498 } | 498 } |
| 499 } | 499 } |
| 500 m_scheduledAnimations.removeAll(invalidKeys); | 500 m_scheduledAnimations.removeAll(invalidKeys); |
| 501 | 501 |
| 502 std::sort(animationsToApply.begin(), animationsToApply.end(), PriorityCompar e(elapsed)); | 502 if (animationsToApply.isEmpty()) { |
| 503 | |
| 504 unsigned animationsToApplySize = animationsToApply.size(); | |
| 505 if (!animationsToApplySize) { | |
| 506 #if ENABLE(ASSERT) | 503 #if ENABLE(ASSERT) |
| 507 m_preventScheduledAnimationsChanges = false; | 504 m_preventScheduledAnimationsChanges = false; |
| 508 #endif | 505 #endif |
| 509 return earliestFireTime; | 506 return earliestFireTime; |
| 510 } | 507 } |
| 511 | 508 |
| 512 UseCounter::count(&document(), UseCounter::SVGSMILAnimationAppliedEffect); | 509 UseCounter::count(&document(), UseCounter::SVGSMILAnimationAppliedEffect); |
| 513 | 510 |
| 511 std::sort(animationsToApply.begin(), animationsToApply.end(), PriorityCompar e(elapsed)); | |
| 512 | |
| 514 // Apply results to target elements. | 513 // Apply results to target elements. |
| 515 for (unsigned i = 0; i < animationsToApplySize; ++i) | 514 for (const auto& timedElement : animationsToApply) |
| 516 animationsToApply[i]->applyResultsToTarget(); | 515 timedElement->applyResultsToTarget(); |
| 517 | 516 |
| 518 #if ENABLE(ASSERT) | 517 #if ENABLE(ASSERT) |
| 519 m_preventScheduledAnimationsChanges = false; | 518 m_preventScheduledAnimationsChanges = false; |
| 520 #endif | 519 #endif |
| 521 | 520 |
| 522 for (unsigned i = 0; i < animationsToApplySize; ++i) { | 521 for (const auto& timedElement : animationsToApply) { |
| 523 if (animationsToApply[i]->isConnected() && animationsToApply[i]->isSVGDi scardElement()) { | 522 if (timedElement->isConnected() && timedElement->isSVGDiscardElement()) { |
|
pdr.
2016/08/29 00:47:03
Forever reminded of the mistakes I made reviewing
fs
2016/08/29 08:14:16
Mmm, discard, yum... (I think I know which mistake
| |
| 524 SVGSMILElement* animDiscard = animationsToApply[i]; | 523 SVGElement* targetElement = timedElement->targetElement(); |
| 525 SVGElement* targetElement = animDiscard->targetElement(); | |
| 526 if (targetElement && targetElement->isConnected()) { | 524 if (targetElement && targetElement->isConnected()) { |
| 527 targetElement->remove(IGNORE_EXCEPTION); | 525 targetElement->remove(IGNORE_EXCEPTION); |
| 528 ASSERT(!targetElement->isConnected()); | 526 DCHECK(!targetElement->isConnected()); |
| 529 } | 527 } |
| 530 | 528 |
| 531 if (animDiscard->isConnected()) { | 529 if (timedElement->isConnected()) { |
| 532 animDiscard->remove(IGNORE_EXCEPTION); | 530 timedElement->remove(IGNORE_EXCEPTION); |
| 533 ASSERT(!animDiscard->isConnected()); | 531 DCHECK(!timedElement->isConnected()); |
| 534 } | 532 } |
| 535 } | 533 } |
| 536 } | 534 } |
| 537 return earliestFireTime; | 535 return earliestFireTime; |
| 538 } | 536 } |
| 539 | 537 |
| 540 void SMILTimeContainer::advanceFrameForTesting() | 538 void SMILTimeContainer::advanceFrameForTesting() |
| 541 { | 539 { |
| 542 setElapsed(elapsed() + initialFrameDelay); | 540 setElapsed(elapsed() + initialFrameDelay); |
| 543 } | 541 } |
| 544 | 542 |
| 545 DEFINE_TRACE(SMILTimeContainer) | 543 DEFINE_TRACE(SMILTimeContainer) |
| 546 { | 544 { |
| 547 visitor->trace(m_scheduledAnimations); | 545 visitor->trace(m_scheduledAnimations); |
| 548 visitor->trace(m_ownerSVGElement); | 546 visitor->trace(m_ownerSVGElement); |
| 549 } | 547 } |
| 550 | 548 |
| 551 } // namespace blink | 549 } // namespace blink |
| OLD | NEW |