From: <rb...@us...> - 2013-05-01 16:13:38
|
Revision: 8253 http://sourceforge.net/p/htmlunit/code/8253 Author: rbri Date: 2013-05-01 16:13:34 +0000 (Wed, 01 May 2013) Log Message: ----------- The value of input controls changes when the defaultValue was changed in IE8ff (only exception is text area) Some more tests. Fix a browser feature name and introduce a new one for text area 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/html/HtmlCheckBoxInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java Added Paths: ----------- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea2Test.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2013-05-01 14:08:36 UTC (rev 8252) +++ trunk/htmlunit/src/changes/changes.xml 2013-05-01 16:13:34 UTC (rev 8253) @@ -9,6 +9,9 @@ <body> <release version="2.13" date="???" description="Bugfixes"> <action type="fix" dev="rbri"> + The value of input controls changes when the defaultValue was changed in IE8ff. + </action> + <action type="fix" dev="rbri"> The default value of input-file is no longer empty in IE8ff. </action> <action type="fix" dev="rbri"> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2013-05-01 14:08:36 UTC (rev 8252) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2013-05-01 16:13:34 UTC (rev 8253) @@ -598,10 +598,6 @@ @BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) }) HTMLIMAGE_NAME_VALUE_PARAMS, - /** */ - @BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) }) - HTMLINPUT_DEFAULT_IS_CHECKED, - /** Set this checked state back to default when added to page (IE6). */ @BrowserFeature(@WebBrowser(value = IE, maxVersion = 7)) HTMLINPUT_SET_CHECKED_TO_DEFAULT_WHEN_ADDED, @@ -610,6 +606,14 @@ @BrowserFeature(@WebBrowser(value = IE)) HTMLINPUT_SET_CHECKED_TO_FALSE_WHEN_CLONE, + /** Setting defaultCheced updates checked also. */ + @BrowserFeature({ @WebBrowser(FF), @WebBrowser(value = IE, minVersion = 8), @WebBrowser(CHROME) }) + HTMLINPUT_SET_DEFAULT_CHECKED_UPDATES_CHECKED, + + /** Setting defaultValue updates the value also. */ + @BrowserFeature({ @WebBrowser(FF), @WebBrowser(value = IE, minVersion = 8), @WebBrowser(CHROME) }) + HTMLINPUT_SET_DEFAULT_VALUE_UPDATES_VALUE, + /** * Set this property if the browser does NOT * support the disabling of an individual option group. @@ -648,6 +652,10 @@ @BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) }) HTMLSCRIPT_TRIM_TYPE, + /** Setting defaultValue updates the value also. */ + @BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) }) + HTMLTEXTAREA_SET_DEFAULT_VALUE_UPDATES_VALUE, + /** Do not allow anything in color, but restrict to valid values only. */ @BrowserFeature({ @WebBrowser(IE), @WebBrowser(value = FF, maxVersion = 3.6f) }) HTML_COLOR_RESTRICT, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlCheckBoxInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlCheckBoxInput.java 2013-05-01 14:08:36 UTC (rev 8252) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlCheckBoxInput.java 2013-05-01 16:13:34 UTC (rev 8253) @@ -15,7 +15,7 @@ package com.gargoylesoftware.htmlunit.html; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONCHANGE_LOSING_FOCUS; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_DEFAULT_IS_CHECKED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_SET_DEFAULT_CHECKED_UPDATES_CHECKED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_SET_CHECKED_TO_FALSE_WHEN_CLONE; import java.io.IOException; @@ -168,7 +168,7 @@ @Override public void setDefaultChecked(final boolean defaultChecked) { defaultCheckedState_ = defaultChecked; - if (hasFeature(HTMLINPUT_DEFAULT_IS_CHECKED)) { + if (hasFeature(HTMLINPUT_SET_DEFAULT_CHECKED_UPDATES_CHECKED)) { setChecked(defaultChecked); } if (hasFeature(HTMLINPUT_SET_CHECKED_TO_FALSE_WHEN_CLONE)) { Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java 2013-05-01 14:08:36 UTC (rev 8252) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java 2013-05-01 16:13:34 UTC (rev 8253) @@ -14,7 +14,7 @@ */ package com.gargoylesoftware.htmlunit.html; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_DEFAULT_IS_CHECKED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_SET_DEFAULT_VALUE_UPDATES_VALUE; import java.io.IOException; import java.util.Collection; @@ -358,7 +358,7 @@ * @see HtmlFileInput#setDefaultValue(String) */ public void setDefaultValue(final String defaultValue) { - final boolean modifyValue = hasFeature(HTMLINPUT_DEFAULT_IS_CHECKED); + final boolean modifyValue = hasFeature(HTMLINPUT_SET_DEFAULT_VALUE_UPDATES_VALUE); setDefaultValue(defaultValue, modifyValue); } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput.java 2013-05-01 14:08:36 UTC (rev 8252) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput.java 2013-05-01 16:13:34 UTC (rev 8253) @@ -15,7 +15,7 @@ package com.gargoylesoftware.htmlunit.html; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONCHANGE_LOSING_FOCUS; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_DEFAULT_IS_CHECKED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_SET_DEFAULT_CHECKED_UPDATES_CHECKED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_SET_CHECKED_TO_FALSE_WHEN_CLONE; import java.io.IOException; @@ -221,7 +221,7 @@ @Override public void setDefaultChecked(final boolean defaultChecked) { defaultCheckedState_ = defaultChecked; - if (hasFeature(HTMLINPUT_DEFAULT_IS_CHECKED)) { + if (hasFeature(HTMLINPUT_SET_DEFAULT_CHECKED_UPDATES_CHECKED)) { setChecked(isDefaultChecked()); } if (hasFeature(HTMLINPUT_SET_CHECKED_TO_FALSE_WHEN_CLONE)) { Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea.java 2013-05-01 14:08:36 UTC (rev 8252) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea.java 2013-05-01 16:13:34 UTC (rev 8253) @@ -14,7 +14,7 @@ */ package com.gargoylesoftware.htmlunit.html; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_DEFAULT_IS_CHECKED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLTEXTAREA_SET_DEFAULT_VALUE_UPDATES_VALUE; import java.io.PrintWriter; import java.util.Collection; @@ -178,7 +178,7 @@ } // for FF, if value is still default value, change value too - if (hasFeature(HTMLINPUT_DEFAULT_IS_CHECKED) + if (hasFeature(HTMLTEXTAREA_SET_DEFAULT_VALUE_UPDATES_VALUE) && getText().equals(getDefaultValue())) { setTextInternal(defaultValue); } Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea2Test.java (rev 0) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea2Test.java 2013-05-01 16:13:34 UTC (rev 8253) @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2002-2013 Gargoyle Software Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gargoylesoftware.htmlunit.html; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; + +/** + * Tests for {@link HtmlTextInput}. + * + * @version $Revision$ + * @author Ronald Brill + */ +@RunWith(BrowserRunner.class) +public class HtmlTextArea2Test extends WebDriverTestCase { + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts(DEFAULT = { "-", "default-default", "some text-default", "some text-newdefault" }, + IE = { "-", "-default", "some text-default", "some text-newdefault" }) + public void defaultValue() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var text = document.getElementById('testId');\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + + " text.defaultValue = 'default';\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + + " text.value = 'some text';\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + " text.defaultValue = 'newdefault';\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <textarea id='testId' value='initial'></textarea>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } +} Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextArea2Test.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Author Date Id Revision \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java (rev 0) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java 2013-05-01 16:13:34 UTC (rev 8253) @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2002-2013 Gargoyle Software Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gargoylesoftware.htmlunit.html; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; + +/** + * Tests for {@link HtmlTextInput}. + * + * @version $Revision$ + * @author Ronald Brill + */ +@RunWith(BrowserRunner.class) +public class HtmlTextInput2Test extends WebDriverTestCase { + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "initial-initial", "default-default" }) + public void defaultValue() throws Exception { + final String html = "<!DOCTYPE HTML>\n<html><head><title>foo</title>\n" + + "<script>\n" + + " function test() {\n" + + " var text = document.getElementById('testId');\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + + " text.defaultValue = 'default';\n" + + " alert(text.value + '-' + text.defaultValue);\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "<form>\n" + + " <input type='text' id='testId' value='initial'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } +} Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInput2Test.java ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Author Date Id Revision \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java 2013-05-01 14:08:36 UTC (rev 8252) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java 2013-05-01 16:13:34 UTC (rev 8253) @@ -265,7 +265,7 @@ final String[] expectedIE = { "before setting default values", /* Before setting default values. */ "text: initial1 initial1 false false", - "file: false false", + "file: initial2 false false", "image: initial3 initial3 false false", "radio: initial4 initial4 true true", "reset: initial5 initial5 false false", @@ -276,26 +276,26 @@ "checkbox: initial10 initial10 true true", "textarea: initial11 initial11 undefined undefined", "after setting default values", /* After setting default values. */ - "text: initial1 default1 false false", + "text: default1 default1 false false", "file: default2 false false", "image: default3 default3 false false", - "radio: default4 default4 true false", - "reset: initial5 default5 false false", - "hidden: initial6 default6 false false", - "button: initial7 default7 false false", - "submit: initial8 default8 false false", - "password: initial9 default9 false false", - "checkbox: default10 default10 true false", + "radio: default4 default4 false false", + "reset: default5 default5 false false", + "hidden: default6 default6 false false", + "button: default7 default7 false false", + "submit: default8 default8 false false", + "password: default9 default9 false false", + "checkbox: default10 default10 false false", "textarea: initial11 default11 undefined undefined", "after resetting the form", /* After resetting the form. */ "text: default1 default1 false false", "file: default2 false false", "image: default3 default3 false false", "radio: default4 default4 false false", - "reset: initial5 default5 false false", + "reset: default5 default5 false false", "hidden: default6 default6 false false", - "button: initial7 default7 false false", - "submit: initial8 default8 false false", + "button: default7 default7 false false", + "submit: default8 default8 false false", "password: default9 default9 false false", "checkbox: default10 default10 false false", "textarea: default11 default11 undefined undefined" }; @@ -342,7 +342,7 @@ final String[] expectedAlerts = getBrowserVersion().isFirefox() ? expectedFF : expectedIE; setExpectedAlerts(expectedAlerts); - final String html = "<html>\n" + final String html = "<!DOCTYPE HTML>\n<html>\n" + " <head>\n" + " <title>Reset Test</title>\n" + " <script>\n" |