Bug 5468 - CSS3: only-child and only-of-type pseudo-selectors (affects Acid3)
Summary: CSS3: only-child and only-of-type pseudo-selectors (affects Acid3)
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: CSS (show other bugs)
Version: 412
Hardware: Macintosh OS X 10.4
: P2 Normal
Assignee: Dave Hyatt
URL:
Keywords:
: 11385 11386 11785 17155 (view as bug list)
Depends on: 3442 4812
Blocks: Acid3 11390 13446
  Show dependency treegraph
 
Reported: 2005-10-23 08:46 PDT by Timothy Hatcher
Modified: 2008-02-02 18:31 PST (History)
11 users (show)

See Also:


Attachments
patch to *remove* support for these properties (99.07 KB, patch)
2007-02-07 06:52 PST, Nicholas Shanks
hyatt: review-
Details | Formatted Diff | Diff
lets see if dave likes this one any better (101.80 KB, patch)
2007-02-07 18:13 PST, Nicholas Shanks
hyatt: review-
Details | Formatted Diff | Diff
aye aye cap'n! (102.83 KB, patch)
2007-02-08 21:59 PST, Nicholas Shanks
no flags Details | Formatted Diff | Diff
Implement :only-child and :only-of-type (147.89 KB, patch)
2008-02-02 11:58 PST, Dave Hyatt
no flags Details | Formatted Diff | Diff
Patch (148.00 KB, patch)
2008-02-02 12:21 PST, Dave Hyatt
oliver: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Timothy Hatcher 2005-10-23 08:46:17 PDT
bug 3442 laid the framework for this, but didn't finish these 2 pseudo-selectors.

Here are the 2 test cases:
http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-35.html
http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/css3-modsel-36.html
Comment 1 Eric Seidel (no email) 2005-12-27 15:41:55 PST
Joost also just filed a bug asking for the nth- selectors as well.
Comment 3 Nicholas Shanks 2006-11-20 16:17:42 PST
*** Bug 11385 has been marked as a duplicate of this bug. ***
Comment 4 Nicholas Shanks 2006-11-20 16:18:10 PST
*** Bug 11386 has been marked as a duplicate of this bug. ***
Comment 5 mitz 2006-12-08 12:53:32 PST
*** Bug 11785 has been marked as a duplicate of this bug. ***
Comment 6 Nicholas Shanks 2007-02-07 06:52:39 PST
Created attachment 12999 [details]
patch to *remove* support for these properties

Until such time as a correct implementation can be developed, I believe it would be better to not support these at all rather than to support them incorrectly. The current behaviour of :last-child behaving like a base element selector, and :only-child behaving like :first-child is highly detrimental.
Comment 7 Maciej Stachowiak 2007-02-07 08:05:02 PST
This might not be a bad idea, though I think hyatt would be the best judge.
Comment 8 Gabe da Silveira 2007-02-07 08:13:15 PST
I'll put in my vote for that idea as well since this bug bit me in the ass hard a few months ago.
Comment 9 Dave Hyatt 2007-02-07 15:31:08 PST
Comment on attachment 12999 [details]
patch to *remove* support for these properties

Yeah, I agree with removing support for these.

You haven't adequately removed them unless the rules are rejected.  You need to go further and actually yank the names from the list of pseudo types completely.

For  example:

:last-child, div { color: red }

should be rejected since last-child is unrecognized.

Also,

:not(:last-child)

needs to also be rejected.  With your patch :last-child just always returns a failed match, which will cause :not(:last-child) to always match.
Comment 10 Nicholas Shanks 2007-02-07 18:13:52 PST
Created attachment 13032 [details]
lets see if dave likes this one any better
Comment 11 Dave Hyatt 2007-02-08 21:15:10 PST
Comment on attachment 13032 [details]
lets see if dave likes this one any better

Patch looks good.  Since the tests that are being landed are expected failures, I'd prefer they go under css3/expected_failures/ (as we did with table tests that have failing results), so that there's no confusion about the fact that we're deliberately checking in failing test cases.

I'll r+ once the tests are moved.
Comment 12 Dave Hyatt 2007-02-08 21:16:25 PST
(Also changelog typo, I assume you meant "erroneously")
Comment 13 Nicholas Shanks 2007-02-08 21:59:04 PST
Created attachment 13078 [details]
aye aye cap'n!
Comment 14 Dave Hyatt 2007-02-08 22:19:17 PST
Comment on attachment 13078 [details]
aye aye cap'n!

r=me
Comment 15 Mark Rowe (bdash) 2007-02-09 06:06:37 PST
Patch to remove support landed in r19528.
Comment 16 Mark Rowe (bdash) 2007-02-09 06:07:17 PST
Comment on attachment 13078 [details]
aye aye cap'n!

Marking obsolete to get it out of the commit queue.
Comment 17 Mark Rowe (bdash) 2007-02-09 06:08:54 PST
Comment on attachment 13078 [details]
aye aye cap'n!

Apparently being obsolete doesn't matter to the commit queue... Removing review flag to make it go away.
Comment 18 Eric Seidel (no email) 2007-12-28 22:22:31 PST
Acid3, test0 depends on dynamic :last-child support.
Comment 19 Eric Seidel (no email) 2008-01-01 22:22:32 PST
:last-of-type causes test 39 to fail as well.

      selectorTest(function (doc, add, expect) {
        builder(doc);
        var match = add(":last-of-type");
        var values = [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1];
        for (var i = 0; i < elements.length; i += 1)
          expect(elements[i], values[i] ? match : 0, "part 2:" + i);
      });

i = 7 when we fail.
Comment 20 Eric Seidel (no email) 2008-01-09 01:34:15 PST
Returning this to unassigned as it's seen no activity from the assignee in 11 months.
Comment 21 Dave Hyatt 2008-02-02 11:53:05 PST
*** Bug 17155 has been marked as a duplicate of this bug. ***
Comment 22 Dave Hyatt 2008-02-02 11:58:21 PST
Created attachment 18871 [details]
Implement :only-child and :only-of-type
Comment 23 Dave Hyatt 2008-02-02 12:21:51 PST
Created attachment 18872 [details]
Patch
Comment 24 Oliver Hunt 2008-02-02 15:04:19 PST
Comment on attachment 18872 [details]
Patch

r=me
Comment 25 Dave Hyatt 2008-02-02 18:31:33 PST
Fixed in r29944.