Index: Source/core/css/CSSGrammar.y |
diff --git a/Source/core/css/CSSGrammar.y b/Source/core/css/CSSGrammar.y |
index 97d1672e06a11feead3e4e79a15d887a78189d15..8870a84ba5d61f28cdfdf93bc1ab1ea8b4465946 100644 |
--- a/Source/core/css/CSSGrammar.y |
+++ b/Source/core/css/CSSGrammar.y |
@@ -346,6 +346,8 @@ inline static CSSParserValue makeIdentValue(CSSParserString string) |
%type <integer> match |
%type <integer> unary_operator |
%type <integer> maybe_unary_operator |
+%type <integer> attr_flags |
+%type <integer> maybe_attr_flags |
%type <character> operator |
%type <valueList> expr |
@@ -1240,26 +1242,40 @@ attr_name: |
} |
; |
+attr_flags: |
+ IDENT maybe_space { |
+ unsigned flags; |
+ if (!parser->parseAttributeFlags(flags, $1)) |
+ YYERROR; |
+ $$ = flags; |
+ } |
+ ; |
+ |
+maybe_attr_flags: |
+ attr_flags |
+ | /* empty */ { $$ = CSSSelector::NoAttributeFlags; } |
+ ; |
+ |
attrib: |
'[' maybe_space attr_name closing_square_bracket { |
$$ = parser->createFloatingSelector(); |
- $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); |
+ $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom), CSSSelector::NoAttributeFlags); |
$$->setMatch(CSSSelector::Set); |
} |
- | '[' maybe_space attr_name match maybe_space ident_or_string maybe_space closing_square_bracket { |
+ | '[' maybe_space attr_name match maybe_space ident_or_string maybe_space maybe_attr_flags closing_square_bracket { |
$$ = parser->createFloatingSelector(); |
- $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom)); |
+ $$->setAttribute(QualifiedName(nullAtom, $3, nullAtom), $8); |
$$->setMatch((CSSSelector::Match)$4); |
$$->setValue($6); |
} |
| '[' maybe_space namespace_selector attr_name closing_square_bracket { |
$$ = parser->createFloatingSelector(); |
- $$->setAttribute(parser->determineNameInNamespace($3, $4)); |
+ $$->setAttribute(parser->determineNameInNamespace($3, $4), CSSSelector::NoAttributeFlags); |
$$->setMatch(CSSSelector::Set); |
} |
- | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_string maybe_space closing_square_bracket { |
+ | '[' maybe_space namespace_selector attr_name match maybe_space ident_or_string maybe_space maybe_attr_flags closing_square_bracket { |
$$ = parser->createFloatingSelector(); |
- $$->setAttribute(parser->determineNameInNamespace($3, $4)); |
+ $$->setAttribute(parser->determineNameInNamespace($3, $4), $9); |
$$->setMatch((CSSSelector::Match)$5); |
$$->setValue($7); |
} |