From: <rb...@us...> - 2017-08-28 18:11:06
|
Revision: 14799 http://sourceforge.net/p/htmlunit/code/14799 Author: rbri Date: 2017-08-28 18:11:03 +0000 (Mon, 28 Aug 2017) Log Message: ----------- take the selector specificity into account Issue 1916 Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java 2017-08-28 16:52:35 UTC (rev 14798) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java 2017-08-28 18:11:03 UTC (rev 14799) @@ -413,10 +413,14 @@ if (element1 == null) { value = element2.getValue(); } - else if (element1.getIndex() > element2.getIndex()) { - return element1.getValue(); - } else { + final int comp = element1.getSpecificity().compareTo(element2.getSpecificity()); + if (comp > 0) { + return element1.getValue(); + } + if (comp == 0 && element1.getIndex() > element2.getIndex()) { + return element1.getValue(); + } value = element2.getValue(); } } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java 2017-08-28 16:52:35 UTC (rev 14798) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java 2017-08-28 18:11:03 UTC (rev 14799) @@ -2120,4 +2120,30 @@ + "</body></html>"; loadPageWithAlerts2(html); } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts("131") + public void combineStyles() throws Exception { + final String html = "<html>\n" + + "<head>\n" + + "<style type='text/css'>\n" + + " div { margin: 10px 20px 30px 40px; }\n" + + "</style>\n" + + "<script>\n" + + " function test() {\n" + + " var div = document.getElementById('div1');\n" + + " var left = div.style.marginLeft;\n" // force the resolution + + " alert(div.offsetLeft);\n" + + " }\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'>\n" + + " <div id='div1' style='margin-left: 123px'></div>\n" + + "</body></html>\n"; + + loadPageWithAlerts2(html); + } } |