diff --git a/mozilla/content/events/public/nsIEventStateManager.h b/mozilla/content/events/public/nsIEventStateManager.h index fc18965ba1b..079c8da3ab8 100644 --- a/mozilla/content/events/public/nsIEventStateManager.h +++ b/mozilla/content/events/public/nsIEventStateManager.h @@ -167,5 +167,9 @@ public: #define NS_EVENT_STATE_REQUIRED 0x00000100 #define NS_EVENT_STATE_OPTIONAL 0x00000200 #define NS_EVENT_STATE_VISITED 0x00000400 +#define NS_EVENT_STATE_VALID 0x00000800 +#define NS_EVENT_STATE_INVALID 0x00001000 +#define NS_EVENT_STATE_INRANGE 0x00002000 +#define NS_EVENT_STATE_OUTOFRANGE 0x00004000 #endif // nsIEventStateManager_h__ diff --git a/mozilla/layout/style/nsCSSPseudoClassList.h b/mozilla/layout/style/nsCSSPseudoClassList.h index 158d7dcd176..e40e0cd183d 100644 --- a/mozilla/layout/style/nsCSSPseudoClassList.h +++ b/mozilla/layout/style/nsCSSPseudoClassList.h @@ -80,3 +80,7 @@ CSS_PSEUDO_CLASS(onlyChild, ":only-child") // http://www.w3.org/TR/2004/CR-css3-ui-20040511/#pseudo-classes CSS_PSEUDO_CLASS(required, ":required") CSS_PSEUDO_CLASS(optional, ":optional") +CSS_PSEUDO_CLASS(valid, ":valid") +CSS_PSEUDO_CLASS(invalid, ":invalid") +CSS_PSEUDO_CLASS(inRange, ":in-range") +CSS_PSEUDO_CLASS(outOfRange, ":out-of-range") diff --git a/mozilla/layout/style/nsCSSStyleSheet.cpp b/mozilla/layout/style/nsCSSStyleSheet.cpp index 86f3616c9b9..07d1ad0d945 100644 --- a/mozilla/layout/style/nsCSSStyleSheet.cpp +++ b/mozilla/layout/style/nsCSSStyleSheet.cpp @@ -3140,6 +3140,18 @@ static PRBool SelectorMatches(RuleProcessorData &data, else if (nsCSSPseudoClasses::optional == pseudoClass->mAtom) { result = STATE_CHECK(NS_EVENT_STATE_OPTIONAL); } + else if (nsCSSPseudoClasses::valid == pseudoClass->mAtom) { + result = STATE_CHECK(NS_EVENT_STATE_VALID); + } + else if (nsCSSPseudoClasses::invalid == pseudoClass->mAtom) { + result = STATE_CHECK(NS_EVENT_STATE_INVALID); + } + else if (nsCSSPseudoClasses::inRange == pseudoClass->mAtom) { + result = STATE_CHECK(NS_EVENT_STATE_INRANGE); + } + else if (nsCSSPseudoClasses::outOfRange == pseudoClass->mAtom) { + result = STATE_CHECK(NS_EVENT_STATE_OUTOFRANGE); + } else { NS_ERROR("CSS parser parsed a pseudo-class that we do not handle"); result = PR_FALSE; // unknown pseudo class @@ -3658,7 +3670,11 @@ PRBool IsStateSelector(nsCSSSelector& aSelector) (pseudoClass->mAtom == nsCSSPseudoClasses::enabled) || (pseudoClass->mAtom == nsCSSPseudoClasses::disabled) || (pseudoClass->mAtom == nsCSSPseudoClasses::required) || - (pseudoClass->mAtom == nsCSSPseudoClasses::optional)) { + (pseudoClass->mAtom == nsCSSPseudoClasses::optional) || + (pseudoClass->mAtom == nsCSSPseudoClasses::valid) || + (pseudoClass->mAtom == nsCSSPseudoClasses::invalid) || + (pseudoClass->mAtom == nsCSSPseudoClasses::inRange) || + (pseudoClass->mAtom == nsCSSPseudoClasses::outOfRange)) { return PR_TRUE; } }