From: <rb...@us...> - 2013-10-05 11:50:20
|
Revision: 8595 http://sourceforge.net/p/htmlunit/code/8595 Author: rbri Date: 2013-10-05 11:50:17 +0000 (Sat, 05 Oct 2013) Log Message: ----------- fix another selector issues, our selector validation was missing a check 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/css/CSSSelectorTest.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-10-05 10:26:35 UTC (rev 8594) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleSheet.java 2013-10-05 11:50:17 UTC (rev 8595) @@ -1124,6 +1124,12 @@ final SiblingSelector ss = (SiblingSelector) selector; return isValidSelector(ss.getSelector(), documentMode) && isValidSelector(ss.getSiblingSelector(), documentMode); + case Selector.SAC_ANY_NODE_SELECTOR: + if (selector instanceof SiblingSelector) { + final SiblingSelector sibling = (SiblingSelector) selector; + return isValidSelector(sibling.getSelector(), documentMode) + && isValidSelector(sibling.getSiblingSelector(), documentMode); + } default: LOG.warn("Unhandled CSS selector type '" + selector.getSelectorType() + "'. Accepting it silently."); return true; // at least in a first time to break less stuff Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSSelectorTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSSelectorTest.java 2013-10-05 10:26:35 UTC (rev 8594) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSSelectorTest.java 2013-10-05 11:50:17 UTC (rev 8595) @@ -15,6 +15,7 @@ package com.gargoylesoftware.htmlunit.javascript.host.css; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF3_6; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE6; import org.junit.Test; @@ -536,7 +537,7 @@ * @throws Exception if an error occurs */ @Test - @Alerts({ "1", "ul2" }) + @Alerts({ "2", "ul2", "ul3" }) public void generalAdjacentSelector() throws Exception { final String html = "<html><head><title>First</title>\n" + "<meta http-equiv='X-UA-Compatible' content='IE=edge'>\n" @@ -545,7 +546,9 @@ + " if (document.querySelectorAll) {\n" + " var list = document.querySelectorAll('div~ul');\n" + " alert(list.length);\n" - + " alert(list[0].id);\n" + + " for (var i = 0 ; i < list.length; i++) {\n" + + " alert(list[i].id);\n" + + " }\n" + " }\n" + "}\n" + "</script></head>\n" @@ -553,6 +556,7 @@ + " <div></div>\n" + " <p></p>\n" + " <ul id='ul2'></ul>\n" + + " <ul id='ul3'></ul>\n" + "</body></html>"; loadPageWithAlerts2(html); @@ -699,6 +703,37 @@ * @throws Exception if an error occurs */ @Test + @Alerts(DEFAULT = { }, + IE = { "li1" }) + @NotYetImplemented(IE) + public void pseudoAfter() throws Exception { + final String html + = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html><head><title>Pseudo-After</title><script>\n" + + "function test() {\n" + + " if (document.querySelectorAll) {\n" + + " try {\n" + + " var list = document.querySelectorAll('#li1:after');\n" + + " for (var i = 0 ; i < list.length; i++) {\n" + + " alert(list[i].id);\n" + + " }\n" + + " } catch (e) {alert('exception')}\n" + + " }\n" + + "}\n" + + "</script></head>\n" + + "<body onload='test()'>\n" + + "<ul>\n" + + " <li id='li1'></li>\n" + + " <li id='li2'></li>\n" + + "</ul>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if an error occurs + */ + @Test @Alerts("li1") public void first_child() throws Exception { final String html = "<html><head><title>First</title>\n" @@ -1225,4 +1260,31 @@ loadPageWithAlerts2(html); } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts({ "exception" }) + public void invalidSelectors() throws Exception { + final String html + = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html><head><title>Invalid Selectors</title><script>\n" + + "function test() {\n" + + " if (document.querySelectorAll) {\n" + + " try {\n" + + " var list = document.querySelectorAll('li:foo() ~ li');\n" + + " alert(list.length);\n" + + " } catch (e) {alert('exception')}\n" + + " }\n" + + "}\n" + + "</script></head>\n" + + "<body onload='test()'>\n" + + "<ul id='ul'>\n" + + " <li id='li1'></li>\n" + + " <li id='li2'></li>\n" + + "</ul>\n" + + "</body></html>"; + + loadPageWithAlerts2(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-10-05 10:26:35 UTC (rev 8594) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2013-10-05 11:50:17 UTC (rev 8595) @@ -6787,7 +6787,6 @@ */ @Test @Alerts("0, 42, 42") - @NotYetImplemented public void Sizzle__selector__child_and_adjacent() throws Exception { runTest("Sizzle: selector: child and adjacent"); } |