Home | History | Annotate | Download | only in interpolation
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "config.h"
      6 #include "core/animation/interpolation/DeferredLegacyStyleInterpolation.h"
      7 
      8 #include "core/css/CSSInheritedValue.h"
      9 #include "core/css/CSSPrimitiveValue.h"
     10 #include "core/css/CSSValueList.h"
     11 #include "core/css/StylePropertySet.h"
     12 #include "core/css/parser/BisonCSSParser.h"
     13 
     14 #include <gtest/gtest.h>
     15 
     16 namespace WebCore {
     17 
     18 class AnimationDeferredLegacyStyleInterpolationTest : public ::testing::Test {
     19 protected:
     20     static bool test(CSSPropertyID propertyID, const String& string)
     21     {
     22         CSSParserMode parserMode = HTMLStandardMode;
     23         if (propertyID == CSSPropertyFloodColor)
     24             parserMode = SVGAttributeMode;
     25         RefPtrWillBeRawPtr<MutableStylePropertySet> dummyStyle = MutableStylePropertySet::create();
     26         bool parseSuccess = BisonCSSParser::parseValue(dummyStyle.get(), propertyID, string, false, parserMode, 0);
     27         ASSERT_UNUSED(parseSuccess, parseSuccess);
     28         return DeferredLegacyStyleInterpolation::interpolationRequiresStyleResolve(*dummyStyle->getPropertyCSSValue(propertyID));
     29     }
     30 };
     31 
     32 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Inherit)
     33 {
     34     EXPECT_TRUE(test(CSSPropertyCaptionSide, "inherit"));
     35 }
     36 
     37 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Color)
     38 {
     39     EXPECT_FALSE(test(CSSPropertyColor, "rgb(10, 20, 30)"));
     40     EXPECT_FALSE(test(CSSPropertyColor, "aqua"));
     41     EXPECT_FALSE(test(CSSPropertyColor, "yellow"));
     42     EXPECT_FALSE(test(CSSPropertyColor, "transparent"));
     43     EXPECT_FALSE(test(CSSPropertyFloodColor, "aliceblue"));
     44     EXPECT_FALSE(test(CSSPropertyFloodColor, "yellowgreen"));
     45     EXPECT_FALSE(test(CSSPropertyFloodColor, "grey"));
     46     EXPECT_TRUE(test(CSSPropertyColor, "currentcolor"));
     47 }
     48 
     49 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Relative)
     50 {
     51     EXPECT_TRUE(test(CSSPropertyFontWeight, "bolder"));
     52     EXPECT_TRUE(test(CSSPropertyFontWeight, "lighter"));
     53     EXPECT_TRUE(test(CSSPropertyFontSize, "smaller"));
     54     EXPECT_TRUE(test(CSSPropertyFontSize, "larger"));
     55 }
     56 
     57 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Length)
     58 {
     59     EXPECT_FALSE(test(CSSPropertyWidth, "10px"));
     60     EXPECT_TRUE(test(CSSPropertyWidth, "10em"));
     61     EXPECT_TRUE(test(CSSPropertyWidth, "10vh"));
     62 }
     63 
     64 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Number)
     65 {
     66     EXPECT_FALSE(test(CSSPropertyOpacity, "0.5"));
     67 }
     68 
     69 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Transform)
     70 {
     71     EXPECT_TRUE(test(CSSPropertyTransform, "translateX(1em)"));
     72     EXPECT_FALSE(test(CSSPropertyTransform, "translateY(20px)"));
     73     EXPECT_FALSE(test(CSSPropertyTransform, "skewX(10rad) perspective(400px)"));
     74     EXPECT_TRUE(test(CSSPropertyTransform, "skewX(20rad) perspective(50em)"));
     75 }
     76 
     77 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Filter)
     78 {
     79     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "hue-rotate(180deg) blur(6px)"));
     80     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "grayscale(0) blur(0px)"));
     81     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "none"));
     82     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "brightness(0) contrast(0)"));
     83     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "drop-shadow(20px 10px green)"));
     84     EXPECT_TRUE(test(CSSPropertyWebkitFilter, "drop-shadow(20px 10vw green)"));
     85     EXPECT_TRUE(test(CSSPropertyWebkitFilter, "drop-shadow(0px 0px 0px currentcolor)"));
     86     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "opacity(1)"));
     87     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "saturate(0)"));
     88     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "grayscale(1)"));
     89     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "invert(1)"));
     90     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "sepia(1)"));
     91     EXPECT_TRUE(test(CSSPropertyWebkitFilter, "url(#svgfilter)"));
     92 }
     93 
     94 }
     95