From: <rb...@us...> - 2017-08-29 17:21:26
|
Revision: 14801 http://sourceforge.net/p/htmlunit/code/14801 Author: rbri Date: 2017-08-29 17:21:23 +0000 (Tue, 29 Aug 2017) Log Message: ----------- fix handling of browser default styles Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/css/SelectorSpecificity.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/css/StyleElement.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/css/SelectorSpecificity.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/css/SelectorSpecificity.java 2017-08-28 18:22:05 UTC (rev 14800) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/css/SelectorSpecificity.java 2017-08-29 17:21:23 UTC (rev 14801) @@ -44,6 +44,10 @@ * The specificity for declarations made in the style attributes of an element. */ public static final SelectorSpecificity FROM_STYLE_ATTRIBUTE = new SelectorSpecificity(1, 0, 0, 0); + /** + * The specificity for browser defaults. + */ + public static final SelectorSpecificity DEFAULT_STYLE_ATTRIBUTE = new SelectorSpecificity(0, 0, 0, 0); private int fieldA_; private int fieldB_; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/css/StyleElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/css/StyleElement.java 2017-08-28 18:22:05 UTC (rev 14800) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/css/StyleElement.java 2017-08-29 17:21:23 UTC (rev 14801) @@ -75,15 +75,6 @@ } /** - * Creates a new instance. - * @param name the style element's name - * @param value the style element's value - */ - public StyleElement(final String name, final String value) { - this(name, value, "", SelectorSpecificity.FROM_STYLE_ATTRIBUTE); - } - - /** * Returns the style element's name. * @return the style element's name */ Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java 2017-08-28 18:22:05 UTC (rev 14800) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java 2017-08-29 17:21:23 UTC (rev 14801) @@ -302,7 +302,7 @@ * @param newValue the value of the style attribute to set */ public void setDefaultLocalStyleAttribute(final String name, final String newValue) { - final StyleElement element = new StyleElement(name, newValue); + final StyleElement element = new StyleElement(name, newValue, "", SelectorSpecificity.DEFAULT_STYLE_ATTRIBUTE); localModifications_.put(name, element); } 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 18:22:05 UTC (rev 14800) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java 2017-08-29 17:21:23 UTC (rev 14801) @@ -2146,4 +2146,31 @@ loadPageWithAlerts2(html); } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts("23") + public void combineStylesBrowserDefaults() throws Exception { + final String html = "<html>\n" + + "<head>\n" + + "<style type='text/css'>\n" + + " body { margin: 3px; }\n" + + " div { margin: 20px; }\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'></div>\n" + + "</body></html>\n"; + + loadPageWithAlerts2(html); + } } |