From 8bdec99ae9e5daf71fd2fb73c098661e08637f3e Mon Sep 17 00:00:00 2001 From: ap Date: Sat, 13 May 2006 15:11:29 +0000 Subject: [PATCH] 2006-05-13 Rob Buis Reviewed by Darin, landed by ap. Fix for http://bugzilla.opendarwin.org/show_bug.cgi?id=8132 CSS parser sometimes accepts real number as integer Add a boolean variable per css value to catch whether values are specified as floats or integers. Test: fast/css/rgb-float.html * css/CSSGrammar.y: * css/cssparser.cpp: (WebCore::CSSParser::validUnit): (WebCore::CSSParser::lex): * css/cssparser.h: * css/tokenizer.flex: git-svn-id: https://svn.webkit.org/repository/webkit/trunk@14352 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- LayoutTests/ChangeLog | 12 +++++++++++ .../fast/css/rgb-float-expected.checksum | 1 + LayoutTests/fast/css/rgb-float-expected.png | Bin 0 -> 15900 bytes LayoutTests/fast/css/rgb-float-expected.txt | 11 ++++++++++ LayoutTests/fast/css/rgb-float.html | 20 ++++++++++++++++++ WebCore/ChangeLog | 19 +++++++++++++++++ WebCore/css/CSSGrammar.y | 6 ++++-- WebCore/css/cssparser.cpp | 6 +++--- WebCore/css/cssparser.h | 1 + WebCore/css/tokenizer.flex | 4 +++- 10 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 LayoutTests/fast/css/rgb-float-expected.checksum create mode 100644 LayoutTests/fast/css/rgb-float-expected.png create mode 100644 LayoutTests/fast/css/rgb-float-expected.txt create mode 100644 LayoutTests/fast/css/rgb-float.html diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog index 9e27f41b9b3f..4e8c7df8018f 100644 --- a/LayoutTests/ChangeLog +++ b/LayoutTests/ChangeLog @@ -1,3 +1,15 @@ +2006-05-13 Rob Buis + + Reviewed by Darin, landed by ap. + + - test for http://bugzilla.opendarwin.org/show_bug.cgi?id=8132 + CSS parser sometimes accepts real number as integer + + * fast/css/rgb-float.html: Added. + * fast/css/rgb-float-expected.txt: Added. + * fast/css/rgb-float-expected.png: Added. + * fast/css/rgb-float-expected.checksum: Added. + 2006-05-13 Sam Weinig Reviewed by Hyatt, landed by ap. diff --git a/LayoutTests/fast/css/rgb-float-expected.checksum b/LayoutTests/fast/css/rgb-float-expected.checksum new file mode 100644 index 000000000000..80166e525559 --- /dev/null +++ b/LayoutTests/fast/css/rgb-float-expected.checksum @@ -0,0 +1 @@ +42e883abb1ec53dfb3c9ef467f7abcc4 \ No newline at end of file diff --git a/LayoutTests/fast/css/rgb-float-expected.png b/LayoutTests/fast/css/rgb-float-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f95f7ceb2446663a549d170955bcc4c7a97103 GIT binary patch literal 15900 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 literal 0 HcmV?d00001 diff --git a/LayoutTests/fast/css/rgb-float-expected.txt b/LayoutTests/fast/css/rgb-float-expected.txt new file mode 100644 index 000000000000..fa54dc3b2f2c --- /dev/null +++ b/LayoutTests/fast/css/rgb-float-expected.txt @@ -0,0 +1,11 @@ +layer at (0,0) size 800x600 + RenderCanvas at (0,0) size 800x600 +layer at (0,0) size 800x137 + RenderBlock {HTML} at (0,0) size 800x137 + RenderBody {BODY} at (8,21) size 784x95 [color=#008000] + RenderBlock {H1} at (0,0) size 784x37 + RenderText {#text} at (0,0) size 398x37 + text run at (0,0) width 398: "This should be green, not red" + RenderBlock {H1} at (0,58) size 784x37 + RenderText {#text} at (0,0) size 411x37 + text run at (0,0) width 411: "This should be green, not blue" diff --git a/LayoutTests/fast/css/rgb-float.html b/LayoutTests/fast/css/rgb-float.html new file mode 100644 index 000000000000..8e91e1a90677 --- /dev/null +++ b/LayoutTests/fast/css/rgb-float.html @@ -0,0 +1,20 @@ + + + + + + +CSS 2.1 Test Suite: RGB color syntax error handling + + + + + +

This should be green, not red

+

This should be green, not blue

+ + diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog index b8fb31f6c6a5..ed8869266085 100644 --- a/WebCore/ChangeLog +++ b/WebCore/ChangeLog @@ -1,3 +1,22 @@ +2006-05-13 Rob Buis + + Reviewed by Darin, landed by ap. + + Fix for http://bugzilla.opendarwin.org/show_bug.cgi?id=8132 + CSS parser sometimes accepts real number as integer + + Add a boolean variable per css value to catch whether values + are specified as floats or integers. + + Test: css2.1/rgb-float.html + + * css/CSSGrammar.y: + * css/cssparser.cpp: + (WebCore::CSSParser::validUnit): + (WebCore::CSSParser::lex): + * css/cssparser.h: + * css/tokenizer.flex: + 2006-05-13 Sam Weinig Reviewed by Hyatt, landed by ap. diff --git a/WebCore/css/CSSGrammar.y b/WebCore/css/CSSGrammar.y index 2a58c1821159..969a9f1bbff1 100644 --- a/WebCore/css/CSSGrammar.y +++ b/WebCore/css/CSSGrammar.y @@ -198,7 +198,8 @@ static int cssyylex(YYSTYPE *yylval) { return CSSParser::current()->lex(yylval); %token KHERZ %token DIMEN %token PERCENTAGE -%token NUMBER +%token FLOAT +%token INTEGER %token URI %token FUNCTION @@ -923,7 +924,8 @@ term: ; unary_term: - NUMBER maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_NUMBER; } + INTEGER maybe_space { $$.id = 0; $$.isInt = true; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_NUMBER; } + | FLOAT maybe_space { $$.id = 0; $$.isInt = false; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_NUMBER; } | PERCENTAGE maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_PERCENTAGE; } | PXS maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_PX; } | CMS maybe_space { $$.id = 0; $$.fValue = $1; $$.unit = CSSPrimitiveValue::CSS_CM; } diff --git a/WebCore/css/cssparser.cpp b/WebCore/css/cssparser.cpp index 6858c72df76e..fb4e466cb091 100644 --- a/WebCore/css/cssparser.cpp +++ b/WebCore/css/cssparser.cpp @@ -325,8 +325,7 @@ bool CSSParser::validUnit(Value* value, Units unitflags, bool strict) value->unit = CSSPrimitiveValue::CSS_PX; b = true; } - if (!b && (unitflags & FInteger) && - (value->fValue - (int)value->fValue) < 0.001) + if (!b && (unitflags & FInteger) && value->isInt) b = true; break; case CSSPrimitiveValue::CSS_PERCENTAGE: @@ -2638,7 +2637,8 @@ int CSSParser::lex(void* yylvalWithoutType) case SECS: case PERCENTAGE: length--; - case NUMBER: + case FLOAT: + case INTEGER: yylval->val = DeprecatedString((QChar *)t, length).toDouble(); break; diff --git a/WebCore/css/cssparser.h b/WebCore/css/cssparser.h index fc9cae4d050b..d68a7e264080 100644 --- a/WebCore/css/cssparser.h +++ b/WebCore/css/cssparser.h @@ -55,6 +55,7 @@ namespace WebCore { struct Value { int id; + bool isInt; union { double fValue; int iValue; diff --git a/WebCore/css/tokenizer.flex b/WebCore/css/tokenizer.flex index 5b1c74b0168d..c61e80ad8aaf 100644 --- a/WebCore/css/tokenizer.flex +++ b/WebCore/css/tokenizer.flex @@ -14,6 +14,7 @@ string2 \'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\' ident -?{nmstart}{nmchar}* name {nmchar}+ num [0-9]+|[0-9]*"."[0-9]+ +intnum [0-9]+ string {string1}|{string2} url ([!#$%&*-~]|{nonascii}|{escape})* w [ \t\r\n\f]* @@ -70,7 +71,8 @@ range \?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??| {num}kHz {yyTok = KHERZ; return yyTok;} {num}{ident} {yyTok = DIMEN; return yyTok;} {num}%+ {yyTok = PERCENTAGE; return yyTok;} -{num} {yyTok = NUMBER; return yyTok;} +{intnum} {yyTok = INTEGER; return yyTok;} +{num} {yyTok = FLOAT; return yyTok;} "url("{w}{string}{w}")" {yyTok = URI; return yyTok;} "url("{w}{url}{w}")" {yyTok = URI; return yyTok;} -- 2.36.0