From: <asa...@us...> - 2013-11-24 07:41:58
|
Revision: 8802 http://sourceforge.net/p/htmlunit/code/8802 Author: asashour Date: 2013-11-24 07:41:53 +0000 (Sun, 24 Nov 2013) Log Message: ----------- CSS: correct behavior of setting a style value to null. Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2013-11-23 21:45:25 UTC (rev 8801) +++ trunk/htmlunit/src/changes/changes.xml 2013-11-24 07:41:53 UTC (rev 8802) @@ -9,6 +9,9 @@ <body> <release version="2.14" date="???" description="Bugfixes"> <action type="fix" dev="asashour"> + CSS: correct behavior of setting a style value to null. + </action> + <action type="fix" dev="asashour"> WebClient: .closeAllWindows() to delete all temporary files. </action> <action type="add" dev="asashour"> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2013-11-23 21:45:25 UTC (rev 8801) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2013-11-24 07:41:53 UTC (rev 8802) @@ -101,6 +101,10 @@ @BrowserFeature({ @WebBrowser(value = FF, maxVersion = 17), @WebBrowser(CHROME) }) CSS_SELECT_INLINE, + /** Throws exception on setting a CSS style value to null. */ + @BrowserFeature(@WebBrowser(IE)) + CSS_SET_NULL_THROWS, + /** Internet Explorer versions 5 and later support the behavior property. The behavior property lets * you use CSS to attach a script to a specific element in order to implement * DHTML (Dynamic HTML) components. 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 2013-11-23 21:45:25 UTC (rev 8801) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java 2013-11-24 07:41:53 UTC (rev 8802) @@ -16,6 +16,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_IMAGE_URL_QUOTED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_PIXEL_VALUES_INT_ONLY; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_SET_NULL_THROWS; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_SUPPORTS_BEHAVIOR_PROPERTY; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_ZINDEX_TYPE_NUMBER; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_ZINDEX_UNDEFINED_FORCES_RESET; @@ -526,7 +527,13 @@ * @param name the attribute name (camel-cased) * @param newValue the attribute value */ - protected void setStyleAttribute(final String name, final String newValue) { + protected void setStyleAttribute(final String name, String newValue) { + if ("null".equals(newValue)) { + if (getBrowserVersion().hasFeature(CSS_SET_NULL_THROWS)) { + Context.throwAsScriptRuntimeEx(new Exception("Invalid argument.")); + } + newValue = ""; + } if (styleDeclaration_ != null) { styleDeclaration_.setProperty(name, newValue, null); return; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java 2013-11-23 21:45:25 UTC (rev 8801) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java 2013-11-24 07:41:53 UTC (rev 8802) @@ -1369,4 +1369,37 @@ + "</script></body></html>"; loadPageWithAlerts2(html); } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts(DEFAULT = { "", "", "", "" }, + IE = {"", "error", "", "", "error", "" }) + public void setToNull() throws Exception { + final String html + = "<html><head><script>\n" + + "function test() {\n" + + " var div1 = document.getElementById('div1');\n" + + " alert(div1.style.border);\n" + + " try {\n" + + " div1.style.border = null;\n" + + " } catch (e) {\n" + + " alert('error');\n" + + " }\n" + + " alert(div1.style.border);\n" + + " alert(div1.style.display);\n" + + " try {\n" + + " div1.style.display = null;\n" + + " } catch (e) {\n" + + " alert('error');\n" + + " }\n" + + " alert(div1.style.display);\n" + + "}\n" + + "</script></head>\n" + + "<body onload='test()'>\n" + + "<div id='div1'>foo</div></body></html>"; + + loadPageWithAlerts2(html); + } } |