Changeset 23854 in webkit


Ignore:
Timestamp:
Jun 28, 2007 9:00:29 AM (17 years ago)
Author:
rwlbuis
Message:

Reviewed by Maciej.

http://bugs.webkit.org/show_bug.cgi?id=14373
CSS1: selectors (classes and IDs) cannot start with a dash or with a digit

Make sure the id selector validates against the CSS2.1 identfier
definition, not the hexcolor/HASH definition.

Location:
trunk
Files:
4 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r23850 r23854  
     12007-06-28  Rob Buis  <buis@kde.org>
     2
     3        Reviewed by Maciej.
     4
     5        http://bugs.webkit.org/show_bug.cgi?id=14373
     6        CSS1: selectors (classes and IDs) cannot start with a dash or with a digit
     7
     8        These are improvements due to stricter id selector checking.
     9
     10        * css2.1/css1_forward_compatible_parsing-expected.checksum: Added.
     11        * css2.1/css1_forward_compatible_parsing-expected.png: Added.
     12        * css2.1/css1_forward_compatible_parsing-expected.txt: Added.
     13        * css2.1/css1_forward_compatible_parsing.html: Added.
     14        * css2.1/t040103-ident-08-c-expected.checksum:
     15        * css2.1/t040103-ident-08-c-expected.png:
     16        * css2.1/t040103-ident-08-c-expected.txt:
     17        * css2.1/t0509-id-sel-syntax-01-f-expected.checksum:
     18        * css2.1/t0509-id-sel-syntax-01-f-expected.png:
     19        * css2.1/t0509-id-sel-syntax-01-f-expected.txt:
     20
    1212007-06-28  Antti Koivisto  <antti@apple.com>
    222
  • trunk/LayoutTests/css2.1/t040103-ident-08-c-expected.checksum

    r18637 r23854  
    1 527466bfe479dba986be26455d5097c7
     1cf6d4663f13ae5ddae0293140bbd41ac
  • trunk/LayoutTests/css2.1/t040103-ident-08-c-expected.txt

    r18637 r23854  
    77        RenderText {#text} at (0,0) size 136x18
    88          text run at (0,0) width 136: "This should be green."
    9       RenderBlock {P} at (0,34) size 784x18 [color=#FF0000] [bgcolor=#FFFFFF]
     9      RenderBlock {P} at (0,34) size 784x18 [color=#008000] [bgcolor=#FFFFFF]
    1010        RenderText {#text} at (0,0) size 136x18
    1111          text run at (0,0) width 136: "This should be green."
  • trunk/LayoutTests/css2.1/t0509-id-sel-syntax-01-f-expected.checksum

    r18637 r23854  
    1 495eb5e95a0cc013039e9288c322af98
     19639d8028649f506d5f3d48c465eb0cc
  • trunk/LayoutTests/css2.1/t0509-id-sel-syntax-01-f-expected.txt

    r18637 r23854  
    55    RenderBody {BODY} at (8,16) size 784x18
    66      RenderBlock {DIV} at (0,0) size 784x18 [color=#008000]
    7         RenderBlock {P} at (0,0) size 784x18 [color=#FF0000]
     7        RenderBlock {P} at (0,0) size 784x18
    88          RenderText {#text} at (0,0) size 159x18
    99            text run at (0,0) width 159: "This text should be green"
  • trunk/WebCore/ChangeLog

    r23851 r23854  
     12007-06-28  Rob Buis  <buis@kde.org>
     2
     3        Reviewed by Maciej.
     4
     5        http://bugs.webkit.org/show_bug.cgi?id=14373
     6        CSS1: selectors (classes and IDs) cannot start with a dash or with a digit
     7
     8        Make sure the id selector validates against the CSS2.1 identfier
     9        definition, not the hexcolor/HASH definition.
     10
     11        * css/CSSGrammar.y:
     12        * css/cssparser.cpp:
     13        (WebCore::CSSParser::lex):
     14        (WebCore::CSSParser::text):
     15        * css/tokenizer.flex:
     16
    1172007-06-28  Simon Hausmann  <hausmann@kde.org>
    218
  • trunk/WebCore/css/CSSGrammar.y

    r21770 r23854  
    173173%right <string> IDENT
    174174
    175 %nonassoc <string> HASH
     175%nonassoc <string> HEX_OR_IDENT
     176%nonassoc <string> IDSEL
    176177%nonassoc ':'
    177178%nonassoc '.'
     
    741742
    742743specifier:
    743     HASH {
     744    HEX_OR_IDENT {
     745        CSSParser* p = static_cast<CSSParser*>(parser);
     746        $$ = p->createFloatingSelector();
     747        $$->m_match = CSSSelector::Id;
     748        if (!p->strict)
     749            $1.lower();
     750        $$->m_attr = idAttr;
     751        $$->m_value = atomicString($1);
     752    }
     753  | IDSEL {
    744754        CSSParser* p = static_cast<CSSParser*>(parser);
    745755        $$ = p->createFloatingSelector();
     
    11151125 */
    11161126hexcolor:
    1117   HASH maybe_space { $$ = $1; }
     1127  HEX_OR_IDENT maybe_space { $$ = $1; }
    11181128  ;
    11191129
  • trunk/WebCore/css/cssparser.cpp

    r23847 r23854  
    29902990    case STRING:
    29912991    case IDENT:
    2992     case HASH:
     2992    case HEX_OR_IDENT:
     2993    case IDSEL:
    29932994    case DIMEN:
    29942995    case UNICODERANGE:
     
    30623063        l--;
    30633064        /* nobreak */
    3064     case HASH:
     3065    case HEX_OR_IDENT:
     3066    case IDSEL:
    30653067        start++;
    30663068        l--;
  • trunk/WebCore/css/tokenizer.flex

    r15702 r23854  
    1313string1         \"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\"
    1414string2         \'([\t !#$%&(-~]|\\{nl}|\"|{nonascii}|{escape})*\'
     15hexcolor        {h}{3}|{h}{6}
    1516
    1617ident           -?{nmstart}{nmchar}*
     
    4546{ident}                 {yyTok = IDENT; return yyTok;}
    4647
    47 "#"{name}               {yyTok = HASH; return yyTok;}
     48"#"{hexcolor}           {yyTok = HEX_OR_IDENT; return yyTok;}
     49"#"{ident}              {yyTok = IDSEL; return yyTok;}
    4850
    4951"@import"               {BEGIN(mediaquery); yyTok = IMPORT_SYM; return yyTok;}
Note: See TracChangeset for help on using the changeset viewer.