Skip to content

Commit 14a98b5

Browse files
CSSFontPaletteValuesRule should not be maplike
https://bugs.webkit.org/show_bug.cgi?id=230793 <rdar://problem/83530242> Reviewed by Wenson Hsieh. LayoutTests/imported/w3c: The tests are being upstreamed in web-platform-tests/wpt#30966. * web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html: * web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html: Source/WebCore: The spec changed in w3c/csswg-drafts@c10855a from "maplike<unsigned long, CSSOMString>" to "attribute CSSOMString overrideColor". Tests: imported/w3c/web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html imported/w3c/web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html * css/CSSFontPaletteValuesRule.cpp: (WebCore::CSSFontPaletteValuesRule::basePalette const): (WebCore::CSSFontPaletteValuesRule::overrideColor const): (WebCore::CSSFontPaletteValuesRule::cssText const): (WebCore::CSSFontPaletteValuesRule::initializeMapLike): Deleted. * css/CSSFontPaletteValuesRule.h: * css/CSSFontPaletteValuesRule.idl: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@283219 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent a6e1271 commit 14a98b5

File tree

7 files changed

+100
-55
lines changed

7 files changed

+100
-55
lines changed

LayoutTests/imported/w3c/ChangeLog

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
2021-09-29 Myles C. Maxfield <[email protected]>
2+
3+
CSSFontPaletteValuesRule should not be maplike
4+
https://bugs.webkit.org/show_bug.cgi?id=230793
5+
<rdar://problem/83530242>
6+
7+
Reviewed by Wenson Hsieh.
8+
9+
The tests are being upstreamed in https://github.com/web-platform-tests/wpt/pull/30966.
10+
11+
* web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html:
12+
* web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html:
13+
114
2021-09-29 Antti Koivisto <[email protected]>
215

316
[CSS Cascade Layers] Add fonts and keyframes in cascade layer order

LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -183,42 +183,42 @@
183183
let text = rules[7].cssText;
184184
let rule = rules[7];
185185
assert_equals(text.indexOf("override-colors"), -1);
186-
assert_equals(rule.size, 0);
186+
assert_equals(rule.overrideColors, "");
187187
});
188188

189189
test(function() {
190190
let text = rules[8].cssText;
191191
let rule = rules[8];
192192
assert_equals(text.indexOf("override-colors"), -1);
193-
assert_equals(rule.size, 0);
193+
assert_equals(rule.overrideColors, "");
194194
});
195195

196196
test(function() {
197197
let text = rules[9].cssText;
198198
let rule = rules[9];
199199
assert_equals(text.indexOf("override-colors"), -1);
200-
assert_equals(rule.size, 0);
200+
assert_equals(rule.overrideColors, "");
201201
});
202202

203203
test(function() {
204204
let text = rules[10].cssText;
205205
let rule = rules[10];
206206
assert_equals(text.indexOf("override-colors"), -1);
207-
assert_equals(rule.size, 0);
207+
assert_equals(rule.overrideColors, "");
208208
});
209209

210210
test(function() {
211211
let text = rules[11].cssText;
212212
let rule = rules[11];
213213
assert_equals(text.indexOf("override-colors"), -1);
214-
assert_equals(rule.size, 0);
214+
assert_equals(rule.overrideColors, "");
215215
});
216216

217217
test(function() {
218218
let text = rules[12].cssText;
219219
let rule = rules[12];
220220
assert_equals(text.indexOf("override-colors"), -1);
221-
assert_equals(rule.size, 0);
221+
assert_equals(rule.overrideColors, "");
222222
});
223223

224224
test(function() {
@@ -233,26 +233,26 @@
233233
let rule = rules[14];
234234
assert_equals(text.indexOf("base-palette"), -1);
235235
assert_equals(text.indexOf("override-colors"), -1);
236-
assert_equals(rule.size, 0);
237236
assert_equals(rule.basePalette, "");
237+
assert_equals(rule.overrideColors, "");
238238
});
239239

240240
test(function() {
241241
let text = rules[15].cssText;
242242
let rule = rules[15];
243243
assert_equals(text.indexOf("base-palette"), -1);
244244
assert_equals(text.indexOf("override-colors"), -1);
245-
assert_equals(rule.size, 0);
246245
assert_equals(rule.basePalette, "");
246+
assert_equals(rule.overrideColors, "");
247247
});
248248

249249
test(function() {
250250
let text = rules[16].cssText;
251251
let rule = rules[16];
252252
assert_equals(text.indexOf("base-palette"), -1);
253253
assert_equals(text.indexOf("override-colors"), -1);
254-
assert_equals(rule.size, 0);
255254
assert_equals(rule.basePalette, "");
255+
assert_equals(rule.overrideColors, "");
256256
});
257257

258258
test(function() {
@@ -264,8 +264,8 @@
264264
let rule = rules[17];
265265
assert_equals(text.indexOf("base-palette"), -1);
266266
assert_equals(text.indexOf("override-color"), -1);
267-
assert_equals(rule.size, 0);
268267
assert_equals(rule.basePalette, "");
268+
assert_equals(rule.overrideColors, "");
269269
});
270270
</script>
271271
</body>

LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
assert_equals(rule.name, "A");
112112
assert_equals(rule.fontFamily, "");
113113
assert_equals(rule.basePalette, "");
114-
assert_equals(rule.size, 0);
114+
assert_equals(rule.overrideColors, "");
115115
});
116116

117117
test(function() {
@@ -124,7 +124,7 @@
124124
assert_equals(rule.name, "B");
125125
assert_equals(rule.fontFamily, "");
126126
assert_equals(rule.basePalette, "");
127-
assert_equals(rule.size, 0);
127+
assert_equals(rule.overrideColors, "");
128128
});
129129

130130
test(function() {
@@ -144,7 +144,7 @@
144144
assert_equals(rule.name, "C");
145145
assert_equals(rule.fontFamily, "bar");
146146
assert_equals(rule.basePalette, "2");
147-
assert_equals(rule.size, 0);
147+
assert_equals(rule.overrideColors, "\"b\" rgb(17, 34, 51)");
148148
});
149149

150150
test(function() {
@@ -162,9 +162,9 @@
162162
assert_equals(rule.name, "D");
163163
assert_equals(rule.fontFamily, "");
164164
assert_equals(rule.basePalette, "bar");
165-
assert_equals(rule.size, 1);
166-
assert_equals(rule.get(7), undefined);
167-
assert_not_equals(rule.get(4).indexOf("rgb"), -1);
165+
assert_equals(rule.overrideColors.indexOf("),"), -1);
166+
assert_equals(rule.overrideColors.indexOf("4 "), 0);
167+
assert_not_equals(rule.overrideColors.indexOf("rgb"), -1);
168168
});
169169

170170
test(function() {
@@ -178,9 +178,9 @@
178178
assert_equals(rule.name, "E");
179179
assert_equals(rule.fontFamily, "");
180180
assert_equals(rule.basePalette, "");
181-
assert_equals(rule.size, 1);
182-
assert_equals(rule.get(7), undefined);
183-
assert_not_equals(rule.get(3).indexOf("102"), -1);
181+
assert_equals(rule.overrideColors.indexOf("),"), -1);
182+
assert_equals(rule.overrideColors.indexOf("3 "), 0);
183+
assert_not_equals(rule.overrideColors.indexOf("102"), -1);
184184
});
185185

186186
test(function() {
@@ -193,7 +193,7 @@
193193
assert_equals(rule.name, "F");
194194
assert_equals(rule.fontFamily, "foo");
195195
assert_equals(rule.basePalette, "");
196-
assert_equals(rule.size, 0);
196+
assert_equals(rule.overrideColors, "");
197197
});
198198

199199
test(function() {
@@ -207,10 +207,11 @@
207207
assert_equals(rule.name, "G");
208208
assert_equals(rule.fontFamily, "");
209209
assert_equals(rule.basePalette, "");
210-
assert_equals(rule.size, 2);
211-
assert_equals(rule.get(7), undefined);
212-
assert_not_equals(rule.get(3).indexOf("51"), -1);
213-
assert_not_equals(rule.get(4).indexOf("102"), -1);
210+
assert_equals(rule.overrideColors.split("),").length, 2);
211+
assert_equals(rule.overrideColors.indexOf("3 "), 0);
212+
assert_not_equals(rule.overrideColors.indexOf("), 4 "), -1);
213+
assert_not_equals(rule.overrideColors.indexOf("51"), -1);
214+
assert_not_equals(rule.overrideColors.indexOf("102"), -1);
214215
});
215216

216217
test(function() {
@@ -224,10 +225,11 @@
224225
assert_equals(rule.name, "H");
225226
assert_equals(rule.fontFamily, "");
226227
assert_equals(rule.basePalette, "");
227-
assert_equals(rule.size, 1);
228-
assert_equals(rule.get(7), undefined);
229-
assert_not_equals(rule.get(3).indexOf("102"), -1);
230-
assert_equals(rule.get(4), undefined);
228+
assert_not_equals(rule.overrideColors.indexOf("),"), -1);
229+
assert_equals(rule.overrideColors.indexOf("3 "), 0);
230+
assert_not_equals(rule.overrideColors.indexOf("), 3 "), -1);
231+
assert_not_equals(rule.overrideColors.indexOf("51"), -1);
232+
assert_not_equals(rule.overrideColors.indexOf("102"), -1);
231233
});
232234

233235
test(function() {
@@ -241,8 +243,8 @@
241243
assert_equals(rule.name, "I");
242244
assert_equals(rule.fontFamily, "");
243245
assert_equals(rule.basePalette, "");
244-
assert_equals(rule.size, 1);
245-
assert_equals(rule.get(0), "rgb(0, 0, 255)");
246+
assert_equals(rule.overrideColors.indexOf("),"), -1);
247+
assert_not_equals(rule.overrideColors.indexOf("rgb(0, 0, 255)"), -1);
246248
});
247249

248250
test(function() {
@@ -256,8 +258,8 @@
256258
assert_equals(rule.name, "J");
257259
assert_equals(rule.fontFamily, "");
258260
assert_equals(rule.basePalette, "");
259-
assert_equals(rule.size, 1);
260-
assert_equals(rule.get(0), "rgb(0, 128, 0)");
261+
assert_equals(rule.overrideColors.indexOf("),"), -1);
262+
assert_not_equals(rule.overrideColors.indexOf("rgb(0, 128, 0)"), -1);
261263
});
262264

263265
test(function() {
@@ -271,8 +273,8 @@
271273
assert_equals(rule.name, "K");
272274
assert_equals(rule.fontFamily, "");
273275
assert_equals(rule.basePalette, "");
274-
assert_equals(rule.size, 1);
275-
assert_equals(rule.get(0), "rgba(0, 0, 0, 0)");
276+
assert_equals(rule.overrideColors.indexOf("),"), -1);
277+
assert_not_equals(rule.overrideColors.indexOf("rgba(0, 0, 0, 0)"), -1);
276278
});
277279

278280
test(function() {
@@ -286,8 +288,8 @@
286288
assert_equals(rule.name, "L");
287289
assert_equals(rule.fontFamily, "");
288290
assert_equals(rule.basePalette, "");
289-
assert_equals(rule.size, 1);
290-
assert_not_equals(rule.get(0).indexOf("2"), -1);
291+
assert_equals(rule.overrideColors.indexOf("),"), -1);
292+
assert_not_equals(rule.overrideColors.indexOf("2"), -1);
291293
});
292294

293295
test(function() {
@@ -301,8 +303,8 @@
301303
assert_equals(rule.name, "M");
302304
assert_equals(rule.fontFamily, "");
303305
assert_equals(rule.basePalette, "");
304-
assert_equals(rule.size, 1);
305-
assert_not_equals(rule.get(0).indexOf("lab"), -1);
306+
assert_equals(rule.overrideColors.indexOf("),"), -1);
307+
assert_not_equals(rule.overrideColors.indexOf("lab"), -1);
306308
});
307309

308310
test(function() {
@@ -316,8 +318,8 @@
316318
assert_equals(rule.name, "N");
317319
assert_equals(rule.fontFamily, "");
318320
assert_equals(rule.basePalette, "");
319-
assert_equals(rule.size, 1);
320-
assert_not_equals(rule.get(0).indexOf("display-p3"), -1);
321+
assert_equals(rule.overrideColors.indexOf("),"), -1);
322+
assert_not_equals(rule.overrideColors.indexOf("display-p3"), -1);
321323
});
322324
</script>
323325
</body>

Source/WebCore/ChangeLog

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
2021-09-29 Myles C. Maxfield <[email protected]>
2+
3+
CSSFontPaletteValuesRule should not be maplike
4+
https://bugs.webkit.org/show_bug.cgi?id=230793
5+
<rdar://problem/83530242>
6+
7+
Reviewed by Wenson Hsieh.
8+
9+
The spec changed in
10+
https://github.com/w3c/csswg-drafts/commit/c10855a2c65f51a09697613b977059fae78ff0bc
11+
from "maplike<unsigned long, CSSOMString>" to "attribute CSSOMString overrideColor".
12+
13+
Tests: imported/w3c/web-platform-tests/css/css-fonts/parsing/font-palette-values-invalid.html
14+
imported/w3c/web-platform-tests/css/css-fonts/parsing/font-palette-values-valid.html
15+
16+
* css/CSSFontPaletteValuesRule.cpp:
17+
(WebCore::CSSFontPaletteValuesRule::basePalette const):
18+
(WebCore::CSSFontPaletteValuesRule::overrideColor const):
19+
(WebCore::CSSFontPaletteValuesRule::cssText const):
20+
(WebCore::CSSFontPaletteValuesRule::initializeMapLike): Deleted.
21+
* css/CSSFontPaletteValuesRule.h:
22+
* css/CSSFontPaletteValuesRule.idl:
23+
124
2021-09-29 Eric Carlson <[email protected]>
225

326
[Cocoa] Support in-band chapter tracks

Source/WebCore/css/CSSFontPaletteValuesRule.cpp

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,22 +58,30 @@ String CSSFontPaletteValuesRule::fontFamily() const
5858

5959
String CSSFontPaletteValuesRule::basePalette() const
6060
{
61-
return WTF::switchOn(m_fontPaletteValuesRule->basePalette(), [&](unsigned index) {
61+
return WTF::switchOn(m_fontPaletteValuesRule->basePalette(), [&] (unsigned index) {
6262
return makeString(index);
63-
}, [&](const AtomString& basePalette) -> String {
63+
}, [&] (const AtomString& basePalette) -> String {
6464
if (!basePalette.isNull())
6565
return basePalette.string();
6666
return StringImpl::empty();
6767
});
6868
}
6969

70-
void CSSFontPaletteValuesRule::initializeMapLike(DOMMapAdapter& map)
71-
{
72-
for (auto& pair : m_fontPaletteValuesRule->overrideColors()) {
73-
if (!WTF::holds_alternative<unsigned>(pair.first))
74-
continue;
75-
map.set<IDLUnsignedLong, IDLUSVString>(WTF::get<unsigned>(pair.first), serializationForCSS(pair.second));
70+
String CSSFontPaletteValuesRule::overrideColors() const
71+
{
72+
StringBuilder result;
73+
for (size_t i = 0; i < m_fontPaletteValuesRule->overrideColors().size(); ++i) {
74+
if (i)
75+
result.append(", ");
76+
const auto& item = m_fontPaletteValuesRule->overrideColors()[i];
77+
WTF::switchOn(item.first, [&] (const AtomString& string) {
78+
result.append(serializeString(string));
79+
}, [&] (int64_t index) {
80+
result.append(index);
81+
});
82+
result.append(' ', serializationForCSS(item.second));
7683
}
84+
return result.toString();
7785
}
7886

7987
String CSSFontPaletteValuesRule::cssText() const
@@ -82,9 +90,9 @@ String CSSFontPaletteValuesRule::cssText() const
8290
builder.append("@font-palette-values ", m_fontPaletteValuesRule->name(), " { ");
8391
if (!m_fontPaletteValuesRule->fontFamily().isNull())
8492
builder.append("font-family: ", m_fontPaletteValuesRule->fontFamily(), "; ");
85-
WTF::switchOn(m_fontPaletteValuesRule->basePalette(), [&](unsigned index) {
93+
WTF::switchOn(m_fontPaletteValuesRule->basePalette(), [&] (unsigned index) {
8694
builder.append("base-palette: ", index, "; ");
87-
}, [&](const AtomString& basePalette) {
95+
}, [&] (const AtomString& basePalette) {
8896
if (!basePalette.isNull())
8997
builder.append("base-palette: ", serializeString(basePalette.string()), "; ");
9098
});
@@ -94,9 +102,9 @@ String CSSFontPaletteValuesRule::cssText() const
94102
if (i)
95103
builder.append(',');
96104
builder.append(' ');
97-
WTF::switchOn(m_fontPaletteValuesRule->overrideColors()[i].first, [&](const AtomString& name) {
105+
WTF::switchOn(m_fontPaletteValuesRule->overrideColors()[i].first, [&] (const AtomString& name) {
98106
builder.append(serializeString(name.string()));
99-
}, [&](unsigned index) {
107+
}, [&] (unsigned index) {
100108
builder.append(index);
101109
});
102110
builder.append(' ', serializationForCSS(m_fontPaletteValuesRule->overrideColors()[i].second));

Source/WebCore/css/CSSFontPaletteValuesRule.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,7 @@ class CSSFontPaletteValuesRule final : public CSSRule {
4545
String name() const;
4646
String fontFamily() const;
4747
String basePalette() const;
48-
49-
void initializeMapLike(DOMMapAdapter&);
48+
String overrideColors() const;
5049

5150
private:
5251
CSSFontPaletteValuesRule(StyleRuleFontPaletteValues&, CSSStyleSheet* parent);

Source/WebCore/css/CSSFontPaletteValuesRule.idl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ typedef USVString CSSOMString;
2222
[
2323
Exposed=Window
2424
] interface CSSFontPaletteValuesRule : CSSRule {
25-
readonly maplike<unsigned long, CSSOMString>;
2625
readonly attribute CSSOMString name;
2726
readonly attribute CSSOMString fontFamily;
2827
readonly attribute CSSOMString basePalette;
28+
readonly attribute CSSOMString overrideColors;
2929
};
3030

0 commit comments

Comments
 (0)