Home | History | Annotate | Download | only in animation
      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/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/CSSParser.h"
     13 
     14 #include <gtest/gtest.h>
     15 
     16 namespace blink {
     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<CSSValue> value = CSSParser::parseSingleValue(propertyID, string, CSSParserContext(parserMode, 0));
     26         ASSERT(value);
     27         return DeferredLegacyStyleInterpolation::interpolationRequiresStyleResolve(*value);
     28     }
     29 };
     30 
     31 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Inherit)
     32 {
     33     EXPECT_TRUE(test(CSSPropertyCaptionSide, "inherit"));
     34 }
     35 
     36 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Color)
     37 {
     38     EXPECT_FALSE(test(CSSPropertyColor, "rgb(10, 20, 30)"));
     39     EXPECT_FALSE(test(CSSPropertyColor, "aqua"));
     40     EXPECT_FALSE(test(CSSPropertyColor, "yellow"));
     41     EXPECT_FALSE(test(CSSPropertyColor, "transparent"));
     42     EXPECT_FALSE(test(CSSPropertyFloodColor, "aliceblue"));
     43     EXPECT_FALSE(test(CSSPropertyFloodColor, "yellowgreen"));
     44     EXPECT_FALSE(test(CSSPropertyFloodColor, "grey"));
     45     EXPECT_TRUE(test(CSSPropertyColor, "currentcolor"));
     46 }
     47 
     48 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Relative)
     49 {
     50     EXPECT_TRUE(test(CSSPropertyFontWeight, "bolder"));
     51     EXPECT_TRUE(test(CSSPropertyFontWeight, "lighter"));
     52     EXPECT_TRUE(test(CSSPropertyFontSize, "smaller"));
     53     EXPECT_TRUE(test(CSSPropertyFontSize, "larger"));
     54 }
     55 
     56 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Length)
     57 {
     58     EXPECT_FALSE(test(CSSPropertyWidth, "10px"));
     59     EXPECT_TRUE(test(CSSPropertyWidth, "10em"));
     60     EXPECT_TRUE(test(CSSPropertyWidth, "10vh"));
     61 }
     62 
     63 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Number)
     64 {
     65     EXPECT_FALSE(test(CSSPropertyOpacity, "0.5"));
     66 }
     67 
     68 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Transform)
     69 {
     70     EXPECT_TRUE(test(CSSPropertyTransform, "translateX(1em)"));
     71     EXPECT_FALSE(test(CSSPropertyTransform, "translateY(20px)"));
     72     EXPECT_FALSE(test(CSSPropertyTransform, "skewX(10rad) perspective(400px)"));
     73     EXPECT_TRUE(test(CSSPropertyTransform, "skewX(20rad) perspective(50em)"));
     74 }
     75 
     76 TEST_F(AnimationDeferredLegacyStyleInterpolationTest, Filter)
     77 {
     78     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "hue-rotate(180deg) blur(6px)"));
     79     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "grayscale(0) blur(0px)"));
     80     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "none"));
     81     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "brightness(0) contrast(0)"));
     82     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "drop-shadow(20px 10px green)"));
     83     EXPECT_TRUE(test(CSSPropertyWebkitFilter, "drop-shadow(20px 10vw green)"));
     84     EXPECT_TRUE(test(CSSPropertyWebkitFilter, "drop-shadow(0px 0px 0px currentcolor)"));
     85     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "opacity(1)"));
     86     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "saturate(0)"));
     87     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "grayscale(1)"));
     88     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "invert(1)"));
     89     EXPECT_FALSE(test(CSSPropertyWebkitFilter, "sepia(1)"));
     90     EXPECT_TRUE(test(CSSPropertyWebkitFilter, "url(#svgfilter)"));
     91 }
     92 
     93 }
     94