From: <mgu...@us...> - 2013-03-13 12:50:57
|
Revision: 8165 http://sourceforge.net/p/htmlunit/code/8165 Author: mguillem Date: 2013-03-13 12:50:52 +0000 (Wed, 13 Mar 2013) Log Message: ----------- validate syntax of the argument of nth-child() CSS selector Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleSheet.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement2Test.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleSheet.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleSheet.java 2013-03-13 12:12:37 UTC (rev 8164) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleSheet.java 2013-03-13 12:50:52 UTC (rev 8165) @@ -1117,6 +1117,9 @@ if (documentMode < 9) { return CSS2_PSEUDO_CLASSES.contains(value); } + if ("nth-child()".equals(value)) { + return pcc.getValue().matches("nth-child(\\w*[-+]?\\d*n\\w*[+-]\\w\\d*\\w*)"); + } return CSS3_PSEUDO_CLASSES.contains(value); default: LOG.warn("Unhandled CSS condition type '" + condition.getConditionType() + "'. Accepting it silently."); Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement2Test.java 2013-03-13 12:12:37 UTC (rev 8164) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement2Test.java 2013-03-13 12:50:52 UTC (rev 8165) @@ -939,13 +939,20 @@ for (final String selector : HTMLDocumentTest.JQUERY_CUSTOM_SELECTORS) { doTestQuerySelectorAll_badSelector(selector); } + + // some other bad selectors tested in jQuery 1.8.2 tests + final String[] otherBadSelectors = {":nth-child(2n+-0)", ":nth-child(2+0)", ":nth-child(- 1n)", + ":nth-child(-1 n)" }; + for (final String selector : otherBadSelectors) { + doTestQuerySelectorAll_badSelector(selector); + } } private void doTestQuerySelectorAll_badSelector(final String selector) throws Exception { final String html = "<html><body><div id='it'></div><script>\n" + "try {\n" + " document.getElementById('it').querySelectorAll('" + selector + "');\n" - + " alert('working');\n" + + " alert('working: + " + selector + "');\n" + "} catch(e) { alert('exception'); }\n" + "</script></body></html>"; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2013-03-13 12:12:37 UTC (rev 8164) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2013-03-13 12:50:52 UTC (rev 8165) @@ -6769,7 +6769,6 @@ */ @Test @Alerts("0, 21, 21") - @NotYetImplemented(FF) public void Sizzle__selector__broken() throws Exception { runTest("Sizzle: selector: broken"); } |