From: <mgu...@us...> - 2007-04-02 11:04:15
|
Revision: 1358 http://svn.sourceforge.net/htmlunit/?rev=1358&view=rev Author: mguillem Date: 2007-04-02 04:04:11 -0700 (Mon, 02 Apr 2007) Log Message: ----------- JavaScript: fixed remaining problem of submitted select values when select.selectedIndex = -1 has been used before setting an other value. (#1684652) Modified Paths: -------------- trunk/htmlunit/src/java/com/gargoylesoftware/htmlunit/html/HtmlSelect.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/SelectTest.java trunk/htmlunit/src/xdocs/changes.xml Modified: trunk/htmlunit/src/java/com/gargoylesoftware/htmlunit/html/HtmlSelect.java =================================================================== --- trunk/htmlunit/src/java/com/gargoylesoftware/htmlunit/html/HtmlSelect.java 2007-04-02 10:27:18 UTC (rev 1357) +++ trunk/htmlunit/src/java/com/gargoylesoftware/htmlunit/html/HtmlSelect.java 2007-04-02 11:04:11 UTC (rev 1358) @@ -303,6 +303,8 @@ public Page setSelectedAttribute( final HtmlOption selectedOption, final boolean isSelected ) { final boolean triggerHandler = (selectedOption.isSelected() != isSelected); + fakeSelectedValues_ = null; + // caution the HtmlOption may have been created from js and therefore the select now need // to "know" that it is selected if (isMultipleSelectEnabled()) { Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/SelectTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/SelectTest.java 2007-04-02 10:27:18 UTC (rev 1357) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/SelectTest.java 2007-04-02 11:04:11 UTC (rev 1358) @@ -37,6 +37,7 @@ */ package com.gargoylesoftware.htmlunit.javascript.host; +import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -49,6 +50,7 @@ import com.gargoylesoftware.htmlunit.SubmitMethod; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.WebTestCase; +import com.gargoylesoftware.htmlunit.html.ClickableElement; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlOption; import com.gargoylesoftware.htmlunit.html.HtmlPage; @@ -942,4 +944,26 @@ final HtmlPage page2 = (HtmlPage) page.getFormByName("test").getSelectByName("select1").getOption(0).click(); assertEquals("page 2", page2.getTitleText()); } + + /** + * Test for 1684652 + * @throws Exception if the test fails + */ + public void testSelectedIndexReset() throws Exception { + final String content + = "<html><head><title>first</title></head>" + + "<body onload='document.forms[0].testSelect.selectedIndex = -1; document.forms[0].testSelect.options[0].selected=true;'>" + + "<form>" + + "<select name='testSelect'>" + + "<option value='testValue'>value</option>" + + "</select>" + + "<input id='testButton' type='submit'>" + + "</form>" + + "</body></html>"; + + final HtmlPage page = loadPage(content); + final Page page2 = ((ClickableElement) page.getHtmlElementById("testButton")).click(); + final URL url2 = page2.getWebResponse().getUrl(); + assertTrue("Select in url " + url2, url2.toExternalForm().indexOf("testSelect=testValue") != -1); + } } Modified: trunk/htmlunit/src/xdocs/changes.xml =================================================================== --- trunk/htmlunit/src/xdocs/changes.xml 2007-04-02 10:27:18 UTC (rev 1357) +++ trunk/htmlunit/src/xdocs/changes.xml 2007-04-02 11:04:11 UTC (rev 1358) @@ -7,6 +7,9 @@ <body> <release version="1.12-prerelease"> + <action type="update" dev="mguillem" id="1684652"> + JavaScript: fixed remaining problem of submitted select values when select.selectedIndex = -1 has been used before setting an other value. + </action> <action type="update" dev="mguillem" id="1692572" due-to="Ahmed Ashour"> JavaScript: setting innerHTML to emtpy string souldn't create any text node. </action> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |