2007-02-09 Nicholas Shanks <webkit@nickshanks.com>
authorbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 9 Feb 2007 13:55:43 +0000 (13:55 +0000)
committerbdash <bdash@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 9 Feb 2007 13:55:43 +0000 (13:55 +0000)
        Reviewed by Dave Hyatt.

        Removed broken recognition of :last-* and :only-* selectors

        * css/CSSGrammar.y:
        * css/CSSSelector.cpp:
        (WebCore::CSSSelector::extractPseudoType):
        * css/CSSSelector.h:
        (WebCore::CSSSelector::):
        * css/cssstyleselector.cpp:
        (WebCore::CSSStyleSelector::checkOneSelector):

2007-02-09  Nicholas Shanks  <webkit@nickshanks.com>

        Reviewed by Dave Hyatt.

        Removed broken recognition of :last-* and :only-* selectors
        Test results show red indicating property unsupported
        Previous behaviour was to erroneously make everything green

        * css3/expected_failures/css3-modsel-33-expected.checksum: Added.
        * css3/expected_failures/css3-modsel-33-expected.png: Added.
        * css3/expected_failures/css3-modsel-33-expected.txt: Added.
        * css3/expected_failures/css3-modsel-33.html: Added.
        * css3/expected_failures/css3-modsel-35-expected.checksum: Added.
        * css3/expected_failures/css3-modsel-35-expected.png: Added.
        * css3/expected_failures/css3-modsel-35-expected.txt: Added.
        * css3/expected_failures/css3-modsel-35.html: Added.
        * css3/expected_failures/css3-modsel-36-expected.checksum: Added.
        * css3/expected_failures/css3-modsel-36-expected.png: Added.
        * css3/expected_failures/css3-modsel-36-expected.txt: Added.
        * css3/expected_failures/css3-modsel-36.html: Added.
        * css3/expected_failures/css3-modsel-37-expected.checksum: Added.
        * css3/expected_failures/css3-modsel-37-expected.png: Added.
        * css3/expected_failures/css3-modsel-37-expected.txt: Added.
        * css3/expected_failures/css3-modsel-37.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@19528 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 files changed:
LayoutTests/ChangeLog
LayoutTests/css3/expected_failures/css3-modsel-33-expected.checksum [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-33-expected.png [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-33-expected.txt [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-33.html [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-35-expected.checksum [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-35-expected.png [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-35-expected.txt [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-35.html [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-36-expected.checksum [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-36-expected.png [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-36-expected.txt [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-36.html [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-37-expected.checksum [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-37-expected.png [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-37-expected.txt [new file with mode: 0644]
LayoutTests/css3/expected_failures/css3-modsel-37.html [new file with mode: 0644]
WebCore/ChangeLog
WebCore/css/CSSGrammar.y
WebCore/css/CSSSelector.cpp
WebCore/css/CSSSelector.h
WebCore/css/cssstyleselector.cpp

index f04a6d7..8684e21 100644 (file)
@@ -1,3 +1,28 @@
+2007-02-09  Nicholas Shanks  <webkit@nickshanks.com>
+
+        Reviewed by Dave Hyatt.
+
+        Removed broken recognition of :last-* and :only-* selectors
+        Test results show red indicating property unsupported
+        Previous behaviour was to erroneously make everything green
+
+        * css3/expected_failures/css3-modsel-33-expected.checksum: Added.
+        * css3/expected_failures/css3-modsel-33-expected.png: Added.
+        * css3/expected_failures/css3-modsel-33-expected.txt: Added.
+        * css3/expected_failures/css3-modsel-33.html: Added.
+        * css3/expected_failures/css3-modsel-35-expected.checksum: Added.
+        * css3/expected_failures/css3-modsel-35-expected.png: Added.
+        * css3/expected_failures/css3-modsel-35-expected.txt: Added.
+        * css3/expected_failures/css3-modsel-35.html: Added.
+        * css3/expected_failures/css3-modsel-36-expected.checksum: Added.
+        * css3/expected_failures/css3-modsel-36-expected.png: Added.
+        * css3/expected_failures/css3-modsel-36-expected.txt: Added.
+        * css3/expected_failures/css3-modsel-36.html: Added.
+        * css3/expected_failures/css3-modsel-37-expected.checksum: Added.
+        * css3/expected_failures/css3-modsel-37-expected.png: Added.
+        * css3/expected_failures/css3-modsel-37-expected.txt: Added.
+        * css3/expected_failures/css3-modsel-37.html: Added.
+
 2007-02-08  Adele Peterson  <adele@apple.com>
 
         Reviewed by Brady.
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-33-expected.checksum b/LayoutTests/css3/expected_failures/css3-modsel-33-expected.checksum
new file mode 100644 (file)
index 0000000..0a7b207
--- /dev/null
@@ -0,0 +1 @@
+73463500cbee4f2438458169a79ed651
\ No newline at end of file
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-33-expected.png b/LayoutTests/css3/expected_failures/css3-modsel-33-expected.png
new file mode 100644 (file)
index 0000000..da86e2e
Binary files /dev/null and b/LayoutTests/css3/expected_failures/css3-modsel-33-expected.png differ
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-33-expected.txt b/LayoutTests/css3/expected_failures/css3-modsel-33-expected.txt
new file mode 100644 (file)
index 0000000..34ebf80
--- /dev/null
@@ -0,0 +1,45 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x134
+  RenderBlock {HTML} at (0,0) size 800x134
+    RenderBody {BODY} at (8,8) size 784x110
+      RenderBlock {DIV} at (0,0) size 784x76
+        RenderTable {TABLE} at (0,0) size 123x76 [border: (1px outset #808080)]
+          RenderTableSection {TBODY} at (1,1) size 121x74
+            RenderTableRow {TR} at (0,2) size 121x22
+              RenderTableCell {TD} at (2,2) size 24x22 [border: (1px inset #808080)] [r=0 c=0 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 20x18
+                  text run at (2,2) width 20: "1.1"
+              RenderTableCell {TD} at (28,2) size 24x22 [border: (1px inset #808080)] [r=0 c=1 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 20x18
+                  text run at (2,2) width 20: "1.2"
+              RenderTableCell {TD} at (54,2) size 65x22 [bgcolor=#FF0000] [border: (1px inset #808080)] [r=0 c=2 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 61x18
+                  text run at (2,2) width 61: "green cell"
+            RenderTableRow {TR} at (0,26) size 121x22
+              RenderTableCell {TD} at (2,26) size 24x22 [border: (1px inset #808080)] [r=1 c=0 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 20x18
+                  text run at (2,2) width 20: "2.1"
+              RenderTableCell {TD} at (28,26) size 24x22 [border: (1px inset #808080)] [r=1 c=1 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 20x18
+                  text run at (2,2) width 20: "2.2"
+              RenderTableCell {TD} at (54,26) size 65x22 [bgcolor=#FF0000] [border: (1px inset #808080)] [r=1 c=2 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 61x18
+                  text run at (2,2) width 61: "green cell"
+            RenderTableRow {TR} at (0,50) size 121x22
+              RenderTableCell {TD} at (2,50) size 24x22 [border: (1px inset #808080)] [r=2 c=0 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 20x18
+                  text run at (2,2) width 20: "3.1"
+              RenderTableCell {TD} at (28,50) size 24x22 [border: (1px inset #808080)] [r=2 c=1 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 20x18
+                  text run at (2,2) width 20: "3.2"
+              RenderTableCell {TD} at (54,50) size 65x22 [bgcolor=#FF0000] [border: (1px inset #808080)] [r=2 c=2 rs=1 cs=1]
+                RenderText {#text} at (2,2) size 61x18
+                  text run at (2,2) width 61: "green cell"
+      RenderBlock {P} at (0,92) size 784x18
+        RenderInline {SPAN} at (0,0) size 431x18
+          RenderText {#text} at (0,0) size 431x18
+            text run at (0,0) width 272: "This paragraph contains a span that should "
+            text run at (272,0) width 159: "have a green background"
+        RenderText {#text} at (431,0) size 139x18
+          text run at (431,0) width 139: " and some text after it."
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-33.html b/LayoutTests/css3/expected_failures/css3-modsel-33.html
new file mode 100644 (file)
index 0000000..326910c
--- /dev/null
@@ -0,0 +1,40 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+  <title>:last-child pseudo-class</title>
+  <style type="text/css">.red { background-color : red }
+.t1 td:last-child { background-color : lime }
+p > *:last-child { background-color : lime }
+</style>
+  <link rel="first" href="css3-modsel-1.html" title="Groups of selectors">
+  <link rel="prev" href="css3-modsel-32.html" title=":first-child pseudo-class">
+  <link rel="next" href="css3-modsel-34.html" title=":first-of-type pseudo-class">
+  <link rel="last" href="css3-modsel-d5e.html" title="NEGATED :indeterminate with :checked">
+  <link rel="up" href="./index.html">
+  <link rel="top" href="../../index.html">
+ </head>
+ <body>
+<div>
+<table class="t1" border="1">
+  <tr>
+    <td>1.1</td>
+    <td>1.2</td>
+    <td class="red">green cell</td>
+  </tr>
+  <tr>
+    <td>2.1</td>
+    <td>2.2</td>
+    <td class="red">green cell</td>
+  </tr>
+  <tr>
+    <td>3.1</td>
+    <td>3.2</td>
+    <td class="red">green cell</td>
+  </tr>
+</table>
+</div>
+<p>
+<span>This paragraph contains a span that should
+     have a green background</span> and some text after it.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-35-expected.checksum b/LayoutTests/css3/expected_failures/css3-modsel-35-expected.checksum
new file mode 100644 (file)
index 0000000..be12ec2
--- /dev/null
@@ -0,0 +1 @@
+57ad0a59166f682446f22a1c63677bb8
\ No newline at end of file
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-35-expected.png b/LayoutTests/css3/expected_failures/css3-modsel-35-expected.png
new file mode 100644 (file)
index 0000000..6c9698c
Binary files /dev/null and b/LayoutTests/css3/expected_failures/css3-modsel-35-expected.png differ
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-35-expected.txt b/LayoutTests/css3/expected_failures/css3-modsel-35-expected.txt
new file mode 100644 (file)
index 0000000..0192b82
--- /dev/null
@@ -0,0 +1,18 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x136
+  RenderBlock {HTML} at (0,0) size 800x136
+    RenderBody {BODY} at (8,8) size 784x120
+      RenderBlock {DIV} at (0,0) size 784x120
+        RenderBlock {ADDRESS} at (16,0) size 768x18
+          RenderText {#text} at (0,0) size 252x18
+            text run at (0,0) width 252: "A first address with normal background"
+        RenderBlock {ADDRESS} at (16,34) size 768x18
+          RenderText {#text} at (0,0) size 272x18
+            text run at (0,0) width 272: "A second address with normal background"
+        RenderBlock {ADDRESS} at (16,68) size 768x18 [bgcolor=#FF0000]
+          RenderText {#text} at (0,0) size 337x18
+            text run at (0,0) width 337: "A third address that should have a green background"
+        RenderBlock (anonymous) at (0,102) size 784x18
+          RenderText {#text} at (0,0) size 314x18
+            text run at (0,0) width 314: "This div contains 3 addresses above this sentence."
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-35.html b/LayoutTests/css3/expected_failures/css3-modsel-35.html
new file mode 100644 (file)
index 0000000..d99db25
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+  <title>:last-of-type pseudo-class</title>
+  <style type="text/css">.red { background-color : red }
+address { margin-bottom : 1em ; margin-left : 1em }
+address:last-of-type { background-color : lime }
+</style>
+  <link rel="first" href="css3-modsel-1.html" title="Groups of selectors">
+  <link rel="prev" href="css3-modsel-34.html" title=":first-of-type pseudo-class">
+  <link rel="next" href="css3-modsel-36.html" title=":only-child pseudo-class">
+  <link rel="last" href="css3-modsel-d5e.html" title="NEGATED :indeterminate with :checked">
+  <link rel="up" href="./index.html">
+  <link rel="top" href="../../index.html">
+ </head>
+ <body>
+<div>
+<address>A first address with normal background</address>
+<address>A second address with normal background</address>
+<address class="red">A third address that should have a green background</address>
+This div contains 3 addresses above this sentence.</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-36-expected.checksum b/LayoutTests/css3/expected_failures/css3-modsel-36-expected.checksum
new file mode 100644 (file)
index 0000000..43e88ea
--- /dev/null
@@ -0,0 +1 @@
+f16b3c5d593bc6f64bdab268bf2d84c8
\ No newline at end of file
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-36-expected.png b/LayoutTests/css3/expected_failures/css3-modsel-36-expected.png
new file mode 100644 (file)
index 0000000..507f78d
Binary files /dev/null and b/LayoutTests/css3/expected_failures/css3-modsel-36-expected.png differ
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-36-expected.txt b/LayoutTests/css3/expected_failures/css3-modsel-36-expected.txt
new file mode 100644 (file)
index 0000000..483a69b
--- /dev/null
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x118
+  RenderBlock {HTML} at (0,0) size 800x118
+    RenderBody {BODY} at (8,16) size 784x86
+      RenderBlock {P} at (0,0) size 784x18
+        RenderText {#text} at (0,0) size 302x18
+          text run at (0,0) width 302: "This paragraph should have normal background"
+      RenderBlock {DIV} at (0,34) size 784x52
+        RenderBlock (anonymous) at (0,0) size 784x18
+          RenderText {#text} at (0,0) size 234x18
+            text run at (0,0) width 234: "This div contains only one paragraph"
+        RenderBlock {P} at (0,34) size 784x18 [bgcolor=#FF0000]
+          RenderText {#text} at (0,0) size 293x18
+            text run at (0,0) width 293: "This paragraph should have green background"
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-36.html b/LayoutTests/css3/expected_failures/css3-modsel-36.html
new file mode 100644 (file)
index 0000000..109baad
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+  <title>:only-child pseudo-class</title>
+  <style type="text/css">.red { background-color : red }
+p:only-child { background-color : lime }
+div.testText > div > p { margin-left : 1em }
+</style>
+  <link rel="first" href="css3-modsel-1.html" title="Groups of selectors">
+  <link rel="prev" href="css3-modsel-35.html" title=":last-of-type pseudo-class">
+  <link rel="next" href="css3-modsel-37.html" title=":only-of-type pseudo-class">
+  <link rel="last" href="css3-modsel-d5e.html" title="NEGATED :indeterminate with :checked">
+  <link rel="up" href="./index.html">
+  <link rel="top" href="../../index.html">
+ </head>
+ <body>
+<p>This paragraph should have normal background</p>
+<div>This div contains only one paragraph
+    <p class="red">This paragraph should have green background</p>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-37-expected.checksum b/LayoutTests/css3/expected_failures/css3-modsel-37-expected.checksum
new file mode 100644 (file)
index 0000000..537c50d
--- /dev/null
@@ -0,0 +1 @@
+42edbe4ed1adae0e132a5889eb6ecef4
\ No newline at end of file
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-37-expected.png b/LayoutTests/css3/expected_failures/css3-modsel-37-expected.png
new file mode 100644 (file)
index 0000000..9839512
Binary files /dev/null and b/LayoutTests/css3/expected_failures/css3-modsel-37-expected.png differ
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-37-expected.txt b/LayoutTests/css3/expected_failures/css3-modsel-37-expected.txt
new file mode 100644 (file)
index 0000000..484c811
--- /dev/null
@@ -0,0 +1,15 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x118
+  RenderBlock {HTML} at (0,0) size 800x118
+    RenderBody {BODY} at (8,16) size 784x86
+      RenderBlock {DIV} at (0,0) size 784x86
+        RenderBlock {P} at (0,0) size 784x18
+          RenderText {#text} at (0,0) size 302x18
+            text run at (0,0) width 302: "This paragraph should have normal background"
+        RenderBlock {ADDRESS} at (0,34) size 784x18 [bgcolor=#FF0000]
+          RenderText {#text} at (0,0) size 301x18
+            text run at (0,0) width 301: "But this address should have green background"
+        RenderBlock {P} at (0,68) size 784x18
+          RenderText {#text} at (0,0) size 302x18
+            text run at (0,0) width 302: "This paragraph should have normal background"
diff --git a/LayoutTests/css3/expected_failures/css3-modsel-37.html b/LayoutTests/css3/expected_failures/css3-modsel-37.html
new file mode 100644 (file)
index 0000000..6c0cb43
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+ <head>
+  <title>:only-of-type pseudo-class</title>
+  <style type="text/css">.red { background-color : red }
+.t1 :only-of-type { background-color : lime }
+</style>
+  <link rel="first" href="css3-modsel-1.html" title="Groups of selectors">
+  <link rel="prev" href="css3-modsel-36.html" title=":only-child pseudo-class">
+  <link rel="next" href="css3-modsel-38.html" title="::first-line pseudo-element">
+  <link rel="last" href="css3-modsel-d5e.html" title="NEGATED :indeterminate with :checked">
+  <link rel="up" href="./index.html">
+  <link rel="top" href="../../index.html">
+ </head>
+ <body>
+<div class="t1">
+<p>This paragraph should have normal background</p>
+<address class="red">But this address should have green background</address>
+<p>This paragraph should have normal background</p>
+</div>
+</body>
+</html>
\ No newline at end of file
index 0cae068..9e00946 100644 (file)
@@ -1,3 +1,17 @@
+2007-02-09  Nicholas Shanks  <webkit@nickshanks.com>
+
+        Reviewed by Dave Hyatt.
+
+        Removed broken recognition of :last-* and :only-* selectors
+
+        * css/CSSGrammar.y:
+        * css/CSSSelector.cpp:
+        (WebCore::CSSSelector::extractPseudoType):
+        * css/CSSSelector.h:
+        (WebCore::CSSSelector::):
+        * css/cssstyleselector.cpp:
+        (WebCore::CSSStyleSelector::checkOneSelector):
+
 2007-02-09  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Mark.
index b279b7b..095d7a7 100644 (file)
@@ -846,8 +846,8 @@ pseudo:
         CSSSelector::PseudoType type = $$->pseudoType();
         if (type == CSSSelector::PseudoUnknown)
             $$ = 0;
-        else if (type == CSSSelector::PseudoEmpty || type == CSSSelector::PseudoOnlyChild ||
-                 type == CSSSelector::PseudoFirstChild || type == CSSSelector::PseudoLastChild) {
+        else if (type == CSSSelector::PseudoEmpty ||
+                 type == CSSSelector::PseudoFirstChild) {
             CSSParser* p = static_cast<CSSParser*>(parser);
             Document* doc = p->document();
             if (doc)
index 2ffd440..95c7664 100644 (file)
@@ -90,11 +90,7 @@ void CSSSelector::extractPseudoType() const
     static AtomicString indeterminate("indeterminate");
     static AtomicString link("link");
     static AtomicString lang("lang(");
-    static AtomicString lastChild("last-child");
-    static AtomicString lastOfType("last-of-type");
     static AtomicString notStr("not(");
-    static AtomicString onlyChild("only-child");
-    static AtomicString onlyOfType("only-of-type");
     static AtomicString root("root");
     static AtomicString searchCancelButton("-webkit-search-cancel-button");
     static AtomicString searchDecoration("-webkit-search-decoration");
@@ -158,16 +154,8 @@ void CSSSelector::extractPseudoType() const
         m_pseudoType = PseudoLink;
     else if (m_value == lang)
         m_pseudoType = PseudoLang;
-    else if (m_value == lastChild)
-        m_pseudoType = PseudoLastChild;
-    else if (m_value == lastOfType)
-        m_pseudoType = PseudoLastOfType;
     else if (m_value == notStr)
         m_pseudoType = PseudoNot;
-    else if (m_value == onlyChild)
-        m_pseudoType = PseudoOnlyChild;
-    else if (m_value == onlyOfType)
-        m_pseudoType = PseudoOnlyOfType;
     else if (m_value == root)
         m_pseudoType = PseudoRoot;
     else if (m_value == searchCancelButton) {
index 7aec7ea..48c0d10 100644 (file)
@@ -121,10 +121,6 @@ namespace WebCore {
             PseudoEmpty,
             PseudoFirstChild,
             PseudoFirstOfType,
-            PseudoLastChild,
-            PseudoLastOfType,
-            PseudoOnlyChild,
-            PseudoOnlyOfType,
             PseudoFirstLine,
             PseudoFirstLetter,
             PseudoLink,
index 5b47c7f..b29a09c 100644 (file)
@@ -1452,65 +1452,6 @@ bool CSSStyleSelector::checkOneSelector(CSSSelector* sel, Element* e, bool isSub
                 }
                 break;
             }
-            case CSSSelector::PseudoLastChild: {
-                // last-child matches the last child that is an element!
-                if (e->parentNode() && e->parentNode()->isElementNode()) {
-                    Node *n = e->nextSibling();
-                    while (n && !n->isElementNode())
-                        n = n->nextSibling();
-                    if (!n)
-                        return true;
-                }
-                break;
-            }
-            case CSSSelector::PseudoLastOfType: {
-                // last-of-type matches the last element of its type!
-                if (e->parentNode() && e->parentNode()->isElementNode()) {
-                    const QualifiedName& type = e->tagQName();
-                    Node *n = e->nextSibling();
-                    while (n) {
-                        if (n->isElementNode() && static_cast<Element*>(n)->hasTagName(type))
-                            break;
-                        n = n->nextSibling();
-                    }
-                    if (!n)
-                        return true;
-                }
-                break;
-            }
-            case CSSSelector::PseudoOnlyChild: {
-                // If both first-child and last-child apply, then only-child applies.
-                if (e->parentNode() && e->parentNode()->isElementNode()) {
-                    Node *n = e->previousSibling();
-                    while (n && !n->isElementNode())
-                        n = n->previousSibling();
-                    if (!n) {
-                        n = e->nextSibling();
-                        while (n && !n->isElementNode())
-                            n = n->nextSibling();
-                        if (!n)
-                            return true;
-                    }
-                }
-                break;
-            }
-            case CSSSelector::PseudoOnlyOfType: {
-                // If both first-of-type and last-of-type apply, then only-of-type applies.
-                if (e->parentNode() && e->parentNode()->isElementNode()) {
-                    const QualifiedName& type = e->tagQName();
-                    Node *n = e->previousSibling();
-                    while (n && !static_cast<Element*>(n)->hasTagName(type))
-                        n = n->previousSibling();
-                    if (!n) {
-                        n = e->nextSibling();
-                        while (n && !static_cast<Element*>(n)->hasTagName(type))
-                            n = n->nextSibling();
-                        if (!n)
-                            return true;
-                    }
-                }
-                break;
-            }
             case CSSSelector::PseudoTarget:
                 if (e == e->document()->getCSSTarget())
                     return true;