Commit 1378e492 authored by Xiaocheng Hu's avatar Xiaocheng Hu Committed by Commit Bot

Properly hide 'advance-override' behind flag

crrev.com/c/2415244 introduced a new runtime flag for 'advance-override'
but didn't properly handle it in the parser. As a result, the descriptor
is leaked to web.

This patch fixes the parser to make sure it's properly hidden behind the
flag.

Bug: 1137624
Change-Id: I69f161932aede553b1cb31b181187e687eba1df0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2466979Reviewed-by: default avatarRune Lillesveen <futhark@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816628}
parent 4a0a5d1d
...@@ -205,7 +205,7 @@ CSSValue* ConsumeFontMetricOverride(CSSParserTokenRange& range, ...@@ -205,7 +205,7 @@ CSSValue* ConsumeFontMetricOverride(CSSParserTokenRange& range,
CSSValue* ConsumeAdvanceOverride(CSSParserTokenRange& range, CSSValue* ConsumeAdvanceOverride(CSSParserTokenRange& range,
const CSSParserContext& context) { const CSSParserContext& context) {
if (!RuntimeEnabledFeatures::CSSFontMetricsOverrideEnabled()) if (!RuntimeEnabledFeatures::CSSFontFaceAdvanceOverrideEnabled())
return nullptr; return nullptr;
return css_parsing_utils::ConsumeNumber(range, context, kValueRangeAll); return css_parsing_utils::ConsumeNumber(range, context, kValueRangeAll);
} }
......
...@@ -3241,6 +3241,34 @@ TEST_F(StyleEngineTest, MediaAttributeChangeUpdatesFontCacheVersion) { ...@@ -3241,6 +3241,34 @@ TEST_F(StyleEngineTest, MediaAttributeChangeUpdatesFontCacheVersion) {
UpdateAllLifecyclePhases(); UpdateAllLifecyclePhases();
} }
// https://crbug.com/1137624
TEST_F(StyleEngineTest, DisabledAdvanceOverrideDescriptor) {
ScopedCSSFontFaceAdvanceOverrideForTest advance_override_disabled(false);
GetDocument().body()->setInnerHTML(R"HTML(
<style>
@font-face {
font-family: custom-font;
src: url(fake-font.woff);
advance-override: 0.1;
}
</style>
)HTML");
// Shouldn't crash.
UpdateAllLifecyclePhases();
// 'advance-override' should be ignored when disabled.
const FontFace* font_face = GetStyleEngine()
.GetFontSelector()
->GetFontFaceCache()
->CssConnectedFontFaces()
.front()
.Get();
ASSERT_TRUE(font_face);
EXPECT_FALSE(font_face->HasFontMetricsOverride());
}
class StyleEngineSimTest : public SimTest {}; class StyleEngineSimTest : public SimTest {};
TEST_F(StyleEngineSimTest, OwnerColorScheme) { TEST_F(StyleEngineSimTest, OwnerColorScheme) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment