- Revision
- 203269
- Author
- y...@yoav.ws
- Date
- 2016-07-14 22:49:36 -0700 (Thu, 14 Jul 2016)
Log Message
Change CSSParser::sourceSize returning Optional<CSSParser::SourceSize>
https://bugs.webkit.org/show_bug.cgi?id=159666
Reviewed by Michael Catanzaro.
Source/WebCore:
Tests:
fast/dom/HTMLImageElement/sizes/image-sizes-invalids.html
* css/CSSGrammar.y.in: Avoid adding SourceSize to source_size_list when the value is a Nullopt.
* css/CSSParser.cpp:
(WebCore::CSSParser::sourceSize): Return a Nullopt when an invalid value is encountered.
* css/CSSParser.h:
LayoutTests:
Added a test to make sure that an invalid source-size value is skipped, but the next one is properly picked.
* fast/dom/HTMLImageElement/sizes/image-sizes-invalids-expected.txt:
* fast/dom/HTMLImageElement/sizes/image-sizes-invalids.html:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (203268 => 203269)
--- trunk/LayoutTests/ChangeLog 2016-07-15 04:59:08 UTC (rev 203268)
+++ trunk/LayoutTests/ChangeLog 2016-07-15 05:49:36 UTC (rev 203269)
@@ -1,3 +1,15 @@
+2016-07-14 Yoav Weiss <y...@yoav.ws>
+
+ Change CSSParser::sourceSize returning Optional<CSSParser::SourceSize>
+ https://bugs.webkit.org/show_bug.cgi?id=159666
+
+ Reviewed by Michael Catanzaro.
+
+ Added a test to make sure that an invalid source-size value is skipped, but the next one is properly picked.
+
+ * fast/dom/HTMLImageElement/sizes/image-sizes-invalids-expected.txt:
+ * fast/dom/HTMLImageElement/sizes/image-sizes-invalids.html:
+
2016-07-14 Antonio Gomes <toniki...@igalia.com>
[RTL Scrollbars] Frame scrollbars don't move to the right when text direction changes to RTL
Modified: trunk/LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-invalids-expected.txt (203268 => 203269)
--- trunk/LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-invalids-expected.txt 2016-07-15 04:59:08 UTC (rev 203268)
+++ trunk/LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-invalids-expected.txt 2016-07-15 05:49:36 UTC (rev 203269)
@@ -16,7 +16,9 @@
PASS currentSrcFileName(elementId) is "image-set-2x.png"
PASS document.getElementById(elementId).clientWidth is 800
PASS currentSrcFileName(elementId) is "image-set-2x.png"
+PASS document.getElementById(elementId).clientWidth is 1600
+PASS currentSrcFileName(elementId) is "image-set-4x.png"
PASS successfullyParsed is true
TEST COMPLETE
-
+
Modified: trunk/LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-invalids.html (203268 => 203269)
--- trunk/LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-invalids.html 2016-07-15 04:59:08 UTC (rev 203268)
+++ trunk/LayoutTests/fast/dom/HTMLImageElement/sizes/image-sizes-invalids.html 2016-07-15 05:49:36 UTC (rev 203269)
@@ -12,6 +12,9 @@
shouldBe('document.getElementById(elementId).clientWidth', '800');
shouldBe('currentSrcFileName(elementId)', '"image-set-2x.png"');
}
+ elementId = "crash10";
+ shouldBe('document.getElementById(elementId).clientWidth', '1600');
+ shouldBe('currentSrcFileName(elementId)', '"image-set-4x.png"');
}, false);
</script>
<!-- crash tests -->
@@ -24,3 +27,4 @@
<img id="crash7" sizes="calc(2px+dfmjbsf,,,skidkk)" srcset="../../../hidpi/resources/image-set-2x.png 800w, ../resources/image-set-4x.png 16000w">
<img id="crash8" sizes="calc(2px+dfmjbsf,,,skidkk) + 2px, 56px" srcset="../../../hidpi/resources/image-set-2x.png 800w, ../resources/image-set-4x.png 16000w">
<img id="crash9" sizes="1dpi" srcset="../../../hidpi/resources/image-set-2x.png 800w, ../resources/image-set-4x.png 16000w">
+<img id="crash10" sizes="(max-width: 10px) 1hz, 1600px" srcset="../../../hidpi/resources/image-set-2x.png 800w, ../resources/image-set-4x.png 1600w">
Modified: trunk/Source/WebCore/ChangeLog (203268 => 203269)
--- trunk/Source/WebCore/ChangeLog 2016-07-15 04:59:08 UTC (rev 203268)
+++ trunk/Source/WebCore/ChangeLog 2016-07-15 05:49:36 UTC (rev 203269)
@@ -1,3 +1,18 @@
+2016-07-14 Yoav Weiss <y...@yoav.ws>
+
+ Change CSSParser::sourceSize returning Optional<CSSParser::SourceSize>
+ https://bugs.webkit.org/show_bug.cgi?id=159666
+
+ Reviewed by Michael Catanzaro.
+
+ Tests:
+ fast/dom/HTMLImageElement/sizes/image-sizes-invalids.html
+
+ * css/CSSGrammar.y.in: Avoid adding SourceSize to source_size_list when the value is a Nullopt.
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::sourceSize): Return a Nullopt when an invalid value is encountered.
+ * css/CSSParser.h:
+
2016-07-14 Antonio Gomes <toniki...@igalia.com>
[RTL Scrollbars] Frame scrollbars don't move to the right when text direction changes to RTL
Modified: trunk/Source/WebCore/css/CSSGrammar.y.in (203268 => 203269)
--- trunk/Source/WebCore/css/CSSGrammar.y.in 2016-07-15 04:59:08 UTC (rev 203268)
+++ trunk/Source/WebCore/css/CSSGrammar.y.in 2016-07-15 05:49:36 UTC (rev 203269)
@@ -576,12 +576,14 @@
source_size_list:
maybe_source_media_query_expression source_size_length {
$$ = new Vector<CSSParser::SourceSize>;
- $$->append(parser->sourceSize(WTFMove(*$1), $2));
+ if (auto result = parser->sourceSize(WTFMove(*$1), $2))
+ $$->append(WTFMove(result.value()));
delete $1;
}
| source_size_list maybe_space ',' maybe_space maybe_source_media_query_expression source_size_length {
$$ = $1;
- $$->append(parser->sourceSize(WTFMove(*$5), $6));
+ if (auto result = parser->sourceSize(WTFMove(*$5), $6))
+ $$->append(WTFMove(result.value()));
delete $5;
}
;
Modified: trunk/Source/WebCore/css/CSSParser.cpp (203268 => 203269)
--- trunk/Source/WebCore/css/CSSParser.cpp 2016-07-15 04:59:08 UTC (rev 203268)
+++ trunk/Source/WebCore/css/CSSParser.cpp 2016-07-15 05:49:36 UTC (rev 203269)
@@ -1544,7 +1544,7 @@
{
}
-CSSParser::SourceSize CSSParser::sourceSize(MediaQueryExpression&& _expression_, CSSParserValue& parserValue)
+Optional<CSSParser::SourceSize> CSSParser::sourceSize(MediaQueryExpression&& _expression_, CSSParserValue& parserValue)
{
RefPtr<CSSValue> value;
if (isCalculation(parserValue)) {
@@ -1552,12 +1552,11 @@
if (args && args->size())
value = CSSCalcValue::create(parserValue.function->name, *args, CalculationRangeNonNegative);
}
- if (!value) {
+ if (!value)
value = parserValue.createCSSValue();
- if (!value)
- value = CSSPrimitiveValue::create(0, CSSPrimitiveValue::CSS_UNKNOWN);
- }
destroy(parserValue);
+ if (!value)
+ return Nullopt;
// FIXME: Calling the constructor explicitly here to work around an MSVC bug.
// For other compilers, we did not need to define the constructors and we could use aggregate initialization syntax.
return SourceSize(WTFMove(_expression_), value.releaseNonNull());
Modified: trunk/Source/WebCore/css/CSSParser.h (203268 => 203269)
--- trunk/Source/WebCore/css/CSSParser.h 2016-07-15 04:59:08 UTC (rev 203268)
+++ trunk/Source/WebCore/css/CSSParser.h 2016-07-15 05:49:36 UTC (rev 203269)
@@ -176,7 +176,7 @@
SourceSize(MediaQueryExpression&&, Ref<CSSValue>&&);
};
Vector<SourceSize> parseSizesAttribute(StringView);
- SourceSize sourceSize(MediaQueryExpression&&, CSSParserValue&);
+ Optional<SourceSize> sourceSize(MediaQueryExpression&&, CSSParserValue&);
bool parseFillImage(CSSParserValueList&, RefPtr<CSSValue>&);