| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/css/parser/CSSPropertyParser.h" | 5 #include "core/css/parser/CSSPropertyParser.h" |
| 6 | 6 |
| 7 #include "core/css/CSSValueList.h" | 7 #include "core/css/CSSValueList.h" |
| 8 #include "core/css/parser/CSSParser.h" | 8 #include "core/css/parser/CSSParser.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| 11 namespace blink { | 11 namespace blink { |
| 12 | 12 |
| 13 static int computeNumberOfTracks(CSSValueList* valueList) | 13 static int computeNumberOfTracks(CSSValueList* valueList) |
| 14 { | 14 { |
| 15 int numberOfTracks = 0; | 15 int numberOfTracks = 0; |
| 16 for (auto& value : *valueList) { | 16 for (auto& value : *valueList) { |
| 17 if (value->isGridLineNamesValue()) | 17 if (value->isGridLineNamesValue()) |
| 18 continue; | 18 continue; |
| 19 ++numberOfTracks; | 19 ++numberOfTracks; |
| 20 } | 20 } |
| 21 return numberOfTracks; | 21 return numberOfTracks; |
| 22 } | 22 } |
| 23 | 23 |
| 24 TEST(CSSPropertyParserTest, GridTrackLimit1) | 24 TEST(CSSPropertyParserTest, GridTrackLimit1) |
| 25 { | 25 { |
| 26 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Columns, "repeat(999999, 20px)"); | 26 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateColumns
, "repeat(999999, 20px)"); |
| 27 ASSERT_TRUE(value); | 27 ASSERT_TRUE(value); |
| 28 ASSERT_TRUE(value->isValueList()); | 28 ASSERT_TRUE(value->isValueList()); |
| 29 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 999999); | 29 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 999999); |
| 30 } | 30 } |
| 31 | 31 |
| 32 TEST(CSSPropertyParserTest, GridTrackLimit2) | 32 TEST(CSSPropertyParserTest, GridTrackLimit2) |
| 33 { | 33 { |
| 34 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Rows, "repeat(999999, 20px)"); | 34 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateRows, "
repeat(999999, 20px)"); |
| 35 ASSERT_TRUE(value); | 35 ASSERT_TRUE(value); |
| 36 ASSERT_TRUE(value->isValueList()); | 36 ASSERT_TRUE(value->isValueList()); |
| 37 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 999999); | 37 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 999999); |
| 38 } | 38 } |
| 39 | 39 |
| 40 TEST(CSSPropertyParserTest, GridTrackLimit3) | 40 TEST(CSSPropertyParserTest, GridTrackLimit3) |
| 41 { | 41 { |
| 42 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Columns, "repeat(1000000, 10%)"); | 42 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateColumns
, "repeat(1000000, 10%)"); |
| 43 ASSERT_TRUE(value); | 43 ASSERT_TRUE(value); |
| 44 ASSERT_TRUE(value->isValueList()); | 44 ASSERT_TRUE(value->isValueList()); |
| 45 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 1000000); | 45 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 1000000); |
| 46 } | 46 } |
| 47 | 47 |
| 48 TEST(CSSPropertyParserTest, GridTrackLimit4) | 48 TEST(CSSPropertyParserTest, GridTrackLimit4) |
| 49 { | 49 { |
| 50 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Rows, "repeat(1000000, 10%)"); | 50 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateRows, "
repeat(1000000, 10%)"); |
| 51 ASSERT_TRUE(value); | 51 ASSERT_TRUE(value); |
| 52 ASSERT_TRUE(value->isValueList()); | 52 ASSERT_TRUE(value->isValueList()); |
| 53 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 1000000); | 53 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 1000000); |
| 54 } | 54 } |
| 55 | 55 |
| 56 TEST(CSSPropertyParserTest, GridTrackLimit5) | 56 TEST(CSSPropertyParserTest, GridTrackLimit5) |
| 57 { | 57 { |
| 58 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Columns, "repeat(1000000, [first] min-content [last])"); | 58 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateColumns
, "repeat(1000000, [first] min-content [last])"); |
| 59 ASSERT_TRUE(value); | 59 ASSERT_TRUE(value); |
| 60 ASSERT_TRUE(value->isValueList()); | 60 ASSERT_TRUE(value->isValueList()); |
| 61 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 1000000); | 61 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 1000000); |
| 62 } | 62 } |
| 63 | 63 |
| 64 TEST(CSSPropertyParserTest, GridTrackLimit6) | 64 TEST(CSSPropertyParserTest, GridTrackLimit6) |
| 65 { | 65 { |
| 66 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Rows, "repeat(1000000, [first] min-content [last])"); | 66 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateRows, "
repeat(1000000, [first] min-content [last])"); |
| 67 ASSERT_TRUE(value); | 67 ASSERT_TRUE(value); |
| 68 ASSERT_TRUE(value->isValueList()); | 68 ASSERT_TRUE(value->isValueList()); |
| 69 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 1000000); | 69 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 1000000); |
| 70 } | 70 } |
| 71 | 71 |
| 72 TEST(CSSPropertyParserTest, GridTrackLimit7) | 72 TEST(CSSPropertyParserTest, GridTrackLimit7) |
| 73 { | 73 { |
| 74 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Columns, "repeat(1000001, auto)"); | 74 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateColumns
, "repeat(1000001, auto)"); |
| 75 ASSERT_TRUE(value); | 75 ASSERT_TRUE(value); |
| 76 ASSERT_TRUE(value->isValueList()); | 76 ASSERT_TRUE(value->isValueList()); |
| 77 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 1000000); | 77 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 1000000); |
| 78 } | 78 } |
| 79 | 79 |
| 80 TEST(CSSPropertyParserTest, GridTrackLimit8) | 80 TEST(CSSPropertyParserTest, GridTrackLimit8) |
| 81 { | 81 { |
| 82 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Rows, "repeat(1000001, auto)"); | 82 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateRows, "
repeat(1000001, auto)"); |
| 83 ASSERT_TRUE(value); | 83 ASSERT_TRUE(value); |
| 84 ASSERT_TRUE(value->isValueList()); | 84 ASSERT_TRUE(value->isValueList()); |
| 85 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 1000000); | 85 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 1000000); |
| 86 } | 86 } |
| 87 | 87 |
| 88 TEST(CSSPropertyParserTest, GridTrackLimit9) | 88 TEST(CSSPropertyParserTest, GridTrackLimit9) |
| 89 { | 89 { |
| 90 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Columns, "repeat(400000, 2em minmax(10px, max-content) 0.5fr)"); | 90 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateColumns
, "repeat(400000, 2em minmax(10px, max-content) 0.5fr)"); |
| 91 ASSERT_TRUE(value); | 91 ASSERT_TRUE(value); |
| 92 ASSERT_TRUE(value->isValueList()); | 92 ASSERT_TRUE(value->isValueList()); |
| 93 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 999999); | 93 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 999999); |
| 94 } | 94 } |
| 95 | 95 |
| 96 TEST(CSSPropertyParserTest, GridTrackLimit10) | 96 TEST(CSSPropertyParserTest, GridTrackLimit10) |
| 97 { | 97 { |
| 98 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Rows, "repeat(400000, 2em minmax(10px, max-content) 0.5fr)"); | 98 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateRows, "
repeat(400000, 2em minmax(10px, max-content) 0.5fr)"); |
| 99 ASSERT_TRUE(value); | 99 ASSERT_TRUE(value); |
| 100 ASSERT_TRUE(value->isValueList()); | 100 ASSERT_TRUE(value->isValueList()); |
| 101 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 999999); | 101 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 999999); |
| 102 } | 102 } |
| 103 | 103 |
| 104 TEST(CSSPropertyParserTest, GridTrackLimit11) | 104 TEST(CSSPropertyParserTest, GridTrackLimit11) |
| 105 { | 105 { |
| 106 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Columns, "repeat(600000, [first] 3vh 10% 2fr [nav] 10px auto 1fr 6em [last])"); | 106 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateColumns
, "repeat(600000, [first] 3vh 10% 2fr [nav] 10px auto 1fr 6em [last])"); |
| 107 ASSERT_TRUE(value); | 107 ASSERT_TRUE(value); |
| 108 ASSERT_TRUE(value->isValueList()); | 108 ASSERT_TRUE(value->isValueList()); |
| 109 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 999999); | 109 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 999999); |
| 110 } | 110 } |
| 111 | 111 |
| 112 TEST(CSSPropertyParserTest, GridTrackLimit12) | 112 TEST(CSSPropertyParserTest, GridTrackLimit12) |
| 113 { | 113 { |
| 114 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Rows, "repeat(600000, [first] 3vh 10% 2fr [nav] 10px auto 1fr 6em [last])"); | 114 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateRows, "
repeat(600000, [first] 3vh 10% 2fr [nav] 10px auto 1fr 6em [last])"); |
| 115 ASSERT_TRUE(value); | 115 ASSERT_TRUE(value); |
| 116 ASSERT_TRUE(value->isValueList()); | 116 ASSERT_TRUE(value->isValueList()); |
| 117 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 999999); | 117 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 999999); |
| 118 } | 118 } |
| 119 | 119 |
| 120 TEST(CSSPropertyParserTest, GridTrackLimit13) | 120 TEST(CSSPropertyParserTest, GridTrackLimit13) |
| 121 { | 121 { |
| 122 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Columns, "repeat(100000000000000000000, 10% 1fr)"); | 122 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateColumns
, "repeat(100000000000000000000, 10% 1fr)"); |
| 123 ASSERT_TRUE(value); | 123 ASSERT_TRUE(value); |
| 124 ASSERT_TRUE(value->isValueList()); | 124 ASSERT_TRUE(value->isValueList()); |
| 125 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 1000000); | 125 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 1000000); |
| 126 } | 126 } |
| 127 | 127 |
| 128 TEST(CSSPropertyParserTest, GridTrackLimit14) | 128 TEST(CSSPropertyParserTest, GridTrackLimit14) |
| 129 { | 129 { |
| 130 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Rows, "repeat(100000000000000000000, 10% 1fr)"); | 130 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateRows, "
repeat(100000000000000000000, 10% 1fr)"); |
| 131 ASSERT_TRUE(value); | 131 ASSERT_TRUE(value); |
| 132 ASSERT_TRUE(value->isValueList()); | 132 ASSERT_TRUE(value->isValueList()); |
| 133 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 1000000); | 133 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 1000000); |
| 134 } | 134 } |
| 135 | 135 |
| 136 TEST(CSSPropertyParserTest, GridTrackLimit15) | 136 TEST(CSSPropertyParserTest, GridTrackLimit15) |
| 137 { | 137 { |
| 138 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Columns, "repeat(100000000000000000000, 10% 5em 1fr auto auto 15px min-content)"
); | 138 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateColumns
, "repeat(100000000000000000000, 10% 5em 1fr auto auto 15px min-content)"); |
| 139 ASSERT_TRUE(value); | 139 ASSERT_TRUE(value); |
| 140 ASSERT_TRUE(value->isValueList()); | 140 ASSERT_TRUE(value->isValueList()); |
| 141 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 999999); | 141 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 999999); |
| 142 } | 142 } |
| 143 | 143 |
| 144 TEST(CSSPropertyParserTest, GridTrackLimit16) | 144 TEST(CSSPropertyParserTest, GridTrackLimit16) |
| 145 { | 145 { |
| 146 RawPtr<CSSValue> value = CSSParser::parseSingleValue(CSSPropertyGridTemplate
Rows, "repeat(100000000000000000000, 10% 5em 1fr auto auto 15px min-content)"); | 146 CSSValue* value = CSSParser::parseSingleValue(CSSPropertyGridTemplateRows, "
repeat(100000000000000000000, 10% 5em 1fr auto auto 15px min-content)"); |
| 147 ASSERT_TRUE(value); | 147 ASSERT_TRUE(value); |
| 148 ASSERT_TRUE(value->isValueList()); | 148 ASSERT_TRUE(value->isValueList()); |
| 149 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value.get())), 999999); | 149 EXPECT_EQ(computeNumberOfTracks(toCSSValueList(value)), 999999); |
| 150 } | 150 } |
| 151 | 151 |
| 152 } // namespace blink | 152 } // namespace blink |
| OLD | NEW |