[webkit-changes] cvs commit: WebCore/khtml/css css_base.cpp css_ruleimpl.cpp

Timothy thatcher at opensource.apple.com
Mon Dec 12 14:22:22 PST 2005


thatcher    05/12/12 14:22:22

  Modified:    .        ChangeLog
               .        ChangeLog
               khtml/css css_base.cpp css_ruleimpl.cpp
  Added:       fast/dom css-selectorText-expected.checksum
                        css-selectorText-expected.png
                        css-selectorText-expected.txt css-selectorText.html
  Log:
  LayoutTests:
  
          Reviewed by Hyatt.
  
          Test case for our CSS seletorText serialization.
  
          * fast/dom/css-selectorText-expected.checksum: Added.
          * fast/dom/css-selectorText-expected.png: Added.
          * fast/dom/css-selectorText-expected.txt: Added.
          * fast/dom/css-selectorText.html: Added.
  
  WebCore:
  
          Reviewed by Dave Hyatt.
  
          Test: fast/dom/css-selectorText.html
  
          Fixes selecotrText serialization to only print "*"
          when it is stand alone. Fixes the attribute set selector,
          along with general cleanup. Also print chained selectors.
  
          * khtml/css/css_base.cpp:
          (CSSSelector::extractPseudoType):
          (CSSSelector::selectorText):
          * khtml/css/css_ruleimpl.cpp:
          (DOM::CSSStyleRuleImpl::selectorText):
  
  Revision  Changes    Path
  1.145     +11 -0     LayoutTests/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/LayoutTests/ChangeLog,v
  retrieving revision 1.144
  retrieving revision 1.145
  diff -u -r1.144 -r1.145
  --- ChangeLog	12 Dec 2005 19:20:10 -0000	1.144
  +++ ChangeLog	12 Dec 2005 22:22:16 -0000	1.145
  @@ -1,3 +1,14 @@
  +2005-12-12  Timothy Hatcher  <timothy at apple.com>
  +
  +        Reviewed by Hyatt.
  +
  +        Test case for our CSS seletorText serialization.
  +
  +        * fast/dom/css-selectorText-expected.checksum: Added.
  +        * fast/dom/css-selectorText-expected.png: Added.
  +        * fast/dom/css-selectorText-expected.txt: Added.
  +        * fast/dom/css-selectorText.html: Added.
  +
   2005-12-12  Eric Seidel  <eseidel at apple.com>
   
           Reviewed by ggaren.
  
  
  
  1.1                  LayoutTests/fast/dom/css-selectorText-expected.checksum
  
  Index: css-selectorText-expected.checksum
  ===================================================================
  640609fe21178e25fe100e7b1622f885
  
  
  1.1                  LayoutTests/fast/dom/css-selectorText-expected.png
  
  	<<Binary file>>
  
  
  1.1                  LayoutTests/fast/dom/css-selectorText-expected.txt
  
  Index: css-selectorText-expected.txt
  ===================================================================
  layer at (0,0) size 800x600
    RenderCanvas at (0,0) size 800x600
  layer at (2,2) size 796x596
    RenderBlock {HTML} at (2,2) size 796x596
      RenderBody {BODY} at (2,2) size 792x592
        RenderBlock {PRE} at (2,0) size 788x270
          RenderText {TEXT} at (0,0) size 208x270
            text run at (0,0) width 8: "*"
            text run at (0,15) width 24: "div"
            text run at (0,30) width 64: "div span"
            text run at (0,45) width 80: "div ~ span"
            text run at (0,60) width 80: "div > span"
            text run at (0,75) width 80: "div + span"
            text run at (0,90) width 40: "#temp"
            text run at (0,105) width 64: "div#temp"
            text run at (0,120) width 176: "div.test[title=\"test\"]"
            text run at (0,135) width 160: ".test[title~=\"test\"]"
            text run at (0,150) width 168: "div > [title|=\"test\"]"
            text run at (0,165) width 184: "div.test[title^=\"test\"]"
            text run at (0,180) width 192: "span#test[title$=\"test\"]"
            text run at (0,195) width 208: "span[title*=\"test\"]::after"
            text run at (0,210) width 80: "div[title]"
            text run at (0,225) width 56: "[title]"
            text run at (0,240) width 48: "a:link"
            text run at (0,255) width 192: "div, span > div:hover, a"
  
  
  
  1.1                  LayoutTests/fast/dom/css-selectorText.html
  
  Index: css-selectorText.html
  ===================================================================
  <html>
  <head>
  <style>
  * { margin: 2px; }
  div { margin: 2px; }
  div span { margin 2px; }
  div ~ span { margin 2px; }
  div > span { margin 2px; }
  div + span { margin 2px; }
  #temp { margin 2px; }
  div#temp { margin 2px; }
  div.test[title="test"] { margin: 2px; }
  .test[title~="test"] { margin: 2px; }
  div > [title|="test"] { margin: 2px; }
  div.test[title^="test"] { margin: 2px; }
  span#test[title$="test"] { margin: 2px; }
  span[title*="test"]::after { margin: 2px; }
  div[title] { margin: 2px; }
  [title] { margin: 2px; }
  a:link { margin: 2px; }
  div, span > div:hover, a { margin: 2px; }
  </style>
  </head>
  <body>
  <pre id="result"></pre>
  <script>
  var styleSheet = document.styleSheets.item(0);
  var s = "";
  for (var i = 0; i < styleSheet.cssRules.length; i++) {
  	var rule = styleSheet.cssRules[i];
  	s += rule.selectorText + "\n";
  }
  document.getElementById("result").innerText = s;
  </script>
  </body>
  </html>
  
  
  
  1.516     +16 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.515
  retrieving revision 1.516
  diff -u -r1.515 -r1.516
  --- ChangeLog	12 Dec 2005 19:22:11 -0000	1.515
  +++ ChangeLog	12 Dec 2005 22:22:18 -0000	1.516
  @@ -1,3 +1,19 @@
  +2005-12-12  Timothy Hatcher  <timothy at apple.com>
  +
  +        Reviewed by Dave Hyatt.
  +
  +        Test: fast/dom/css-selectorText.html
  +
  +        Fixes selecotrText serialization to only print "*"
  +        when it is stand alone. Fixes the attribute set selector,
  +        along with general cleanup. Also print chained selectors.
  +
  +        * khtml/css/css_base.cpp:
  +        (CSSSelector::extractPseudoType):
  +        (CSSSelector::selectorText):
  +        * khtml/css/css_ruleimpl.cpp:
  +        (DOM::CSSStyleRuleImpl::selectorText):
  +
   2005-12-12  Eric Seidel  <eseidel at apple.com>
   
           Reviewed by ggaren.
  
  
  
  1.24      +25 -57    WebCore/khtml/css/css_base.cpp
  
  Index: css_base.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/css/css_base.cpp,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- css_base.cpp	26 Oct 2005 19:44:03 -0000	1.23
  +++ css_base.cpp	12 Dec 2005 22:22:21 -0000	1.24
  @@ -236,7 +236,6 @@
              match = PseudoElement;
       else if (match == PseudoElement && !element)
           _pseudoType = PseudoOther;
  -    value = nullAtom;
   }
   
   
  @@ -265,64 +264,32 @@
       DOMString str;
       const CSSSelector* cs = this;
       const AtomicString& localName = cs->tag.localName();
  -    if (localName == starAtom && cs->match == CSSSelector::Id)
  -    {
  -        str = "#";
  +    if (cs->match == CSSSelector::None || localName != starAtom)
  +        str = localName;
  +    if (cs->match == CSSSelector::Id) {
  +        str += "#";
           str += cs->value.qstring();
  -    }
  -    else if (localName == starAtom && cs->match == CSSSelector::Class)
  -    {
  -        str = ".";
  +    } else if (cs->match == CSSSelector::Class) {
  +        str += ".";
           str += cs->value.qstring();
  -    }
  -    else if (localName == starAtom  && cs->match == CSSSelector::PseudoClass)
  -    {
  -        str = ":";
  +    } else if (cs->match == CSSSelector::PseudoClass) {
  +        str += ":";
           str += cs->value.qstring();
  -    }
  -    else if (localName == starAtom && cs->match == CSSSelector::PseudoElement)
  -    {
  -        str = "::";
  +    } else if (cs->match == CSSSelector::PseudoElement) {
  +        str += "::";
           str += cs->value.qstring();
  -    }
  -    else
  -    {
  -        if (localName == starAtom)
  -            str = "*";
  -        else
  -            str = localName;
  -        if (cs->match == CSSSelector::Id)
  -        {
  -            str += "#";
  -            str += cs->value.qstring();
  -        }
  -        else if (cs->match == CSSSelector::Class)
  -        {
  -            str += ".";
  -            str += cs->value.qstring();
  -        }
  -        else if (cs->match == CSSSelector::PseudoClass)
  -        {
  -            str += ":";
  -            str += cs->value.qstring();
  -        }
  -        else if (cs->match == CSSSelector::PseudoElement)
  -        {
  -            str += "::";
  -            str += cs->value.qstring();
  -        }
  -        // optional attribute
  -        if (cs->hasAttribute()) {
  -            // FIXME: Add support for dumping namespaces.
  -            DOMString attrName = cs->attr.localName();
  -            str += "[";
  -            str += attrName;
  -            switch (cs->match) {
  +    } else if (cs->hasAttribute()) {
  +        // FIXME: Add support for dumping namespaces.
  +        DOMString attrName = cs->attr.localName();
  +        str += "[";
  +        str += attrName;
  +        switch (cs->match) {
               case CSSSelector::Exact:
                   str += "=";
                   break;
               case CSSSelector::Set:
  -                str += " "; /// ## correct?
  +                // set has no operator or value, just the attrName
  +                str += "]";
                   break;
               case CSSSelector::List:
                   str += "~=";
  @@ -341,21 +308,22 @@
                   break;
               default:
                   kdWarning(6080) << "Unhandled case in CSSStyleRuleImpl::selectorText : match=" << cs->match << endl;
  -            }
  +        }
  +        if (cs->match != CSSSelector::Set) {
               str += "\"";
               str += cs->value.qstring();
               str += "\"]";
           }
       }
  -    if ( cs->tagHistory ) {
  +    if (cs->tagHistory) {
           DOMString tagHistoryText = cs->tagHistory->selectorText();
  -		if ( cs->relation == DirectAdjacent )
  +        if (cs->relation == CSSSelector::DirectAdjacent)
               str = tagHistoryText + " + " + str;
  -        else if ( cs->relation == IndirectAdjacent )
  +        else if (cs->relation == CSSSelector::IndirectAdjacent)
               str = tagHistoryText + " ~ " + str;
  -        else if ( cs->relation == Child )
  +        else if (cs->relation == CSSSelector::Child)
               str = tagHistoryText + " > " + str;
  -        else if ( cs->relation == SubSelector )
  +        else if (cs->relation == CSSSelector::SubSelector)
               str += tagHistoryText; // the ":" is provided by selectorText()
           else // Descendant
               str = tagHistoryText + " " + str;
  
  
  
  1.27      +9 -3      WebCore/khtml/css/css_ruleimpl.cpp
  
  Index: css_ruleimpl.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/css/css_ruleimpl.cpp,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- css_ruleimpl.cpp	4 Dec 2005 23:14:26 -0000	1.26
  +++ css_ruleimpl.cpp	12 Dec 2005 22:22:21 -0000	1.27
  @@ -367,9 +367,15 @@
   
   DOM::DOMString CSSStyleRuleImpl::selectorText() const
   {
  -    // FIXME: Handle all the selectors in the chain for comma-separated selectors.
  -    if (m_selector)
  -        return m_selector->selectorText();
  +    if (m_selector) {
  +        DOMString str;
  +        for (CSSSelector *s = m_selector; s; s = s->next()) {
  +            if (s != m_selector)
  +                str += ", ";
  +            str += s->selectorText();
  +        }
  +        return str;
  +    }
       return DOMString();
   }
   
  
  
  



More information about the webkit-changes mailing list