OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. |
6 * All rights reserved. | 6 * All rights reserved. |
7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
10 * (http://www.torchmobile.com/) | 10 * (http://www.torchmobile.com/) |
(...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1108 (animatingElement && animatingElement->hasAnimations())) { | 1108 (animatingElement && animatingElement->hasAnimations())) { |
1109 if (!state.isAnimationInterpolationMapReady()) | 1109 if (!state.isAnimationInterpolationMapReady()) |
1110 calculateAnimationUpdate(state, animatingElement); | 1110 calculateAnimationUpdate(state, animatingElement); |
1111 } else if (!state.style()->transitions()) { | 1111 } else if (!state.style()->transitions()) { |
1112 return false; | 1112 return false; |
1113 } | 1113 } |
1114 | 1114 |
1115 CSSAnimations::calculateCompositorAnimationUpdate( | 1115 CSSAnimations::calculateCompositorAnimationUpdate( |
1116 state.animationUpdate(), animatingElement, *element, *state.style(), | 1116 state.animationUpdate(), animatingElement, *element, *state.style(), |
1117 state.parentStyle(), wasViewportResized()); | 1117 state.parentStyle(), wasViewportResized()); |
1118 CSSAnimations::calculateTransitionUpdate(state.animationUpdate(), | 1118 CSSAnimations::calculateTransitionUpdate( |
1119 animatingElement, *state.style()); | 1119 state.animationUpdate(), CSSAnimations::PropertyPass::Standard, |
| 1120 animatingElement, *state.style()); |
1120 | 1121 |
1121 CSSAnimations::snapshotCompositorKeyframes( | 1122 CSSAnimations::snapshotCompositorKeyframes( |
1122 *element, state.animationUpdate(), *state.style(), state.parentStyle()); | 1123 *element, state.animationUpdate(), *state.style(), state.parentStyle()); |
1123 | 1124 |
1124 if (state.animationUpdate().isEmpty()) | 1125 if (state.animationUpdate().isEmpty()) |
1125 return false; | 1126 return false; |
1126 | 1127 |
1127 if (state.style()->insideLink() != EInsideLink::kNotInsideLink) { | 1128 if (state.style()->insideLink() != EInsideLink::kNotInsideLink) { |
1128 DCHECK(state.applyPropertyToRegularStyle()); | 1129 DCHECK(state.applyPropertyToRegularStyle()); |
1129 state.setApplyPropertyToVisitedLinkStyle(true); | 1130 state.setApplyPropertyToVisitedLinkStyle(true); |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1605 const MatchResult& matchResult, | 1606 const MatchResult& matchResult, |
1606 const Element* animatingElement) { | 1607 const Element* animatingElement) { |
1607 CacheSuccess cacheSuccess = applyMatchedCache(state, matchResult); | 1608 CacheSuccess cacheSuccess = applyMatchedCache(state, matchResult); |
1608 NeedsApplyPass needsApplyPass; | 1609 NeedsApplyPass needsApplyPass; |
1609 if (!cacheSuccess.isFullCacheHit()) { | 1610 if (!cacheSuccess.isFullCacheHit()) { |
1610 applyCustomProperties(state, matchResult, ExcludeAnimations, cacheSuccess, | 1611 applyCustomProperties(state, matchResult, ExcludeAnimations, cacheSuccess, |
1611 needsApplyPass); | 1612 needsApplyPass); |
1612 applyMatchedAnimationProperties(state, matchResult, cacheSuccess, | 1613 applyMatchedAnimationProperties(state, matchResult, cacheSuccess, |
1613 needsApplyPass); | 1614 needsApplyPass); |
1614 } | 1615 } |
1615 if (state.style()->animations() || | 1616 if (state.style()->animations() || state.style()->transitions() || |
1616 (animatingElement && animatingElement->hasAnimations())) { | 1617 (animatingElement && animatingElement->hasAnimations())) { |
1617 calculateAnimationUpdate(state, animatingElement); | 1618 calculateAnimationUpdate(state, animatingElement); |
1618 if (state.isAnimatingCustomProperties()) { | 1619 if (state.isAnimatingCustomProperties()) { |
1619 cacheSuccess.setFailed(); | 1620 cacheSuccess.setFailed(); |
1620 applyCustomProperties(state, matchResult, IncludeAnimations, cacheSuccess, | 1621 applyCustomProperties(state, matchResult, IncludeAnimations, cacheSuccess, |
1621 needsApplyPass); | 1622 needsApplyPass); |
1622 } | 1623 } |
1623 } | 1624 } |
1624 if (!cacheSuccess.isFullCacheHit()) { | 1625 if (!cacheSuccess.isFullCacheHit()) { |
1625 applyMatchedStandardProperties(state, matchResult, cacheSuccess, | 1626 applyMatchedStandardProperties(state, matchResult, cacheSuccess, |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1697 // this work. | 1698 // this work. |
1698 applyMatchedProperties<ResolveVariables, UpdateNeedsApplyPass>( | 1699 applyMatchedProperties<ResolveVariables, UpdateNeedsApplyPass>( |
1699 state, matchResult.authorRules(), false, applyInheritedOnly, | 1700 state, matchResult.authorRules(), false, applyInheritedOnly, |
1700 needsApplyPass); | 1701 needsApplyPass); |
1701 applyMatchedProperties<ResolveVariables, CheckNeedsApplyPass>( | 1702 applyMatchedProperties<ResolveVariables, CheckNeedsApplyPass>( |
1702 state, matchResult.authorRules(), true, applyInheritedOnly, | 1703 state, matchResult.authorRules(), true, applyInheritedOnly, |
1703 needsApplyPass); | 1704 needsApplyPass); |
1704 if (applyAnimations == IncludeAnimations) { | 1705 if (applyAnimations == IncludeAnimations) { |
1705 applyAnimatedProperties<ResolveVariables>( | 1706 applyAnimatedProperties<ResolveVariables>( |
1706 state, state.animationUpdate().activeInterpolationsForAnimations()); | 1707 state, state.animationUpdate().activeInterpolationsForAnimations()); |
| 1708 applyAnimatedProperties<ResolveVariables>( |
| 1709 state, |
| 1710 state.animationUpdate().activeInterpolationsForCustomTransitions()); |
1707 } | 1711 } |
1708 // TODO(leviw): stop recalculating every time | 1712 // TODO(leviw): stop recalculating every time |
1709 CSSVariableResolver::resolveVariableDefinitions(state); | 1713 CSSVariableResolver::resolveVariableDefinitions(state); |
1710 | 1714 |
1711 if (RuntimeEnabledFeatures::cssApplyAtRulesEnabled()) { | 1715 if (RuntimeEnabledFeatures::cssApplyAtRulesEnabled()) { |
1712 if (cacheCustomPropertiesForApplyAtRules(state, | 1716 if (cacheCustomPropertiesForApplyAtRules(state, |
1713 matchResult.authorRules())) { | 1717 matchResult.authorRules())) { |
1714 applyMatchedProperties<ResolveVariables, UpdateNeedsApplyPass>( | 1718 applyMatchedProperties<ResolveVariables, UpdateNeedsApplyPass>( |
1715 state, matchResult.authorRules(), false, applyInheritedOnly, | 1719 state, matchResult.authorRules(), false, applyInheritedOnly, |
1716 needsApplyPass); | 1720 needsApplyPass); |
1717 applyMatchedProperties<ResolveVariables, CheckNeedsApplyPass>( | 1721 applyMatchedProperties<ResolveVariables, CheckNeedsApplyPass>( |
1718 state, matchResult.authorRules(), true, applyInheritedOnly, | 1722 state, matchResult.authorRules(), true, applyInheritedOnly, |
1719 needsApplyPass); | 1723 needsApplyPass); |
1720 if (applyAnimations == IncludeAnimations) { | 1724 if (applyAnimations == IncludeAnimations) { |
1721 applyAnimatedProperties<ResolveVariables>( | 1725 applyAnimatedProperties<ResolveVariables>( |
1722 state, state.animationUpdate().activeInterpolationsForAnimations()); | 1726 state, state.animationUpdate().activeInterpolationsForAnimations()); |
| 1727 applyAnimatedProperties<ResolveVariables>( |
| 1728 state, |
| 1729 state.animationUpdate().activeInterpolationsForCustomTransitions()); |
1723 } | 1730 } |
1724 CSSVariableResolver::resolveVariableDefinitions(state); | 1731 CSSVariableResolver::resolveVariableDefinitions(state); |
1725 } | 1732 } |
1726 } | 1733 } |
1727 } | 1734 } |
1728 | 1735 |
1729 void StyleResolver::applyMatchedAnimationProperties( | 1736 void StyleResolver::applyMatchedAnimationProperties( |
1730 StyleResolverState& state, | 1737 StyleResolverState& state, |
1731 const MatchResult& matchResult, | 1738 const MatchResult& matchResult, |
1732 const CacheSuccess& cacheSuccess, | 1739 const CacheSuccess& cacheSuccess, |
1733 NeedsApplyPass& needsApplyPass) { | 1740 NeedsApplyPass& needsApplyPass) { |
1734 DCHECK(!cacheSuccess.isFullCacheHit()); | 1741 DCHECK(!cacheSuccess.isFullCacheHit()); |
1735 bool applyInheritedOnly = cacheSuccess.shouldApplyInheritedOnly(); | 1742 bool applyInheritedOnly = cacheSuccess.shouldApplyInheritedOnly(); |
1736 | 1743 |
1737 applyMatchedProperties<AnimationPropertyPriority, UpdateNeedsApplyPass>( | 1744 applyMatchedProperties<AnimationPropertyPriority, UpdateNeedsApplyPass>( |
1738 state, matchResult.allRules(), false, applyInheritedOnly, needsApplyPass); | 1745 state, matchResult.allRules(), false, applyInheritedOnly, needsApplyPass); |
1739 applyMatchedProperties<AnimationPropertyPriority, CheckNeedsApplyPass>( | 1746 applyMatchedProperties<AnimationPropertyPriority, CheckNeedsApplyPass>( |
1740 state, matchResult.allRules(), true, applyInheritedOnly, needsApplyPass); | 1747 state, matchResult.allRules(), true, applyInheritedOnly, needsApplyPass); |
1741 } | 1748 } |
1742 | 1749 |
1743 void StyleResolver::calculateAnimationUpdate(StyleResolverState& state, | 1750 void StyleResolver::calculateAnimationUpdate(StyleResolverState& state, |
1744 const Element* animatingElement) { | 1751 const Element* animatingElement) { |
1745 DCHECK(state.style()->animations() || | 1752 DCHECK(state.style()->animations() || state.style()->transitions() || |
1746 (animatingElement && animatingElement->hasAnimations())); | 1753 (animatingElement && animatingElement->hasAnimations())); |
1747 DCHECK(!state.isAnimationInterpolationMapReady()); | 1754 DCHECK(!state.isAnimationInterpolationMapReady()); |
1748 | 1755 |
1749 CSSAnimations::calculateAnimationUpdate( | 1756 CSSAnimations::calculateAnimationUpdate( |
1750 state.animationUpdate(), animatingElement, *state.element(), | 1757 state.animationUpdate(), animatingElement, *state.element(), |
1751 *state.style(), state.parentStyle(), this); | 1758 *state.style(), state.parentStyle(), this); |
| 1759 CSSAnimations::calculateTransitionUpdate(state.animationUpdate(), |
| 1760 CSSAnimations::PropertyPass::Custom, |
| 1761 animatingElement, *state.style()); |
1752 | 1762 |
1753 state.setIsAnimationInterpolationMapReady(); | 1763 state.setIsAnimationInterpolationMapReady(); |
1754 | 1764 |
1755 if (state.isAnimatingCustomProperties()) | 1765 if (state.isAnimatingCustomProperties()) { |
1756 return; | 1766 return; |
| 1767 } |
| 1768 if (!state.animationUpdate() |
| 1769 .activeInterpolationsForCustomTransitions() |
| 1770 .isEmpty()) { |
| 1771 state.setIsAnimatingCustomProperties(true); |
| 1772 return; |
| 1773 } |
1757 for (const auto& propertyHandle : | 1774 for (const auto& propertyHandle : |
1758 state.animationUpdate().activeInterpolationsForAnimations().keys()) { | 1775 state.animationUpdate().activeInterpolationsForAnimations().keys()) { |
1759 if (CSSAnimations::isCustomPropertyHandle(propertyHandle)) { | 1776 if (CSSAnimations::isCustomPropertyHandle(propertyHandle)) { |
1760 state.setIsAnimatingCustomProperties(true); | 1777 state.setIsAnimatingCustomProperties(true); |
1761 return; | 1778 return; |
1762 } | 1779 } |
1763 } | 1780 } |
1764 } | 1781 } |
1765 | 1782 |
1766 void StyleResolver::applyMatchedStandardProperties( | 1783 void StyleResolver::applyMatchedStandardProperties( |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1946 | 1963 |
1947 DEFINE_TRACE(StyleResolver) { | 1964 DEFINE_TRACE(StyleResolver) { |
1948 visitor->trace(m_matchedPropertiesCache); | 1965 visitor->trace(m_matchedPropertiesCache); |
1949 visitor->trace(m_selectorFilter); | 1966 visitor->trace(m_selectorFilter); |
1950 visitor->trace(m_styleSharingLists); | 1967 visitor->trace(m_styleSharingLists); |
1951 visitor->trace(m_document); | 1968 visitor->trace(m_document); |
1952 visitor->trace(m_tracker); | 1969 visitor->trace(m_tracker); |
1953 } | 1970 } |
1954 | 1971 |
1955 } // namespace blink | 1972 } // namespace blink |
OLD | NEW |