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

Side by Side Diff: sky/engine/core/css/CSSComputedStyleDeclaration.cpp

Issue 760183003: Enable/Unprefix Animations & Transitions, add basic tests (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: patch for landing Created 6 years 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
« no previous file with comments | « sky/engine/core/animation/css/CSSAnimations.cpp ('k') | sky/engine/core/css/CSSProperties.in » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org>
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. 6 * Copyright (C) 2011 Sencha, Inc. All rights reserved.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public 9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 CSSPropertyVerticalAlign, 186 CSSPropertyVerticalAlign,
187 CSSPropertyWhiteSpace, 187 CSSPropertyWhiteSpace,
188 CSSPropertyWidows, 188 CSSPropertyWidows,
189 CSSPropertyWidth, 189 CSSPropertyWidth,
190 CSSPropertyWillChange, 190 CSSPropertyWillChange,
191 CSSPropertyWordBreak, 191 CSSPropertyWordBreak,
192 CSSPropertyWordSpacing, 192 CSSPropertyWordSpacing,
193 CSSPropertyWordWrap, 193 CSSPropertyWordWrap,
194 CSSPropertyZIndex, 194 CSSPropertyZIndex,
195 195
196 CSSPropertyWebkitAnimationDelay,
197 CSSPropertyWebkitAnimationDirection,
198 CSSPropertyWebkitAnimationDuration,
199 CSSPropertyWebkitAnimationFillMode,
200 CSSPropertyWebkitAnimationIterationCount,
201 CSSPropertyWebkitAnimationName,
202 CSSPropertyWebkitAnimationPlayState,
203 CSSPropertyWebkitAnimationTimingFunction,
204 CSSPropertyBackfaceVisibility, 196 CSSPropertyBackfaceVisibility,
205 CSSPropertyWebkitBackfaceVisibility, 197 CSSPropertyWebkitBackfaceVisibility,
206 CSSPropertyWebkitBackgroundClip, 198 CSSPropertyWebkitBackgroundClip,
207 CSSPropertyWebkitBackgroundComposite, 199 CSSPropertyWebkitBackgroundComposite,
208 CSSPropertyWebkitBackgroundOrigin, 200 CSSPropertyWebkitBackgroundOrigin,
209 CSSPropertyWebkitBackgroundSize, 201 CSSPropertyWebkitBackgroundSize,
210 CSSPropertyWebkitBorderHorizontalSpacing, 202 CSSPropertyWebkitBorderHorizontalSpacing,
211 CSSPropertyWebkitBorderImage, 203 CSSPropertyWebkitBorderImage,
212 CSSPropertyWebkitBorderVerticalSpacing, 204 CSSPropertyWebkitBorderVerticalSpacing,
213 CSSPropertyWebkitBoxDecorationBreak, 205 CSSPropertyWebkitBoxDecorationBreak,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 CSSPropertyWebkitTextFillColor, 248 CSSPropertyWebkitTextFillColor,
257 CSSPropertyWebkitTextOrientation, 249 CSSPropertyWebkitTextOrientation,
258 CSSPropertyWebkitTextStrokeColor, 250 CSSPropertyWebkitTextStrokeColor,
259 CSSPropertyWebkitTextStrokeWidth, 251 CSSPropertyWebkitTextStrokeWidth,
260 CSSPropertyTransform, 252 CSSPropertyTransform,
261 CSSPropertyWebkitTransform, 253 CSSPropertyWebkitTransform,
262 CSSPropertyTransformOrigin, 254 CSSPropertyTransformOrigin,
263 CSSPropertyWebkitTransformOrigin, 255 CSSPropertyWebkitTransformOrigin,
264 CSSPropertyTransformStyle, 256 CSSPropertyTransformStyle,
265 CSSPropertyWebkitTransformStyle, 257 CSSPropertyWebkitTransformStyle,
266 CSSPropertyWebkitTransitionDelay,
267 CSSPropertyWebkitTransitionDuration,
268 CSSPropertyWebkitTransitionProperty,
269 CSSPropertyWebkitTransitionTimingFunction,
270 CSSPropertyWebkitUserDrag, 258 CSSPropertyWebkitUserDrag,
271 CSSPropertyWebkitUserModify, 259 CSSPropertyWebkitUserModify,
272 CSSPropertyWebkitUserSelect, 260 CSSPropertyWebkitUserSelect,
273 CSSPropertyMaskSourceType, 261 CSSPropertyMaskSourceType,
274 }; 262 };
275 263
276 static const Vector<CSSPropertyID>& computableProperties() 264 static const Vector<CSSPropertyID>& computableProperties()
277 { 265 {
278 DEFINE_STATIC_LOCAL(Vector<CSSPropertyID>, properties, ()); 266 DEFINE_STATIC_LOCAL(Vector<CSSPropertyID>, properties, ());
279 if (properties.isEmpty()) 267 if (properties.isEmpty())
(...skipping 1585 matching lines...) Expand 10 before | Expand all | Expand 10 after
1865 } 1853 }
1866 case CSSPropertyZIndex: 1854 case CSSPropertyZIndex:
1867 if (style->hasAutoZIndex()) 1855 if (style->hasAutoZIndex())
1868 return cssValuePool().createIdentifierValue(CSSValueAuto); 1856 return cssValuePool().createIdentifierValue(CSSValueAuto);
1869 return cssValuePool().createValue(style->zIndex(), CSSPrimitiveValue ::CSS_NUMBER); 1857 return cssValuePool().createValue(style->zIndex(), CSSPrimitiveValue ::CSS_NUMBER);
1870 case CSSPropertyBoxSizing: 1858 case CSSPropertyBoxSizing:
1871 if (style->boxSizing() == CONTENT_BOX) 1859 if (style->boxSizing() == CONTENT_BOX)
1872 return cssValuePool().createIdentifierValue(CSSValueContentBox); 1860 return cssValuePool().createIdentifierValue(CSSValueContentBox);
1873 return cssValuePool().createIdentifierValue(CSSValueBorderBox); 1861 return cssValuePool().createIdentifierValue(CSSValueBorderBox);
1874 case CSSPropertyAnimationDelay: 1862 case CSSPropertyAnimationDelay:
1875 ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
1876 case CSSPropertyWebkitAnimationDelay:
1877 return valueForAnimationDelay(style->animations()); 1863 return valueForAnimationDelay(style->animations());
1878 case CSSPropertyAnimationDirection: 1864 case CSSPropertyAnimationDirection: {
1879 ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
1880 case CSSPropertyWebkitAnimationDirection: {
1881 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); 1865 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
1882 const CSSAnimationData* animationData = style->animations(); 1866 const CSSAnimationData* animationData = style->animations();
1883 if (animationData) { 1867 if (animationData) {
1884 for (size_t i = 0; i < animationData->directionList().size(); ++ i) 1868 for (size_t i = 0; i < animationData->directionList().size(); ++ i)
1885 list->append(valueForAnimationDirection(animationData->direc tionList()[i])); 1869 list->append(valueForAnimationDirection(animationData->direc tionList()[i]));
1886 } else { 1870 } else {
1887 list->append(cssValuePool().createIdentifierValue(CSSValueNormal )); 1871 list->append(cssValuePool().createIdentifierValue(CSSValueNormal ));
1888 } 1872 }
1889 return list.release(); 1873 return list.release();
1890 } 1874 }
1891 case CSSPropertyAnimationDuration: 1875 case CSSPropertyAnimationDuration:
1892 ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
1893 case CSSPropertyWebkitAnimationDuration:
1894 return valueForAnimationDuration(style->animations()); 1876 return valueForAnimationDuration(style->animations());
1895 case CSSPropertyAnimationFillMode: 1877 case CSSPropertyAnimationFillMode: {
1896 ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
1897 case CSSPropertyWebkitAnimationFillMode: {
1898 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); 1878 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
1899 const CSSAnimationData* animationData = style->animations(); 1879 const CSSAnimationData* animationData = style->animations();
1900 if (animationData) { 1880 if (animationData) {
1901 for (size_t i = 0; i < animationData->fillModeList().size(); ++i ) 1881 for (size_t i = 0; i < animationData->fillModeList().size(); ++i )
1902 list->append(valueForAnimationFillMode(animationData->fillMo deList()[i])); 1882 list->append(valueForAnimationFillMode(animationData->fillMo deList()[i]));
1903 } else { 1883 } else {
1904 list->append(cssValuePool().createIdentifierValue(CSSValueNone)) ; 1884 list->append(cssValuePool().createIdentifierValue(CSSValueNone)) ;
1905 } 1885 }
1906 return list.release(); 1886 return list.release();
1907 } 1887 }
1908 case CSSPropertyAnimationIterationCount: 1888 case CSSPropertyAnimationIterationCount: {
1909 ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
1910 case CSSPropertyWebkitAnimationIterationCount: {
1911 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); 1889 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
1912 const CSSAnimationData* animationData = style->animations(); 1890 const CSSAnimationData* animationData = style->animations();
1913 if (animationData) { 1891 if (animationData) {
1914 for (size_t i = 0; i < animationData->iterationCountList().size( ); ++i) 1892 for (size_t i = 0; i < animationData->iterationCountList().size( ); ++i)
1915 list->append(valueForAnimationIterationCount(animationData-> iterationCountList()[i])); 1893 list->append(valueForAnimationIterationCount(animationData-> iterationCountList()[i]));
1916 } else { 1894 } else {
1917 list->append(cssValuePool().createValue(CSSAnimationData::initia lIterationCount(), CSSPrimitiveValue::CSS_NUMBER)); 1895 list->append(cssValuePool().createValue(CSSAnimationData::initia lIterationCount(), CSSPrimitiveValue::CSS_NUMBER));
1918 } 1896 }
1919 return list.release(); 1897 return list.release();
1920 } 1898 }
1921 case CSSPropertyAnimationName: 1899 case CSSPropertyAnimationName: {
1922 ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
1923 case CSSPropertyWebkitAnimationName: {
1924 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); 1900 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
1925 const CSSAnimationData* animationData = style->animations(); 1901 const CSSAnimationData* animationData = style->animations();
1926 if (animationData) { 1902 if (animationData) {
1927 for (size_t i = 0; i < animationData->nameList().size(); ++i) 1903 for (size_t i = 0; i < animationData->nameList().size(); ++i)
1928 list->append(cssValuePool().createValue(animationData->nameL ist()[i], CSSPrimitiveValue::CSS_STRING)); 1904 list->append(cssValuePool().createValue(animationData->nameL ist()[i], CSSPrimitiveValue::CSS_STRING));
1929 } else { 1905 } else {
1930 list->append(cssValuePool().createIdentifierValue(CSSValueNone)) ; 1906 list->append(cssValuePool().createIdentifierValue(CSSValueNone)) ;
1931 } 1907 }
1932 return list.release(); 1908 return list.release();
1933 } 1909 }
1934 case CSSPropertyAnimationPlayState: 1910 case CSSPropertyAnimationPlayState: {
1935 ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
1936 case CSSPropertyWebkitAnimationPlayState: {
1937 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated(); 1911 RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
1938 const CSSAnimationData* animationData = style->animations(); 1912 const CSSAnimationData* animationData = style->animations();
1939 if (animationData) { 1913 if (animationData) {
1940 for (size_t i = 0; i < animationData->playStateList().size(); ++ i) 1914 for (size_t i = 0; i < animationData->playStateList().size(); ++ i)
1941 list->append(valueForAnimationPlayState(animationData->playS tateList()[i])); 1915 list->append(valueForAnimationPlayState(animationData->playS tateList()[i]));
1942 } else { 1916 } else {
1943 list->append(cssValuePool().createIdentifierValue(CSSValueRunnin g)); 1917 list->append(cssValuePool().createIdentifierValue(CSSValueRunnin g));
1944 } 1918 }
1945 return list.release(); 1919 return list.release();
1946 } 1920 }
1947 case CSSPropertyAnimationTimingFunction: 1921 case CSSPropertyAnimationTimingFunction:
1948 ASSERT(RuntimeEnabledFeatures::cssAnimationUnprefixedEnabled());
1949 case CSSPropertyWebkitAnimationTimingFunction:
1950 return valueForAnimationTimingFunction(style->animations()); 1922 return valueForAnimationTimingFunction(style->animations());
1951 case CSSPropertyAnimation: 1923 case CSSPropertyAnimation: {
1952 case CSSPropertyWebkitAnimation: {
1953 const CSSAnimationData* animationData = style->animations(); 1924 const CSSAnimationData* animationData = style->animations();
1954 if (animationData) { 1925 if (animationData) {
1955 RefPtr<CSSValueList> animationsList = CSSValueList::createCommaS eparated(); 1926 RefPtr<CSSValueList> animationsList = CSSValueList::createCommaS eparated();
1956 for (size_t i = 0; i < animationData->nameList().size(); ++i) { 1927 for (size_t i = 0; i < animationData->nameList().size(); ++i) {
1957 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparat ed(); 1928 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparat ed();
1958 list->append(cssValuePool().createValue(animationData->nameL ist()[i], CSSPrimitiveValue::CSS_STRING)); 1929 list->append(cssValuePool().createValue(animationData->nameL ist()[i], CSSPrimitiveValue::CSS_STRING));
1959 list->append(cssValuePool().createValue(CSSTimingData::getRe peated(animationData->durationList(), i), CSSPrimitiveValue::CSS_S)); 1930 list->append(cssValuePool().createValue(CSSTimingData::getRe peated(animationData->durationList(), i), CSSPrimitiveValue::CSS_S));
1960 list->append(createTimingFunctionValue(CSSTimingData::getRep eated(animationData->timingFunctionList(), i).get())); 1931 list->append(createTimingFunctionValue(CSSTimingData::getRep eated(animationData->timingFunctionList(), i).get()));
1961 list->append(cssValuePool().createValue(CSSTimingData::getRe peated(animationData->delayList(), i), CSSPrimitiveValue::CSS_S)); 1932 list->append(cssValuePool().createValue(CSSTimingData::getRe peated(animationData->delayList(), i), CSSPrimitiveValue::CSS_S));
1962 list->append(valueForAnimationIterationCount(CSSTimingData:: getRepeated(animationData->iterationCountList(), i))); 1933 list->append(valueForAnimationIterationCount(CSSTimingData:: getRepeated(animationData->iterationCountList(), i)));
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
2086 list->append(pixelValueForLength(style->transformOriginY(), *sty le)); 2057 list->append(pixelValueForLength(style->transformOriginY(), *sty le));
2087 if (style->transformOriginZ() != 0) 2058 if (style->transformOriginZ() != 0)
2088 list->append(pixelValue(style->transformOriginZ(), *style)); 2059 list->append(pixelValue(style->transformOriginZ(), *style));
2089 } 2060 }
2090 return list.release(); 2061 return list.release();
2091 } 2062 }
2092 case CSSPropertyTransformStyle: 2063 case CSSPropertyTransformStyle:
2093 case CSSPropertyWebkitTransformStyle: 2064 case CSSPropertyWebkitTransformStyle:
2094 return cssValuePool().createIdentifierValue((style->transformStyle3D () == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat); 2065 return cssValuePool().createIdentifierValue((style->transformStyle3D () == TransformStyle3DPreserve3D) ? CSSValuePreserve3d : CSSValueFlat);
2095 case CSSPropertyTransitionDelay: 2066 case CSSPropertyTransitionDelay:
2096 case CSSPropertyWebkitTransitionDelay:
2097 return valueForAnimationDelay(style->transitions()); 2067 return valueForAnimationDelay(style->transitions());
2098 case CSSPropertyTransitionDuration: 2068 case CSSPropertyTransitionDuration:
2099 case CSSPropertyWebkitTransitionDuration:
2100 return valueForAnimationDuration(style->transitions()); 2069 return valueForAnimationDuration(style->transitions());
2101 case CSSPropertyTransitionProperty: 2070 case CSSPropertyTransitionProperty:
2102 case CSSPropertyWebkitTransitionProperty:
2103 return valueForTransitionProperty(style->transitions()); 2071 return valueForTransitionProperty(style->transitions());
2104 case CSSPropertyTransitionTimingFunction: 2072 case CSSPropertyTransitionTimingFunction:
2105 case CSSPropertyWebkitTransitionTimingFunction:
2106 return valueForAnimationTimingFunction(style->transitions()); 2073 return valueForAnimationTimingFunction(style->transitions());
2107 case CSSPropertyTransition: 2074 case CSSPropertyTransition: {
2108 case CSSPropertyWebkitTransition: {
2109 const CSSTransitionData* transitionData = style->transitions(); 2075 const CSSTransitionData* transitionData = style->transitions();
2110 if (transitionData) { 2076 if (transitionData) {
2111 RefPtr<CSSValueList> transitionsList = CSSValueList::createComma Separated(); 2077 RefPtr<CSSValueList> transitionsList = CSSValueList::createComma Separated();
2112 for (size_t i = 0; i < transitionData->propertyList().size(); ++ i) { 2078 for (size_t i = 0; i < transitionData->propertyList().size(); ++ i) {
2113 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparat ed(); 2079 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparat ed();
2114 list->append(createTransitionPropertyValue(transitionData->p ropertyList()[i])); 2080 list->append(createTransitionPropertyValue(transitionData->p ropertyList()[i]));
2115 list->append(cssValuePool().createValue(CSSTimingData::getRe peated(transitionData->durationList(), i), CSSPrimitiveValue::CSS_S)); 2081 list->append(cssValuePool().createValue(CSSTimingData::getRe peated(transitionData->durationList(), i), CSSPrimitiveValue::CSS_S));
2116 list->append(createTimingFunctionValue(CSSTimingData::getRep eated(transitionData->timingFunctionList(), i).get())); 2082 list->append(createTimingFunctionValue(CSSTimingData::getRep eated(transitionData->timingFunctionList(), i).get()));
2117 list->append(cssValuePool().createValue(CSSTimingData::getRe peated(transitionData->delayList(), i), CSSPrimitiveValue::CSS_S)); 2083 list->append(cssValuePool().createValue(CSSTimingData::getRe peated(transitionData->delayList(), i), CSSPrimitiveValue::CSS_S));
2118 transitionsList->append(list); 2084 transitionsList->append(list);
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
2429 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB ackgroundSize, CSSPropertyBackgroundOrigin, 2395 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB ackgroundSize, CSSPropertyBackgroundOrigin,
2430 CSSPropertyB ackgroundClip }; 2396 CSSPropertyB ackgroundClip };
2431 2397
2432 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); 2398 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated();
2433 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa ckground, propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlash Seperator)))); 2399 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa ckground, propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlash Seperator))));
2434 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa ckground, propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSe perator)))); 2400 list->append(valuesForShorthandProperty(StylePropertyShorthand(CSSPropertyBa ckground, propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSe perator))));
2435 return list.release(); 2401 return list.release();
2436 } 2402 }
2437 2403
2438 } // namespace blink 2404 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/core/animation/css/CSSAnimations.cpp ('k') | sky/engine/core/css/CSSProperties.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698