Bug 116742

Summary: Negation selector (:not()) should support full complex selectors according to CSS4 Selectors draft.
Product: WebKit Reporter: James Craig <jcraig>
Component: CSSAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: benjamin, jcraig, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   

Description James Craig 2013-05-24 15:24:00 PDT
Negation selector (:not()) should support full complex selectors according to CSS4 Selectors draft. 

Test case: The following throw syntax errors.

document.querySelectorAll('input:not([type="button"][value])'); /* Any input that does not have both attribute: value and type="button". */
document.querySelectorAll('input:not(label input)'); /* Any input that is not contained in a label ancestor. */
document.querySelectorAll('input:not(label>input)'); /* Any input that is not contained in a label parent. */


Quoting: http://dev.w3.org/csswg/selectors4/#negation

The negation pseudo-class, :not(), is a functional pseudo-class taking a selector list as an argument. It represents an element that is not represented by its argument.

In the fast Selectors profile, only lists of compound selectors are allowed within :not(): combinators are not allowed. In the complete profile, full complex selectors are allowed.
Comment 1 Radar WebKit Bug Importer 2013-05-24 15:24:19 PDT
<rdar://problem/13987429>
Comment 2 Benjamin Poulain 2014-11-01 16:00:57 PDT
Done.