From: <asa...@us...> - 2014-05-03 23:38:19
|
Revision: 9327 http://sourceforge.net/p/htmlunit/code/9327 Author: asashour Date: 2014-05-03 23:38:15 +0000 (Sat, 03 May 2014) Log Message: ----------- JavaScript: ComputedCSSStyleDeclaration.getPropertyValue is supported in Chrome. Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml 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/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-03 18:51:22 UTC (rev 9326) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-03 23:38:15 UTC (rev 9327) @@ -9,6 +9,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> <action type="update" dev="asashour"> + JavaScript: ComputedCSSStyleDeclaration.getPropertyValue is supported in Chrome. + </action> + <action type="update" dev="asashour"> KeyDataPair: marked as internal API. </action> <action type="fix" dev="rbri" issue="1593"> 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 2014-05-03 18:51:22 UTC (rev 9326) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java 2014-05-03 23:38:15 UTC (rev 9327) @@ -3997,7 +3997,7 @@ * @param name the style property name * @return empty string if nothing found */ - @JsxFunction({ @WebBrowser(FF), @WebBrowser(value = IE, minVersion = 9) }) + @JsxFunction({ @WebBrowser(FF), @WebBrowser(CHROME), @WebBrowser(value = IE, minVersion = 9) }) public String getPropertyValue(final String name) { if (name != null && name.contains("-")) { final Object value = getProperty(this, camelize(name)); 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 2014-05-03 18:51:22 UTC (rev 9326) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java 2014-05-03 23:38:15 UTC (rev 9327) @@ -14,6 +14,7 @@ */ package com.gargoylesoftware.htmlunit.javascript.host.css; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.CHROME; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; @@ -1247,8 +1248,9 @@ */ @Test @Alerts(DEFAULT = { "", "rgb(0, 0, 255)" }, + CHROME = { "null", "rgb(0, 0, 255)" }, IE8 = "exception") - @NotYetImplemented({ FF, IE11 }) + @NotYetImplemented({ FF, CHROME, IE11 }) public void getPropertyValue() throws Exception { final String html = "<html><head><title>First</title><script>\n" + "function doTest() {\n" |
From: <rb...@us...> - 2014-05-04 15:06:33
|
Revision: 9331 http://sourceforge.net/p/htmlunit/code/9331 Author: rbri Date: 2014-05-04 15:06:28 +0000 (Sun, 04 May 2014) Log Message: ----------- feature naming and one more fix for IE11 Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElement.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-04 13:17:13 UTC (rev 9330) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-04 15:06:28 UTC (rev 9331) @@ -342,10 +342,6 @@ @BrowserFeature(@WebBrowser(IE)) GENERATED_63, - /** Was originally .isIE(). */ - @BrowserFeature(@WebBrowser(IE)) - GENERATED_80, - /** If the class name is [object GeoGeolocation]. */ @BrowserFeature(@WebBrowser(value = FF, maxVersion = 17)) GEO_GEOLOCATION, @@ -970,6 +966,10 @@ @BrowserFeature(@WebBrowser(IE)) JS_FORM_REJECT_INVALID_ENCODING, + /** Support for document.formName('inputName'). */ + @BrowserFeature(@WebBrowser(value = IE, maxVersion = 10)) + JS_FORM_USABLE_AS_FUNCTIOM, + /** Indicated that the body of a not yet loaded frame/iframe is null. */ @BrowserFeature(@WebBrowser(value = IE, maxVersion = 9)) JS_FRAME_BODY_NULL_IF_NOT_LOADED, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElement.java 2014-05-04 13:17:13 UTC (rev 9330) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElement.java 2014-05-04 15:06:28 UTC (rev 9331) @@ -16,9 +16,9 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.FORMFIELD_REACHABLE_BY_NEW_NAMES; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.FORMFIELD_REACHABLE_BY_ORIGINAL_NAME; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_80; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_FORM_ACTION_EXPANDURL; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_FORM_REJECT_INVALID_ENCODING; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_FORM_USABLE_AS_FUNCTIOM; import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.IE; import java.net.MalformedURLException; @@ -478,7 +478,7 @@ * {@inheritDoc} */ public Object call(final Context cx, final Scriptable scope, final Scriptable thisObj, final Object[] args) { - if (!getBrowserVersion().hasFeature(GENERATED_80)) { + if (!getBrowserVersion().hasFeature(JS_FORM_USABLE_AS_FUNCTIOM)) { throw Context.reportRuntimeError("Not a function."); } if (args.length > 0) { @@ -497,7 +497,7 @@ * {@inheritDoc} */ public Scriptable construct(final Context cx, final Scriptable scope, final Object[] args) { - if (!getBrowserVersion().hasFeature(GENERATED_80)) { + if (!getBrowserVersion().hasFeature(JS_FORM_USABLE_AS_FUNCTIOM)) { throw Context.reportRuntimeError("Not a function."); } return null; 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 2014-05-04 13:17:13 UTC (rev 9330) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java 2014-05-04 15:06:28 UTC (rev 9331) @@ -1296,4 +1296,28 @@ getMockWebConnection().setResponse(new URL(getDefaultUrl() + "page2"), page2); loadPageWithAlerts2(container); } + + /** + * Another strange IE feature. + * @throws Exception if the test fails + */ + @Test + @Alerts(DEFAULT = "exception", IE8 = "[object]") + public void asFunction() throws Exception { + final String html + = "<html><head><title>foo</title><script>\n" + + "function go() {\n" + + " try {\n" + + " alert(document.simple_form('inp1'));\n" + + " } catch(e) { alert('exception'); }\n" + + "}\n" + + "</script></head>\n" + + "<body onload='go()'>\n" + + "<form name='simple_form'>\n" + + " <input name='inp1'>\n" + + "</form>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } } |
From: <rb...@us...> - 2014-05-04 17:40:28
|
Revision: 9333 http://sourceforge.net/p/htmlunit/code/9333 Author: rbri Date: 2014-05-04 17:40:24 +0000 (Sun, 04 May 2014) Log Message: ----------- IE11 progress Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-04 15:49:33 UTC (rev 9332) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-04 17:40:24 UTC (rev 9333) @@ -959,7 +959,7 @@ JS_FORM_REJECT_INVALID_ENCODING, /** Support for document.formName('inputName'). */ - @BrowserFeature(@WebBrowser(value = IE, maxVersion = 10)) + @BrowserFeature(@WebBrowser(IE)) JS_FORM_USABLE_AS_FUNCTIOM, /** Indicated that the body of a not yet loaded frame/iframe is null. */ 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 2014-05-04 15:49:33 UTC (rev 9332) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java 2014-05-04 17:40:24 UTC (rev 9333) @@ -1296,28 +1296,4 @@ getMockWebConnection().setResponse(new URL(getDefaultUrl() + "page2"), page2); loadPageWithAlerts2(container); } - - /** - * Another strange IE feature. - * @throws Exception if the test fails - */ - @Test - @Alerts(DEFAULT = "exception", IE8 = "[object]") - public void asFunction() throws Exception { - final String html - = "<html><head><title>foo</title><script>\n" - + "function go() {\n" - + " try {\n" - + " alert(document.simple_form('inp1'));\n" - + " } catch(e) { alert('exception'); }\n" - + "}\n" - + "</script></head>\n" - + "<body onload='go()'>\n" - + "<form name='simple_form'>\n" - + " <input name='inp1'>\n" - + "</form>\n" - + "</body></html>"; - - loadPageWithAlerts2(html); - } } |
From: <asa...@us...> - 2014-05-05 11:01:33
|
Revision: 9334 http://sourceforge.net/p/htmlunit/code/9334 Author: asashour Date: 2014-05-05 11:01:28 +0000 (Mon, 05 May 2014) Log Message: ----------- JavaScript: Node.textContent can be set in Chrome. Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NodeTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-04 17:40:24 UTC (rev 9333) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-05 11:01:28 UTC (rev 9334) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="add" dev="asashour"> + JavaScript: Node.textContent can be set in Chrome. + </action> <action type="update" dev="asashour"> JavaScript: ComputedCSSStyleDeclaration.getPropertyValue is supported in Chrome. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java 2014-05-04 17:40:24 UTC (rev 9333) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java 2014-05-05 11:01:28 UTC (rev 9334) @@ -1009,7 +1009,7 @@ * Replace all children elements of this element with the supplied value. * @param value - the new value for the contents of this node */ - @JsxSetter({ @WebBrowser(FF), @WebBrowser(value = IE, minVersion = 11) }) + @JsxSetter({ @WebBrowser(CHROME), @WebBrowser(FF), @WebBrowser(value = IE, minVersion = 11) }) public void setTextContent(final Object value) { getDomNodeOrDie().setTextContent(value == null ? null : Context.toString(value)); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NodeTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NodeTest.java 2014-05-04 17:40:24 UTC (rev 9333) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NodeTest.java 2014-05-05 11:01:28 UTC (rev 9334) @@ -502,7 +502,7 @@ final String html = "<html>\n" + " <head>\n" - + " <script type='text/javascript'>\n" + + " <script>\n" + " function go() {\n" + " var node = document.createElement('button');\n" + " var f = function() { alert('in click') };\n" @@ -910,7 +910,7 @@ final String html = "<html>\n" + " <head>\n" - + " <script type='text/javascript'>\n" + + " <script>\n" + " function test() {\n" + " var node = document.createElement('button');\n" + " alert(node.addEventListener !== undefined);\n" @@ -986,7 +986,7 @@ final String html = "<html>\n" + " <head>\n" - + " <script type='text/javascript'>\n" + + " <script>\n" + " function go() {\n" + " var node = document.getElementById('foo');\n" + " var clone = node.cloneNode(true);\n" @@ -1006,4 +1006,31 @@ final String value = element.getAttribute("id"); assertEquals("bar", value); } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts(DEFAULT = "Hello", IE8 = "") + public void setTextContent() throws Exception { + final String html = + "<html>\n" + + " <head>\n" + + " <script>\n" + + " function test() {\n" + + " var node = document.getElementById('foo');\n" + + " foo.textContent = 'Hello';\n" + + " if (foo.firstChild) {\n" + + " alert(foo.firstChild.wholeText);\n" + + " }\n" + + " }\n" + + " </script>\n" + + " </head>\n" + + " <body onload='test()'>\n" + + " <span id='foo'></span>\n" + + " </body>\n" + + "</html>"; + + loadPageWithAlerts2(html); + } } |
From: <rb...@us...> - 2014-05-10 15:36:22
|
Revision: 9344 http://sourceforge.net/p/htmlunit/code/9344 Author: rbri Date: 2014-05-10 15:36:20 +0000 (Sat, 10 May 2014) Log Message: ----------- IE11 progress Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Window.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFrameElement2Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-08 19:45:29 UTC (rev 9343) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-10 15:36:20 UTC (rev 9344) @@ -1448,12 +1448,14 @@ @BrowserFeature(@WebBrowser(IE)) JS_WINDOW_FORMFIELDS_ACCESSIBLE_BY_NAME, - /** Support for accessing the frame of a window by id additionally - * to using the name (FF). - */ + /** Support for accessing the frame of a window by id additionally to using the name (FF). */ @BrowserFeature({ @WebBrowser(IE) }) JS_WINDOW_FRAMES_ACCESSIBLE_BY_ID, + /** <code>window..frames['id']</code> returns the frame window instead of the frame element. */ + @BrowserFeature(@WebBrowser(value = IE, minVersion = 11)) + JS_WINDOW_FRAME_BY_ID_RETURNS_WINDOW, + /** Window property usable as function. */ @BrowserFeature(@WebBrowser(value = IE, maxVersion = 9)) JS_WINDOW_IS_A_FUNCTION, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Window.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Window.java 2014-05-08 19:45:29 UTC (rev 9343) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Window.java 2014-05-10 15:36:20 UTC (rev 9344) @@ -21,6 +21,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_WINDOW_CHANGE_OPENER_ONLY_WINDOW_OBJECT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_WINDOW_FORMFIELDS_ACCESSIBLE_BY_NAME; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_WINDOW_FRAMES_ACCESSIBLE_BY_ID; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_WINDOW_FRAME_BY_ID_RETURNS_WINDOW; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_WINDOW_IS_A_FUNCTION; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_WINDOW_ONERROR_COLUMN_ARGUMENT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_WINDOW_POST_MESSAGE_ALLOW_INVALID_PORT; @@ -93,6 +94,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlEmbed; import com.gargoylesoftware.htmlunit.html.HtmlForm; +import com.gargoylesoftware.htmlunit.html.HtmlFrame; import com.gargoylesoftware.htmlunit.html.HtmlImage; import com.gargoylesoftware.htmlunit.html.HtmlInput; import com.gargoylesoftware.htmlunit.html.HtmlLink; @@ -1355,7 +1357,14 @@ // May be attempting to retrieve element by ID (try map-backed operation again instead of XPath). try { final HtmlElement htmlElement = page.getHtmlElementById(name); - result = getScriptableFor(htmlElement); + if (getBrowserVersion().hasFeature(JS_WINDOW_FRAME_BY_ID_RETURNS_WINDOW) + && htmlElement instanceof HtmlFrame) { + final HtmlFrame frame = (HtmlFrame) htmlElement; + result = getScriptableFor(frame.getEnclosedWindow()); + } + else { + result = getScriptableFor(htmlElement); + } } catch (final ElementNotFoundException e) { result = NOT_FOUND; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFrameElement2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFrameElement2Test.java 2014-05-08 19:45:29 UTC (rev 9343) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFrameElement2Test.java 2014-05-10 15:36:20 UTC (rev 9344) @@ -17,6 +17,7 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF17; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE8; import java.net.URL; @@ -151,7 +152,7 @@ @Test @Alerts(DEFAULT = { "function handler() {}", "null", "null" }, IE8 = { "function handler() {}", "null", "exception" }) - @NotYetImplemented({ FF17, FF24, IE8 }) + @NotYetImplemented({ FF17, FF24, IE8, IE11 }) // Currently a \n is put between the {} public void onloadNull() throws Exception { final String html = @@ -374,8 +375,14 @@ + "</frameset>\n" + "</html>"; - final String frame1 = "<html><head><title>1</title></head>\n" - + "<body onload=\"alert(parent.frames['f1'])\"></body>\n" + final String frame1 = "<html><head><title>f1</title>\n" + + "<script type='text/javascript'>\n" + + " function test() {\n" + + " alert(parent.frames['f1']);\n" + + " }\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test();'></body>\n" + "</html>"; getMockWebConnection().setResponse(URL_FIRST, mainHtml); |
From: <rb...@us...> - 2014-05-10 18:34:29
|
Revision: 9346 http://sourceforge.net/p/htmlunit/code/9346 Author: rbri Date: 2014-05-10 18:34:26 +0000 (Sat, 10 May 2014) Log Message: ----------- IE11 progress; some more tests for select.value = 'val' Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlSelect.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-10 17:30:23 UTC (rev 9345) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-10 18:34:26 UTC (rev 9346) @@ -1296,6 +1296,11 @@ @BrowserFeature(@WebBrowser(IE)) JS_SELECT_OPTIONS_NULL_FOR_OUTSIDE, + /** Indicates that select.value = 'val' only checks the value attribute and + * not the option text. */ + @BrowserFeature(@WebBrowser(value = IE, minVersion = 11)) + JS_SELECT_SET_VALUES_CHECKS_ONLY_VALUE_ATTRIBUTE, + /** Indicates that the set attribute method is able to update the event handlers also. * e.g. element.setAttribute("onclick", "test(1);"); */ @BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME), @WebBrowser(value = IE, minVersion = 11) }) Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlSelect.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlSelect.java 2014-05-10 17:30:23 UTC (rev 9345) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlSelect.java 2014-05-10 18:34:26 UTC (rev 9346) @@ -15,6 +15,7 @@ package com.gargoylesoftware.htmlunit.html; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_SELECT_DISPLAY_INLINE; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SELECT_SET_VALUES_CHECKS_ONLY_VALUE_ATTRIBUTE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.SELECT_DESELECT_ALL_IF_SWITCHING_UNKNOWN; import java.util.ArrayList; @@ -279,7 +280,15 @@ public <P extends Page> P setSelectedAttribute(final String optionValue, final boolean isSelected, final boolean invokeOnFocus) { try { - return (P) setSelectedAttribute(getOptionByValue(optionValue), isSelected, invokeOnFocus); + final boolean attributeOnly = hasFeature(JS_SELECT_SET_VALUES_CHECKS_ONLY_VALUE_ATTRIBUTE); + final HtmlOption selected; + if (attributeOnly) { + selected = getOptionByValueStrict(optionValue); + } + else { + selected = getOptionByValue(optionValue); + } + return setSelectedAttribute(selected, isSelected, invokeOnFocus); } catch (final ElementNotFoundException e) { if (hasFeature(SELECT_DESELECT_ALL_IF_SWITCHING_UNKNOWN)) { @@ -458,6 +467,16 @@ throw new ElementNotFoundException("option", "value", value); } + private HtmlOption getOptionByValueStrict(final String value) throws ElementNotFoundException { + WebAssert.notNull("value", value); + for (final HtmlOption option : getOptions()) { + if (option.getAttribute("value").equals(value)) { + return option; + } + } + throw new ElementNotFoundException("option", "value", value); + } + /** * Returns the {@link HtmlOption} object that has the specified text. * Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java 2014-05-10 17:30:23 UTC (rev 9345) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java 2014-05-10 18:34:26 UTC (rev 9346) @@ -1174,9 +1174,60 @@ * @throws Exception if the test fails */ @Test + @Alerts({ "two", "one" }) + public void valueByValue() throws Exception { + final String html = + "<html><head>\n" + + "<script>\n" + + " function test() {\n" + + " var select = document.getElementById('mySelect');\n" + + " alert(select.value);\n" + + " select.value = 'one';\n" + + " alert(select.value);\n" + + " }\n" + + "</script>\n" + + "<body onload='test()'>\n" + + " <select id='mySelect'>\n" + + " <option value='one'>1</option>\n" + + " <option selected value='two'>2</option>\n" + + " </select>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts(FF = { "two", "two" }, + IE = { "two", "" }) + public void valueByValueCase() throws Exception { + final String html = + "<html><head>\n" + + "<script>\n" + + " function test() {\n" + + " var select = document.getElementById('mySelect');\n" + + " alert(select.value);\n" + + " select.value = 'One';\n" + + " alert(select.value);\n" + + " }\n" + + "</script>\n" + + "<body onload='test()'>\n" + + " <select id='mySelect'>\n" + + " <option value='one'>1</option>\n" + + " <option selected value='two'>2</option>\n" + + " </select>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test @Alerts(FF = { "two", "One" }, IE = { "two", "" }) - public void value2() throws Exception { + public void valueByText() throws Exception { final String html = "<html><head>\n" + "<script>\n" @@ -1200,6 +1251,32 @@ * @throws Exception if the test fails */ @Test + @Alerts(FF = { "two", "One" }, + IE = { "two", "" }) + public void valueByTextTrim() throws Exception { + final String html = + "<html><head>\n" + + "<script>\n" + + " function test() {\n" + + " var select = document.getElementById('mySelect');\n" + + " alert(select.value);\n" + + " select.value = 'One';\n" + + " alert(select.value);\n" + + " }\n" + + "</script>\n" + + "<body onload='test()'>\n" + + " <select id='mySelect'>\n" + + " <option> One </option>\n" + + " <option selected value='two'>Two</option>\n" + + " </select>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test @Alerts(FF = { "two", "two" }, IE = { "two", "" }) public void valueNull() throws Exception { |
From: <mgu...@us...> - 2014-05-12 13:40:39
|
Revision: 9351 http://sourceforge.net/p/htmlunit/code/9351 Author: mguillem Date: 2014-05-12 13:40:36 +0000 (Mon, 12 May 2014) Log Message: ----------- HTML parsing: move illegal content found within a table before the table (#1598) Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLElementsTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElementTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-12 12:12:56 UTC (rev 9350) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-12 13:40:36 UTC (rev 9351) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="mguillem" issue="1598"> + HTML parsing: move illegal content found within a table before the table. + </action> <action type="add" dev="asashour"> JavaScript: Node.textContent can be set in Chrome. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2014-05-12 12:12:56 UTC (rev 9350) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2014-05-12 13:40:36 UTC (rev 9351) @@ -15,11 +15,11 @@ package com.gargoylesoftware.htmlunit.html; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.DOCTYPE_IS_COMMENT; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTML_ATTRIBUTE_LOWER_CASE; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTML_CDATA_AS_COMMENT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLCONDITIONAL_COMMENTS; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLIFRAME_IGNORE_SELFCLOSING; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLPARSER_REMOVE_EMPTY_CONTENT; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTML_ATTRIBUTE_LOWER_CASE; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTML_CDATA_AS_COMMENT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.IGNORE_CONTENTS_OF_INNER_HEAD; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DEFINE_GETTER; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.META_X_UA_COMPATIBLE; @@ -31,17 +31,19 @@ import java.io.StringReader; import java.lang.reflect.InvocationTargetException; import java.net.URL; +import java.util.ArrayDeque; import java.util.ArrayList; +import java.util.Deque; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Stack; import net.sourceforge.htmlunit.corejs.javascript.Scriptable; import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.apache.xerces.parsers.AbstractSAXParser; import org.apache.xerces.util.DefaultErrorHandler; @@ -388,7 +390,7 @@ private final HtmlPage page_; private Locator locator_; - private final Stack<DomNode> stack_ = new Stack<DomNode>(); + private final Deque<DomNode> stack_ = new ArrayDeque<DomNode>(); private DomNode currentNode_; private StringBuilder characters_; @@ -639,20 +641,62 @@ private void addNodeToRightParent(final DomNode currentNode, final DomElement newElement) { final String currentNodeName = currentNode.getNodeName(); final String newNodeName = newElement.getNodeName(); + + DomNode parent = currentNode; - // this only fixes bug http://sourceforge.net/support/tracker.php?aid=2767865 - // TODO: understand in which cases it should be done to generalize it!!! - if ("table".equals(currentNodeName) && "div".equals(newNodeName)) { - currentNode.insertBefore(newElement); + if ("tr".equals(newNodeName) && !isTableChild(currentNodeName)) { + parent = dequeueMalformedElementsUntil("tbody", "thead", "tfoot"); } + else if (isTableChild(newNodeName) && !"table".equals(currentNodeName)) { + parent = dequeueMalformedElementsUntil("table"); + } + + if ("table".equals(currentNodeName) && !isTableChild(newNodeName)) { + parent.insertBefore(newElement); + if ("form".equals(newNodeName)) { + newElement.appendChild(parent); + } + } + else if (isTableChild(currentNodeName) && !"tr".equals(newNodeName) + && !("col".equals(newNodeName) && "colgroup".equals(currentNodeName))) { + final DomNode table = currentNode.getParentNode(); + table.insertBefore(newElement); + } else if (head_ != null && "title".equals(newNodeName) && !parsingInnerHead_) { head_.appendChild(newElement); } else { - currentNode.appendChild(newElement); + parent.appendChild(newElement); } } + + private DomNode dequeueMalformedElementsUntil(final String... searchedElementNames) { + DomNode searchedNode = null; + for (final DomNode node : stack_) { + if (ArrayUtils.contains(searchedElementNames, node.getNodeName())) { + searchedNode = node; + break; + } + } + if (searchedNode == null) { + searchedNode = stack_.peek(); // this is surely wrong but at least it won't throw a NPE + } + else { + // remove all elements from the stack until the found node + while (stack_.peek() != searchedNode) { + stack_.pop(); + } + } + return searchedNode; + } + + private boolean isTableChild(final String nodeName) { + return "thead".equals(nodeName) || "tbody".equals(nodeName) + || "tfoot".equals(nodeName) || "caption".equals(nodeName) + || "colgroup".equals(nodeName); + } + /** {@inheritDoc} */ @Override public void endElement(final QName element, final Augmentations augs) Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLElementsTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLElementsTest.java 2014-05-12 12:12:56 UTC (rev 9350) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLElementsTest.java 2014-05-12 13:40:36 UTC (rev 9351) @@ -1134,7 +1134,7 @@ @Test @Alerts(DEFAULT = "0", IE8 = "1") - @NotYetImplemented({ FF, IE11 }) + @NotYetImplemented(IE8) public void elementClosesItself_table() throws Exception { loadPageWithAlerts2(elementClosesItself("table")); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java 2014-05-12 12:12:56 UTC (rev 9350) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java 2014-05-12 13:40:36 UTC (rev 9351) @@ -118,7 +118,7 @@ } /** - * Test for <a href="http://sourceforge.net/support/tracker.php?aid=2767865">Bug 2767865</a>. + * Test for <a href="https://sourceforge.net/p/nekohtml/bugs/68/">Bug 68</a>. * In fact this is not fully correct because IE (6 at least) does something very strange * and keeps the DIV in TABLE but wraps it in a node without name. * @throws Exception if the test fails @@ -370,4 +370,35 @@ loadPageWithAlerts2(html); } + + /** + * Regression test for bug 1598. + * @throws Exception if an error occurs + */ + @Test + @Alerts({ "DOC", "1" }) + public void unknownTagInTable() throws Exception { + final String html = "<html><body>" + + "<table id='it'><doc><tr><td>hello</td></tr></doc></table>" + + "<script>\n" + + "alert(document.body.firstChild.tagName);\n" + + "alert(document.getElementById('it').rows.length);\n" + + "</script></body></html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts({ "DOC", "1" }) + public void unknownTagInTbody() throws Exception { + final String html = "<html><body>" + + "<table id='it'><tbody><doc><tr><td>hello</td></tr></doc></tbody></table>" + + "<script>\n" + + "alert(document.body.firstChild.tagName);\n" + + "alert(document.getElementById('it').rows.length);\n" + + "</script></body></html>"; + loadPageWithAlerts2(html); + } } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElementTest.java 2014-05-12 12:12:56 UTC (rev 9350) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElementTest.java 2014-05-12 13:40:36 UTC (rev 9351) @@ -373,4 +373,22 @@ + "</body></html>"; loadPageWithAlerts2(html); } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts(DEFAULT = "<table><colgroup><col></colgroup></table>", + IE8 = "<TABLE><COLGROUP><COL></COLGROUP></TABLE>") + public void parsing() throws Exception { + final String html + = "<html><body><div>" + + "<table><colgroup><col></colgroup></table>" + + "</div>\n" + + "<script>\n" + + "alert(document.body.firstChild.innerHTML);\n" + + "</script>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } } |
From: <rb...@us...> - 2014-05-13 19:36:01
|
Revision: 9356 http://sourceforge.net/p/htmlunit/code/9356 Author: rbri Date: 2014-05-13 19:35:54 +0000 (Tue, 13 May 2014) Log Message: ----------- IE11 progress Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlScript.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLScriptElementTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-13 19:08:45 UTC (rev 9355) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-13 19:35:54 UTC (rev 9356) @@ -1249,8 +1249,14 @@ /** Javascript script tags supports the 'for' and the 'event' * attribute (IE). */ + @BrowserFeature(@WebBrowser(value = IE, maxVersion = 10)) + JS_SCRIPT_SUPPORTS_FOR_AND_EVENT_ELEMENT_BY_ID, + + /** Javascript script tags supports the 'for' and the 'event' + * attribute (IE). + */ @BrowserFeature(@WebBrowser(IE)) - JS_SCRIPT_SUPPORTS_FOR_AND_EVENT, + JS_SCRIPT_SUPPORTS_FOR_AND_EVENT_WINDOW, /** Javascript script object supports the onreadystatechange event (IE). */ @BrowserFeature(@WebBrowser(value = IE, maxVersion = 9)) Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlScript.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlScript.java 2014-05-13 19:08:45 UTC (rev 9355) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlScript.java 2014-05-13 19:35:54 UTC (rev 9356) @@ -21,7 +21,8 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLSCRIPT_APPLICATION_JAVASCRIPT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLSCRIPT_TRIM_TYPE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SCRIPT_ALWAYS_REEXECUTE_ON_SRC_CHANGE; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SCRIPT_SUPPORTS_FOR_AND_EVENT; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SCRIPT_SUPPORTS_FOR_AND_EVENT_ELEMENT_BY_ID; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SCRIPT_SUPPORTS_FOR_AND_EVENT_WINDOW; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SCRIPT_SUPPORTS_ONREADYSTATECHANGE; import java.io.PrintWriter; @@ -314,16 +315,15 @@ event = event.substring(0, event.length() - 2); } - final boolean supportsEventFor = hasFeature(JS_SCRIPT_SUPPORTS_FOR_AND_EVENT); final String scriptCode = getScriptCode(); - if (supportsEventFor - && event != ATTRIBUTE_NOT_DEFINED && forr != ATTRIBUTE_NOT_DEFINED) { - if ("window".equals(forr)) { + if (event != ATTRIBUTE_NOT_DEFINED && forr != ATTRIBUTE_NOT_DEFINED) { + if (hasFeature(JS_SCRIPT_SUPPORTS_FOR_AND_EVENT_WINDOW) && "window".equals(forr)) { final Window window = (Window) getPage().getEnclosingWindow().getScriptObject(); final BaseFunction function = new EventHandler(this, event, scriptCode); window.attachEvent(event, function); + return; } - else { + if (hasFeature(JS_SCRIPT_SUPPORTS_FOR_AND_EVENT_ELEMENT_BY_ID)) { try { final HtmlElement elt = ((HtmlPage) getPage()).getHtmlElementById(forr); elt.setEventHandler(event, scriptCode); @@ -332,9 +332,10 @@ LOG.warn("<script for='" + forr + "' ...>: no element found with id \"" + forr + "\". Ignoring."); } + return; } } - else if (forr == ATTRIBUTE_NOT_DEFINED || "onload".equals(event)) { + if (forr == ATTRIBUTE_NOT_DEFINED || "onload".equals(event)) { final String url = getPage().getUrl().toExternalForm(); final int line1 = getStartLineNumber(); final int line2 = getEndLineNumber(); Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLScriptElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLScriptElementTest.java 2014-05-13 19:08:45 UTC (rev 9355) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLScriptElementTest.java 2014-05-13 19:35:54 UTC (rev 9356) @@ -630,8 +630,8 @@ * @throws Exception if the test fails */ @Test - @Alerts(FF = "exception", - IE = "hello") + @Alerts(DEFAULT = { "script-for", "exception", "script-body" }, + IE = { "script-body", "script-for", "hello" }) public void scriptForEvent() throws Exception { // IE accepts it with () or without scriptForEvent("onload"); @@ -641,13 +641,17 @@ private void scriptForEvent(final String eventName) throws Exception { final String html = "<html><head><title>foo</title>\n" + "<script FOR='window' EVENT='" + eventName + "' LANGUAGE='javascript'>\n" - + "try {\n" - + " document.form1.txt.value='hello';\n" - + " alert(document.form1.txt.value);\n" - + "} catch(e) {alert('exception'); }\n" + + " alert('script-for');\n" + + " try {\n" + + " document.form1.txt.value='hello';\n" + + " alert(document.form1.txt.value);\n" + + " } catch(e) {alert('exception'); }\n" + "</script></head>\n" + "<body>\n" - + " <form name='form1'><input type=text name='txt'></form>\n" + + " <form name='form1'><input type='text' name='txt'></form>\n" + + " <script>\n" + + " alert('script-body');\n" + + " </script>\n" + "</body></html>"; loadPageWithAlerts2(html); |
From: <asa...@us...> - 2014-05-21 05:56:20
|
Revision: 9360 http://sourceforge.net/p/htmlunit/code/9360 Author: asashour Date: 2014-05-21 05:56:13 +0000 (Wed, 21 May 2014) Log Message: ----------- JavaScript: fix .offsetHeight for empty <div>. Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml 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/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-19 16:44:16 UTC (rev 9359) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-21 05:56:13 UTC (rev 9360) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="asashour"> + JavaScript: fix .offsetHeight for empty <div>. + </action> <action type="fix" dev="mguillem" issue="1598"> HTML parsing: move illegal content found within a table before the table. </action> 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 2014-05-19 16:44:16 UTC (rev 9359) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java 2014-05-21 05:56:13 UTC (rev 9360) @@ -43,6 +43,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlButton; import com.gargoylesoftware.htmlunit.html.HtmlButtonInput; import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput; +import com.gargoylesoftware.htmlunit.html.HtmlDivision; import com.gargoylesoftware.htmlunit.html.HtmlElement; import com.gargoylesoftware.htmlunit.html.HtmlHiddenInput; import com.gargoylesoftware.htmlunit.html.HtmlInlineFrame; @@ -1279,7 +1280,8 @@ final boolean explicitHeightSpecified = super.getHeight().length() > 0; final int defaultHeight; - if (getElement().getFirstChild() == null) { + if (getElement().getFirstChild() == null + || (node instanceof HtmlDivision && node.getTextContent().trim().isEmpty())) { if (node instanceof HtmlButton || (node instanceof HtmlInput && !(node instanceof HtmlHiddenInput))) { defaultHeight = 20; @@ -1308,6 +1310,10 @@ int height = pixelValue(getElement(), new CssValue(defaultValue) { @Override public String get(final ComputedCSSStyleDeclaration style) { + final Element element = style.getElement(); + if (element instanceof HTMLBodyElement) { + return String.valueOf(element.getWindow().getWebWindow().getInnerHeight()); + } return style.getStyleAttribute("height"); } }); 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 2014-05-19 16:44:16 UTC (rev 9359) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java 2014-05-21 05:56:13 UTC (rev 9360) @@ -1301,4 +1301,85 @@ + "</body></html>"; loadPageWithAlerts2(html); } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts("0") + public void offsetHeight_empty_tag() throws Exception { + final String html = "<html><head><title>First</title><script>\n" + + " function test() {\n" + + " alert(document.getElementById('div1').offsetHeight);\n" + + " }\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'>\n" + + " <div id='div1'/>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts("0") + public void offsetHeight_empty() throws Exception { + final String html = "<html><head><title>First</title><script>\n" + + " function test() {\n" + + " alert(document.getElementById('div1').offsetHeight);\n" + + " }\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'>\n" + + " <div id='div1'></div>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts("20") + public void offsetHeight_with_content() throws Exception { + final String html = "<html><head><title>First</title><script>\n" + + " function test() {\n" + + " alert(document.getElementById('div1').offsetHeight);\n" + + " }\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'>\n" + + " <div id='div1'>foo</div>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ "true", "false" }) + public void offsetHeight_setting_height() throws Exception { + final String html = "<html><head><title>First</title>\n" + + "<style>\n" + + " .v-loading-indicator {\n" + + " height: 100%\n" + + " }\n" + + "</style>\n" + + "<script>\n" + + " function test() {\n" + + " var div1 = document.getElementById('div1');\n" + + " alert(div1.offsetHeight == 0);\n" + + " div1.className = 'v-loading-indicator';" + + " alert(div1.offsetHeight == 0);\n" + + " }\n" + + "</script>\n" + + "</head>\n" + + "<body onload='test()'>\n" + + " <div id='div1'/>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } } |
From: <asa...@us...> - 2014-05-21 07:14:58
|
Revision: 9361 http://sourceforge.net/p/htmlunit/code/9361 Author: asashour Date: 2014-05-21 07:14:54 +0000 (Wed, 21 May 2014) Log Message: ----------- Fixing build. Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-21 05:56:13 UTC (rev 9360) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-21 07:14:54 UTC (rev 9361) @@ -9,7 +9,7 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> <action type="fix" dev="asashour"> - JavaScript: fix .offsetHeight for empty <div>. + JavaScript: fix .offsetHeight for empty <div>. </action> <action type="fix" dev="mguillem" issue="1598"> HTML parsing: move illegal content found within a table before the table. 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 2014-05-21 05:56:13 UTC (rev 9360) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java 2014-05-21 07:14:54 UTC (rev 9361) @@ -1342,7 +1342,7 @@ * @throws Exception if the test fails */ @Test - @Alerts("20") + @Alerts(DEFAULT = "20", IE8 = "15") public void offsetHeight_with_content() throws Exception { final String html = "<html><head><title>First</title><script>\n" + " function test() {\n" Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2014-05-21 05:56:13 UTC (rev 9360) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2014-05-21 07:14:54 UTC (rev 9361) @@ -6492,7 +6492,6 @@ */ @Test @Alerts("0, 9, 9") - @NotYetImplemented(IE8) public void dimensions__height__() throws Exception { runTest("dimensions: height()"); } @@ -6503,7 +6502,6 @@ */ @Test @Alerts("0, 9, 9") - @NotYetImplemented(IE8) public void dimensions__height_Function_() throws Exception { runTest("dimensions: height(Function)"); } |
From: <rb...@us...> - 2014-05-22 18:39:22
|
Revision: 9365 http://sourceforge.net/p/htmlunit/code/9365 Author: rbri Date: 2014-05-22 18:39:19 +0000 (Thu, 22 May 2014) Log Message: ----------- IE11 progress Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.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/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-22 17:37:29 UTC (rev 9364) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-22 18:39:19 UTC (rev 9365) @@ -55,9 +55,13 @@ CAN_INHERIT_CSS_PROPERTY_VALUES, /** Indicates that the default value for height of elements is 15 instead of 20. */ - @BrowserFeature(@WebBrowser(IE)) + @BrowserFeature(@WebBrowser(value = IE, maxVersion = 10)) CSS_DEFAULT_ELEMENT_HEIGHT_15, + /** Indicates that the default value for height of elements is 18 instead of 20. */ + @BrowserFeature(@WebBrowser(value = IE, minVersion = 11)) + CSS_DEFAULT_ELEMENT_HEIGHT_18, + /** Indicates that the default value for height of elements is used instead * of the calculated value, if the calculated value is smaller. */ @BrowserFeature(@WebBrowser(value = IE, maxVersion = 9)) 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 2014-05-22 17:37:29 UTC (rev 9364) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java 2014-05-22 18:39:19 UTC (rev 9365) @@ -16,6 +16,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CAN_INHERIT_CSS_PROPERTY_VALUES; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_DEFAULT_ELEMENT_HEIGHT_15; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_DEFAULT_ELEMENT_HEIGHT_18; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_DEFAULT_ELEMENT_HEIGHT_MARKS_MIN; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_DEFAULT_WIDTH_AUTO; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_FONT_STRECH_DEFAULT_NORMAL; @@ -1280,8 +1281,10 @@ final boolean explicitHeightSpecified = super.getHeight().length() > 0; final int defaultHeight; - if (getElement().getFirstChild() == null - || (node instanceof HtmlDivision && node.getTextContent().trim().isEmpty())) { + if (node instanceof HtmlDivision && node.getTextContent().trim().isEmpty()) { + defaultHeight = 0; + } + else if (getElement().getFirstChild() == null) { if (node instanceof HtmlButton || (node instanceof HtmlInput && !(node instanceof HtmlHiddenInput))) { defaultHeight = 20; @@ -1302,6 +1305,9 @@ else if (getBrowserVersion().hasFeature(CSS_DEFAULT_ELEMENT_HEIGHT_15)) { defaultHeight = 15; } + else if (getBrowserVersion().hasFeature(CSS_DEFAULT_ELEMENT_HEIGHT_18)) { + defaultHeight = 18; + } else { defaultHeight = 20; } 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 2014-05-22 17:37:29 UTC (rev 9364) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java 2014-05-22 18:39:19 UTC (rev 9365) @@ -1342,7 +1342,7 @@ * @throws Exception if the test fails */ @Test - @Alerts(DEFAULT = "20", IE8 = "15") + @Alerts(DEFAULT = "20", IE11 = "18", IE8 = "15") public void offsetHeight_with_content() throws Exception { final String html = "<html><head><title>First</title><script>\n" + " function test() {\n" |
From: <asa...@us...> - 2014-05-23 08:48:19
|
Revision: 9367 http://sourceforge.net/p/htmlunit/code/9367 Author: asashour Date: 2014-05-23 08:48:15 +0000 (Fri, 23 May 2014) Log Message: ----------- trivial: organize imports (latest eclipse) Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HtmlUnitBrowserCompatCookieSpec.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlOption.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLOptionsCollection.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElement.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableElement.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLSerializer.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlFileInput2Test.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInputTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeArrayTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/ApplicationCacheTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DocumentTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NamedNodeMapTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NodeTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleRuleTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParserTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLEmbedElementTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLParagraphElementTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/MooTools121Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HtmlUnitBrowserCompatCookieSpec.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HtmlUnitBrowserCompatCookieSpec.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HtmlUnitBrowserCompatCookieSpec.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -15,8 +15,8 @@ package com.gargoylesoftware.htmlunit; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTTP_COOKIE_EXTENDED_DATE_PATTERNS; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTTP_COOKIE_EXTRACT_PATH_FROM_LOCATION; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTTP_COOKIE_START_DATE_1970; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTTP_COOKIE_EXTRACT_PATH_FROM_LOCATION; import java.util.Calendar; import java.util.Collections; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImageInput.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -24,6 +24,7 @@ import com.gargoylesoftware.htmlunit.ElementNotFoundException; import com.gargoylesoftware.htmlunit.Page; import com.gargoylesoftware.htmlunit.SgmlPage; +import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.javascript.host.Event; import com.gargoylesoftware.htmlunit.util.NameValuePair; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlOption.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlOption.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlOption.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -16,11 +16,9 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_DISPLAY_DEFAULT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONCLICK_FOR_SELECT_ONLY; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures. - EVENT_ONMOUSEDOWN_FOR_SELECT_OPTION_TRIGGERS_ADDITIONAL_DOWN_FOR_SELECT; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONMOUSEDOWN_FOR_SELECT_OPTION_TRIGGERS_ADDITIONAL_DOWN_FOR_SELECT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONMOUSEDOWN_NOT_FOR_SELECT_OPTION; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures. - EVENT_ONMOUSEUP_FOR_SELECT_OPTION_TRIGGERS_ADDITIONAL_UP_FOR_SELECT; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONMOUSEUP_FOR_SELECT_OPTION_TRIGGERS_ADDITIONAL_UP_FOR_SELECT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONMOUSEUP_NOT_FOR_SELECT_OPTION; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLOPTION_EMPTY_TEXT_IS_NO_CHILDREN; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLOPTION_PREVENT_DISABLED; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -21,6 +21,7 @@ import com.gargoylesoftware.htmlunit.javascript.NamedNodeMap; import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable; import com.gargoylesoftware.htmlunit.javascript.host.ActiveXObject; +import com.gargoylesoftware.htmlunit.javascript.host.ApplicationCache; import com.gargoylesoftware.htmlunit.javascript.host.Attr; import com.gargoylesoftware.htmlunit.javascript.host.BeforeUnloadEvent; import com.gargoylesoftware.htmlunit.javascript.host.BoxObject; @@ -56,7 +57,6 @@ import com.gargoylesoftware.htmlunit.javascript.host.Node; import com.gargoylesoftware.htmlunit.javascript.host.NodeFilter; import com.gargoylesoftware.htmlunit.javascript.host.NodeList; -import com.gargoylesoftware.htmlunit.javascript.host.ApplicationCache; import com.gargoylesoftware.htmlunit.javascript.host.Plugin; import com.gargoylesoftware.htmlunit.javascript.host.PluginArray; import com.gargoylesoftware.htmlunit.javascript.host.PointerEvent; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -22,8 +22,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_NODE_CHILDNODES_IGNORE_EMPTY_TEXT_NODES; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_NODE_CONTAINS_RETURNS_FALSE_FOR_INVALID_ARG; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_NODE_INSERT_BEFORE_REF_OPTIONAL; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures. - JS_NODE_INSERT_BEFORE_THROW_EXCEPTION_FOR_EXTRA_ARGUMENT; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_NODE_INSERT_BEFORE_THROW_EXCEPTION_FOR_EXTRA_ARGUMENT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_PREFIX_RETURNS_EMPTY_WHEN_UNDEFINED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML_SERIALIZER_APPENDS_CRLF; import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -14,8 +14,8 @@ */ package com.gargoylesoftware.htmlunit.javascript.host.html; +import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF; import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.IE; -import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF; import com.gargoylesoftware.htmlunit.html.HtmlKeygen; import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLOptionsCollection.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLOptionsCollection.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLOptionsCollection.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -14,8 +14,7 @@ */ package com.gargoylesoftware.htmlunit.javascript.host.html; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures. - JS_SELECT_OPTIONS_DONT_ADD_EMPTY_TEXT_CHILD_WHEN_EXPANDING; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SELECT_OPTIONS_DONT_ADD_EMPTY_TEXT_CHILD_WHEN_EXPANDING; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SELECT_OPTIONS_EXCEPTION_FOR_NEGATIVE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SELECT_OPTIONS_HAS_CHILDNODES_PROPERTY; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SELECT_OPTIONS_HAS_SELECT_CLASS_NAME; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElement.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElement.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -15,8 +15,7 @@ package com.gargoylesoftware.htmlunit.javascript.host.html; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INNER_HTML_READONLY_FOR_SOME_TAGS; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures. - JS_TABLE_COLUMN_WIDTH_DOES_NOT_RETURN_NEGATIVE_VALUES; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_TABLE_COLUMN_WIDTH_DOES_NOT_RETURN_NEGATIVE_VALUES; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_TABLE_SPAN_THROWS_EXCEPTION_IF_INVALID; import net.sourceforge.htmlunit.corejs.javascript.Context; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableElement.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableElement.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -16,8 +16,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INNER_HTML_READONLY_FOR_SOME_TAGS; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INNER_TEXT_READONLY_FOR_TABLE; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures. - JS_TABLE_SET_CAPTION_ALTHOUGH_ALREADY_SET_THROWS_ERROR; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_TABLE_SET_CAPTION_ALTHOUGH_ALREADY_SET_THROWS_ERROR; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_TABLE_SET_TFOOT_ALTHOUGH_ALREADY_SET_THROWS_ERROR; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_TABLE_SET_THEAD_ALTHOUGH_ALREADY_SET_THROWS_ERROR; import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.IE; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -27,8 +27,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_STATUS_THROWS_EXCEPTION_WHEN_UNSET; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_TRIGGER_ONLOAD_ON_COMPLETED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_WITHCREDENTIALS_ALLOW_ORIGIN_ALL; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures. - XHR_WITHCREDENTIALS_NOT_WRITEABLE_BEFORE_OPEN_EXCEPTION; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_WITHCREDENTIALS_NOT_WRITEABLE_BEFORE_OPEN_EXCEPTION; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_WITHCREDENTIALS_NOT_WRITEABLE_IN_SYNC; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_WITHCREDENTIALS_NOT_WRITEABLE_IN_SYNC_EXCEPTION; import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLSerializer.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLSerializer.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLSerializer.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -17,8 +17,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML_SERIALIZER_ADD_XHTML_NAMESPACE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML_SERIALIZER_APPENDS_CRLF; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML_SERIALIZER_BLANK_BEFORE_SELF_CLOSING; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures. - JS_XML_SERIALIZER_HTML_DOCUMENT_FRAGMENT_ALWAYS_EMPTY; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML_SERIALIZER_HTML_DOCUMENT_FRAGMENT_ALWAYS_EMPTY; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML_SERIALIZER_NON_EMPTY_TAGS; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML_SERIALIZER_ROOT_CDATA_AS_ESCAPED_TEXT; import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -17,8 +17,8 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF17; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE8; -import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import org.junit.Test; import org.junit.runner.RunWith; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlFileInput2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlFileInput2Test.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlFileInput2Test.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -41,8 +41,8 @@ import org.openqa.selenium.ie.InternetExplorerDriver; import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; import com.gargoylesoftware.htmlunit.BrowserVersion; -import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; import com.gargoylesoftware.htmlunit.WebDriverTestCase; /** Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInputTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInputTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHiddenInputTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -21,8 +21,8 @@ import org.openqa.selenium.WebElement; import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; import com.gargoylesoftware.htmlunit.WebDriverTestCase; -import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; /** * Tests for {@link HtmlHiddenInput}. Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -25,8 +25,8 @@ import org.openqa.selenium.WebElement; import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; import com.gargoylesoftware.htmlunit.WebDriverTestCase; -import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; /** * Tests for {@link HtmlPasswordInput}. Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeArrayTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeArrayTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeArrayTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -16,8 +16,8 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF17; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE8; -import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import org.junit.Test; import org.junit.runner.RunWith; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/ApplicationCacheTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/ApplicationCacheTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/ApplicationCacheTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -19,8 +19,8 @@ import com.gargoylesoftware.htmlunit.BrowserRunner; import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; import com.gargoylesoftware.htmlunit.html.HtmlPageTest; -import com.gargoylesoftware.htmlunit.WebDriverTestCase; /** * Tests for {@link ApplicationCache}. Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DocumentTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DocumentTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DocumentTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -14,15 +14,14 @@ */ package com.gargoylesoftware.htmlunit.javascript.host; -import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.LOAD_XML_DOCUMENT_FROM_FILE_FUNCTION; -import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.callLoadXMLDocumentFromFile; - import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.CHROME; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE8; +import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.LOAD_XML_DOCUMENT_FROM_FILE_FUNCTION; +import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.callLoadXMLDocumentFromFile; import java.net.URL; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NamedNodeMapTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NamedNodeMapTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NamedNodeMapTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -20,8 +20,8 @@ import com.gargoylesoftware.htmlunit.BrowserRunner; import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; import com.gargoylesoftware.htmlunit.BrowserRunner.NotYetImplemented; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; import com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest; -import com.gargoylesoftware.htmlunit.WebDriverTestCase; /** * Tests for {@link com.gargoylesoftware.htmlunit.javascript.NamedNodeMap}. Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NodeTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NodeTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/NodeTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -22,8 +22,7 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE9; import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.CREATE_XML_DOCUMENT_FUNCTION; import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.LOAD_XML_DOCUMENT_FROM_STRING_FUNCTION; -import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest. - SERIALIZE_XML_DOCUMENT_TO_STRING_FUNCTION; +import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.SERIALIZE_XML_DOCUMENT_TO_STRING_FUNCTION; import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.callCreateXMLDocument; import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.callLoadXMLDocumentFromString; import static com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocumentTest.callSerializeXMLDocumentToString; 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 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -18,8 +18,8 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF17; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE8; -import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import org.junit.Test; import org.junit.runner.RunWith; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleRuleTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleRuleTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleRuleTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -16,7 +16,6 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF17; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; -import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE8; import org.junit.Test; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParserTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParserTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParserTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -25,8 +25,8 @@ import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; import com.gargoylesoftware.htmlunit.BrowserRunner.Browsers; import com.gargoylesoftware.htmlunit.BrowserRunner.NotYetImplemented; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; import com.gargoylesoftware.htmlunit.html.HtmlPageTest; -import com.gargoylesoftware.htmlunit.WebDriverTestCase; /** * Tests for {@link DOMParser}. Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLEmbedElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLEmbedElementTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLEmbedElementTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -16,8 +16,8 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF17; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE8; -import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import org.junit.Test; import org.junit.runner.RunWith; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -17,8 +17,8 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF17; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF24; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE8; -import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; import org.junit.Test; import org.junit.runner.RunWith; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLParagraphElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLParagraphElementTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLParagraphElementTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -21,9 +21,9 @@ import com.gargoylesoftware.htmlunit.BrowserRunner; import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.WebDriverTestCase; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlParagraph; -import com.gargoylesoftware.htmlunit.WebDriverTestCase; /** * Tests for {@link HTMLParagraphElement}. Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -16,7 +16,6 @@ import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF; import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; - import static org.junit.Assert.assertSame; import org.junit.Test; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/MooTools121Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/MooTools121Test.java 2014-05-22 20:05:14 UTC (rev 9366) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/MooTools121Test.java 2014-05-23 08:48:15 UTC (rev 9367) @@ -31,8 +31,8 @@ import org.openqa.selenium.WebElement; import com.gargoylesoftware.htmlunit.BrowserRunner; +import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; import com.gargoylesoftware.htmlunit.WebDriverTestCase; -import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; /** * Tests for compatibility with version 1.2.1 of the <a href="http://mootools.net/">MooTools JavaScript library</a>. |
From: <rb...@us...> - 2014-05-24 13:33:26
|
Revision: 9371 http://sourceforge.net/p/htmlunit/code/9371 Author: rbri Date: 2014-05-24 13:33:19 +0000 (Sat, 24 May 2014) Log Message: ----------- migrate some tests and fix our ff impl Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage2Test.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage3Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-24 12:29:01 UTC (rev 9370) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-24 13:33:19 UTC (rev 9371) @@ -751,10 +751,6 @@ @BrowserFeature(@WebBrowser(value = IE, maxVersion = 9)) JS_DOCUMENT_APPEND_CHILD_SUPPORTED, - /** Closes the document implicitly, i.e. flushes the <tt>document.write</tt> buffer (IE only). */ - @BrowserFeature(@WebBrowser(IE)) - JS_DOCUMENT_CLOSE_IMPLICITLY, - /** Javascript function document.createElement can process html code. * e.g. document.createElement("<INPUT TYPE='RADIO' NAME='RADIOTEST' VALUE='First Choice'>") * @see "http://msdn.microsoft.com/en-us/library/ms536389%28v=VS.85%29.aspx" Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java 2014-05-24 12:29:01 UTC (rev 9370) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java 2014-05-24 13:33:19 UTC (rev 9371) @@ -35,7 +35,6 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLDOCUMENT_GET_PREFERS_STANDARD_FUNCTIONS; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_ANCHORS_REQUIRES_NAME_OR_ID; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOCUMENT_APPEND_CHILD_SUPPORTED; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOCUMENT_CLOSE_IMPLICITLY; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOCUMENT_CREATE_ELEMENT_EXTENDED_SYNTAX; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOCUMENT_DOCTYPE_NULL; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOCUMENT_DOMAIN_IS_LOWERCASE; @@ -1201,8 +1200,7 @@ * Closes the document implicitly, i.e. flushes the <tt>document.write</tt> buffer (IE only). */ private void implicitCloseIfNecessary() { - final boolean ie = getBrowserVersion().hasFeature(JS_DOCUMENT_CLOSE_IMPLICITLY); - if (!writeInCurrentDocument_ && ie) { + if (!writeInCurrentDocument_) { try { close(); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage2Test.java 2014-05-24 12:29:01 UTC (rev 9370) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage2Test.java 2014-05-24 13:33:19 UTC (rev 9371) @@ -25,7 +25,6 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -56,53 +55,6 @@ public final TemporaryFolder tmpFolderProvider_ = new TemporaryFolder(); /** - * @exception Exception If the test fails - */ - @Test - public void constructor() throws Exception { - final String html = "<html>\n" - + "<head><title>foo</title></head>\n" - + "<body>\n" - + "<p>hello world</p>\n" - + "<form id='form1' action='/formSubmit' method='post'>\n" - + "<input type='text' NAME='textInput1' value='textInput1'/>\n" - + "<input type='text' name='textInput2' value='textInput2'/>\n" - + "<input type='hidden' name='hidden1' value='hidden1'/>\n" - + "<input type='submit' name='submitInput1' value='push me'/>\n" - + "</form>\n" - + "</body></html>"; - - final HtmlPage page = loadPageWithAlerts(html); - assertEquals("foo", page.getTitleText()); - } - - /** - * @throws Exception if the test fails - */ - @Test - public void getInputByName() throws Exception { - final String html = "<html>\n" - + "<head><title>foo</title></head>\n" - + "<body>\n" - + "<p>hello world</p>\n" - + "<form id='form1' action='/formSubmit' method='post'>\n" - + "<input type='text' NAME='textInput1' value='textInput1'/>\n" - + "<input type='text' name='textInput2' value='textInput2'/>\n" - + "<input type='hidden' name='hidden1' value='hidden1'/>\n" - + "<input type='submit' name='submitInput1' value='push me'/>\n" - + "</form>\n" - + "</body></html>"; - final HtmlPage page = loadPageWithAlerts(html); - - final HtmlForm form = page.getHtmlElementById("form1"); - final HtmlInput input = form.getInputByName("textInput1"); - Assert.assertEquals("name", "textInput1", input.getNameAttribute()); - - Assert.assertEquals("value", "textInput1", input.getValueAttribute()); - Assert.assertEquals("type", "text", input.getTypeAttribute()); - } - - /** * Different versions of IE behave differently here. * Distinction is made with * {@link com.gargoylesoftware.htmlunit.BrowserVersionFeatures#JS_FRAME_RESOLVE_URL_WITH_PARENT_WINDOW}. @@ -606,42 +558,6 @@ } /** - * @exception Exception if the test fails - */ - @Test - @Alerts(IE = { "[object]", "1" }, FF = { "null", "0" }) - public void write_getElementById_afterParsing() throws Exception { - final String html = "<html>\n" - + "<head><title>foo</title><script>\n" - + " function test() {\n" - + " document.write(\"<input id='sendemail'>\");\n" - + " alert(document.getElementById('sendemail'));\n" - + " document.write(\"<input name='sendemail2'>\");\n" - + " alert(document.getElementsByName('sendemail2').length);\n" - + " }\n" - + "</script></head>\n" - + "<body onload='test()'></body></html>"; - loadPageWithAlerts(html); - } - - /** - * @exception Exception if the test fails - */ - @Test - @Alerts(IE = { "[object]", "1" }, FF = { "[object HTMLInputElement]", "1" }) - public void write_getElementById_duringParsing() throws Exception { - final String html = "<html>\n" - + "<head><title>foo</title></head>\n" - + "<body><script>\n" - + " document.write(\"<input id='sendemail'>\");\n" - + " alert(document.getElementById('sendemail'));\n" - + " document.write(\"<input name='sendemail2'>\");\n" - + " alert(document.getElementsByName('sendemail2').length);\n" - + "</script></body></html>"; - loadPageWithAlerts(html); - } - - /** * @throws Exception if the test fails */ @Test Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage3Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage3Test.java 2014-05-24 12:29:01 UTC (rev 9370) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage3Test.java 2014-05-24 13:33:19 UTC (rev 9371) @@ -14,6 +14,8 @@ */ package com.gargoylesoftware.htmlunit.html; +import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE11; + import java.util.List; import org.junit.Assert; @@ -25,6 +27,7 @@ import com.gargoylesoftware.htmlunit.BrowserRunner; import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.BrowserRunner.BuggyWebDriver; import com.gargoylesoftware.htmlunit.WebDriverTestCase; /** @@ -146,4 +149,92 @@ assertEquals(1, getCollectedAlerts(driver).size()); assertTrue(getCollectedAlerts(driver).get(0).startsWith("function")); } + + /** + * @exception Exception If the test fails + */ + @Test + public void constructor() throws Exception { + final String html = "<html>\n" + + "<head><title>foo</title></head>\n" + + "<body>\n" + + "<p>hello world</p>\n" + + "<form id='form1' action='/formSubmit' method='post'>\n" + + " <input type='text' NAME='textInput1' value='textInput1'/>\n" + + " <input type='text' name='textInput2' value='textInput2'/>\n" + + " <input type='hidden' name='hidden1' value='hidden1'/>\n" + + " <input type='submit' name='submitInput1' value='push me'/>\n" + + "</form>\n" + + "</body></html>"; + + final WebDriver driver = loadPageWithAlerts2(html); + assertEquals("foo", driver.getTitle()); + } + + /** + * @throws Exception if the test fails + */ + @Test + public void getInputByName() throws Exception { + final String html = "<html>\n" + + "<head><title>foo</title></head>\n" + + "<body>\n" + + "<p>hello world</p>\n" + + "<form id='form1' action='/formSubmit' method='post'>\n" + + " <input type='text' NAME='textInput1' value='textInput1'/>\n" + + " <input type='text' name='textInput2' value='textInput2'/>\n" + + " <input type='hidden' name='hidden1' value='hidden1'/>\n" + + " <input type='submit' name='submitInput1' value='push me'/>\n" + + "</form>\n" + + "</body></html>"; + + final WebDriver driver = loadPageWithAlerts2(html); + + final WebElement form = driver.findElement(By.id("form1")); + final WebElement input = form.findElement(By.name("textInput1")); + Assert.assertEquals("name", "textInput1", input.getAttribute("name")); + + Assert.assertEquals("value", "textInput1", input.getAttribute("value")); + Assert.assertEquals("type", "text", input.getAttribute("type")); + } + + /** + * @exception Exception if the test fails + */ + @Test + @Alerts(DEFAULT = { "[object HTMLInputElement]", "1" }, + IE8 = { "[object]", "1" }) + @BuggyWebDriver(IE11) + public void write_getElementById_afterParsing() throws Exception { + final String html = "<html>\n" + + "<head><title>foo</title><script>\n" + + " function test() {\n" + + " document.write(\"<input id='sendemail'>\");\n" + + " alert(document.getElementById('sendemail'));\n" + + " document.write(\"<input name='sendemail2'>\");\n" + + " alert(document.getElementsByName('sendemail2').length);\n" + + " }\n" + + "</script></head>\n" + + "<body onload='test()'>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } + + /** + * @exception Exception if the test fails + */ + @Test + @Alerts(DEFAULT = { "[object HTMLInputElement]", "1" }, + IE8 = { "[object]", "1" }) + public void write_getElementById_duringParsing() throws Exception { + final String html = "<html>\n" + + "<head><title>foo</title></head>\n" + + "<body><script>\n" + + " document.write(\"<input id='sendemail'>\");\n" + + " alert(document.getElementById('sendemail'));\n" + + " document.write(\"<input name='sendemail2'>\");\n" + + " alert(document.getElementsByName('sendemail2').length);\n" + + "</script></body></html>"; + loadPageWithAlerts2(html); + } } |
From: <rb...@us...> - 2014-05-24 15:07:44
|
Revision: 9373 http://sourceforge.net/p/htmlunit/code/9373 Author: rbri Date: 2014-05-24 15:07:40 +0000 (Sat, 24 May 2014) Log Message: ----------- IE11 progress Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlScript.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlScript2Test.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlScriptTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-24 14:48:55 UTC (rev 9372) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2014-05-24 15:07:40 UTC (rev 9373) @@ -242,6 +242,10 @@ @BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME), @WebBrowser(value = IE, minVersion = 11) }) EVENT_ONLOAD_IFRAME_CREATED_BY_JAVASCRIPT, + /** Triggers "onload" event if internal javascript loaded. */ + @BrowserFeature(@WebBrowser(value = IE, minVersion = 11)) + EVENT_ONLOAD_INTERNAL_JAVASCRIPT, + /** Setting the 'onload' event handler to <code>undefined</code> throws an error. */ @BrowserFeature(@WebBrowser(value = IE, maxVersion = 8)) EVENT_ONLOAD_UNDEFINED_THROWS_ERROR, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlScript.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlScript.java 2014-05-24 14:48:55 UTC (rev 9372) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlScript.java 2014-05-24 15:07:40 UTC (rev 9373) @@ -17,6 +17,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.CSS_SCRIPT_DISPLAY_INLINE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONERROR_EXTERNAL_JAVASCRIPT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONLOAD_EXTERNAL_JAVASCRIPT; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONLOAD_INTERNAL_JAVASCRIPT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.EVENT_ONREADY_STATE_CHANGE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLSCRIPT_APPLICATION_JAVASCRIPT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLSCRIPT_TRIM_TYPE; @@ -406,6 +407,8 @@ else if (getFirstChild() != null) { // <script>[code]</script> executeInlineScriptIfNeeded(); + + executeEventIfBrowserHasFeature(Event.TYPE_LOAD, EVENT_ONLOAD_INTERNAL_JAVASCRIPT); } } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlScript2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlScript2Test.java 2014-05-24 14:48:55 UTC (rev 9372) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlScript2Test.java 2014-05-24 15:07:40 UTC (rev 9373) @@ -28,7 +28,6 @@ import com.gargoylesoftware.htmlunit.BrowserRunner; import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; import com.gargoylesoftware.htmlunit.BrowserRunner.Browsers; -import com.gargoylesoftware.htmlunit.BrowserRunner.BuggyWebDriver; import com.gargoylesoftware.htmlunit.WebDriverTestCase; /** @@ -327,14 +326,16 @@ * @throws Exception on test failure */ @Test - @Alerts(FF = "z", IE11 = { "x", "z" }) + @Alerts(FF = { "s-x", "z" }, + IE11 = { "s-x", "x", "z" }, + IE8 = "s-x") public void addEventListener_load() throws Exception { final String html = "<html><head>\n" + "<script>\n" + " function test() {\n" + " var s1 = document.createElement('script');\n" - + " s1.text = 'var foo';\n" + + " s1.text = 'alert(\"s-x\")';\n" + " if(s1.addEventListener) s1.addEventListener('load', function(){alert('x')}, false);\n" + " document.body.insertBefore(s1, document.body.firstChild);\n" + " \n" @@ -379,30 +380,4 @@ public void testInvalidJQuerySrcAttribute() throws Exception { loadPage2("<html><body><script src='//:'></script></body></html>"); } - - /** - * Verifies that if a script element executes "window.location.href=someotherpage", then subsequent - * script tags, and any onload handler for the original page do not run. - * @throws Exception if the test fails - */ - @Test - @Alerts({ "First script executes", "Second page loading" }) - @BuggyWebDriver - public void testChangingLocationSkipsFurtherScriptsOnPage() throws Exception { - final String html - = "<html><head></head>\n" - + "<body onload='alert(\"body onload executing but should be skipped\")'>\n" - + "<script>alert('First script executes')</script>\n" - + "<script>window.location.href='" + URL_SECOND + "'</script>\n" - + "<script>alert('Third script executing but should be skipped')</script>\n" - + "</body></html>"; - - final String secondPage - = "<html><head></head><body>\n" - + "<script>alert('Second page loading')</script>\n" - + "</body></html>"; - - getMockWebConnection().setResponse(URL_SECOND, secondPage); - loadPageWithAlerts2(html); - } } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlScriptTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlScriptTest.java 2014-05-24 14:48:55 UTC (rev 9372) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlScriptTest.java 2014-05-24 15:07:40 UTC (rev 9373) @@ -332,4 +332,29 @@ final HtmlScript script = page.getFirstByXPath("//script"); assertFalse(script.isDisplayed()); } + + /** + * Verifies that if a script element executes "window.location.href=someotherpage", then subsequent + * script tags, and any onload handler for the original page do not run. + * @throws Exception if the test fails + */ + @Test + @Alerts({ "First script executes", "Second page loading" }) + public void testChangingLocationSkipsFurtherScriptsOnPage() throws Exception { + final String html + = "<html><head></head>\n" + + "<body onload='alert(\"body onload executing but should be skipped\")'>\n" + + "<script>alert('First script executes')</script>\n" + + "<script>window.location.href='" + URL_SECOND + "'</script>\n" + + "<script>alert('Third script executing but should be skipped')</script>\n" + + "</body></html>"; + + final String secondPage + = "<html><head></head><body>\n" + + "<script>alert('Second page loading')</script>\n" + + "</body></html>"; + + getMockWebConnection().setResponse(URL_SECOND, secondPage); + loadPageWithAlerts(html); + } } |
From: <rb...@us...> - 2014-05-24 17:37:47
|
Revision: 9374 http://sourceforge.net/p/htmlunit/code/9374 Author: rbri Date: 2014-05-24 17:37:42 +0000 (Sat, 24 May 2014) Log Message: ----------- ConcurrentModificationException in WebWindowImpl.destroyChildren() [issue 1602] Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebWindowImpl.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-24 15:07:40 UTC (rev 9373) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-24 17:37:42 UTC (rev 9374) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="rbri" issue="1602"> + ConcurrentModificationException in WebWindowImpl.destroyChildren(). + </action> <action type="fix" dev="asashour"> JavaScript: fix .offsetHeight for empty <div>. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebWindowImpl.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebWindowImpl.java 2014-05-24 15:07:40 UTC (rev 9373) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebWindowImpl.java 2014-05-24 17:37:42 UTC (rev 9374) @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.ListIterator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -186,8 +185,10 @@ LOG.debug("destroyChildren"); } getJobManager().removeAllJobs(); - for (final ListIterator<WebWindowImpl> iter = childWindows_.listIterator(); iter.hasNext();) { - final WebWindowImpl window = iter.next(); + + // try to deal with js thread adding a new window inbetween + while (!childWindows_.isEmpty()) { + final WebWindowImpl window = childWindows_.get(0); if (LOG.isDebugEnabled()) { LOG.debug("closing child window: " + window); } @@ -198,7 +199,7 @@ ((HtmlPage) page).cleanUp(); } window.destroyChildren(); - iter.remove(); + childWindows_.remove(window); } } |
From: <asa...@us...> - 2014-05-26 08:09:48
|
Revision: 9383 http://sourceforge.net/p/htmlunit/code/9383 Author: asashour Date: 2014-05-26 08:09:45 +0000 (Mon, 26 May 2014) Log Message: ----------- WebClientOptions: add .setSSLClientProtocols(), .setSSLClientCipherSuites() and .setSSLInsecureProtocol(). Issue 1600 Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HtmlUnitSSLConnectionSocketFactory.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-25 20:39:18 UTC (rev 9382) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-26 08:09:45 UTC (rev 9383) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="add" dev="asashour" issue="1600"> + WebClientOptions: add .setSSLClientProtocols(), .setSSLClientCipherSuites() and .setSSLInsecureProtocol(). + </action> <action type="fix" dev="rbri" issue="1602"> ConcurrentModificationException in WebWindowImpl.destroyChildren(). </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HtmlUnitSSLConnectionSocketFactory.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HtmlUnitSSLConnectionSocketFactory.java 2014-05-25 20:39:18 UTC (rev 9382) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HtmlUnitSSLConnectionSocketFactory.java 2014-05-26 08:09:45 UTC (rev 9383) @@ -71,21 +71,29 @@ public static SSLConnectionSocketFactory buildSSLSocketFactory(final WebClientOptions options) { try { + final String[] sslClientProtocols = options.getSSLClientProtocols(); + final String[] sslClientCipherSuites = options.getSSLClientCipherSuites(); + if (!options.isUseInsecureSSL()) { if (options.getSSLClientCertificateUrl() == null) { - return new HtmlUnitSSLConnectionSocketFactory((KeyStore) null, null); // only SOCKS awareness + return new HtmlUnitSSLConnectionSocketFactory((KeyStore) null, null, + sslClientProtocols, sslClientCipherSuites); // only SOCKS awareness } // SOCKS + keystore return new HtmlUnitSSLConnectionSocketFactory(getKeyStore(options), - options.getSSLClientCertificatePassword()); + options.getSSLClientCertificatePassword(), sslClientProtocols, sslClientCipherSuites); } // we need insecure SSL + SOCKS awareness - final SSLContext sslContext = SSLContext.getInstance("SSL"); + String protocol = options.getSSLInsecureProtocol(); + if (protocol == null) { + protocol = "SSL"; + } + final SSLContext sslContext = SSLContext.getInstance(protocol); sslContext.init(getKeyManagers(options), new TrustManager[]{new InsecureTrustManager2()}, null); final SSLConnectionSocketFactory factory = new HtmlUnitSSLConnectionSocketFactory(sslContext, - SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER, sslClientProtocols, sslClientCipherSuites); return factory; } catch (final GeneralSecurityException e) { @@ -94,15 +102,17 @@ } private HtmlUnitSSLConnectionSocketFactory(final SSLContext sslContext, - final X509HostnameVerifier hostnameVerifier) { - super(sslContext, hostnameVerifier); + final X509HostnameVerifier hostnameVerifier, + final String[] supportedProtocols, final String[] supportedCipherSuites) { + super(sslContext, supportedProtocols, supportedCipherSuites, hostnameVerifier); } - private HtmlUnitSSLConnectionSocketFactory(final KeyStore keystore, final String keystorePassword) + private HtmlUnitSSLConnectionSocketFactory(final KeyStore keystore, final String keystorePassword, + final String[] supportedProtocols, final String[] supportedCipherSuites) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { super(SSLContexts.custom() .loadKeyMaterial(keystore, keystorePassword != null ? keystorePassword.toCharArray() : null) - .build(), + .build(), supportedProtocols, supportedCipherSuites, BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); } @@ -165,7 +175,8 @@ final char[] passwordChars = password != null ? password.toCharArray() : null; final KeyStore keyStore = getKeyStore(options); - final KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509"); + final KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance( + KeyManagerFactory.getDefaultAlgorithm()); keyManagerFactory.init(keyStore, passwordChars); return keyManagerFactory.getKeyManagers(); } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java 2014-05-25 20:39:18 UTC (rev 9382) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java 2014-05-26 08:09:45 UTC (rev 9383) @@ -37,6 +37,8 @@ private URL sslClientCertificateUrl_; private String sslClientCertificatePassword_; private String sslClientCertificateType_; + private String[] sslClientProtocols_; + private String[] sslClientCipherSuites_; private boolean geolocationEnabled_; private boolean doNotTrackEnabled_; private boolean activeXNative_; @@ -45,6 +47,7 @@ private int timeout_ = 90000; // like Firefox 16 default's value for network.http.connection-timeout private boolean useInsecureSSL_; // default is secure SSL + private String sslInsecureProtocol_; /** * If set to <code>true</code>, the client will accept connections to any host, regardless of @@ -115,6 +118,48 @@ } /** + * Gets the protocol versions enabled for use on SSL connections. + * @return the protocol versions enabled for use on SSL connections + * @see #setSSLClientProtocols(String[]) + */ + public String[] getSSLClientProtocols() { + return sslClientProtocols_; + } + + /** + * Sets the protocol versions enabled for use on SSL connections, + * <code>null</code> to use default ones. + * + * @param sslClientProtocols the protocol versions + * @see javax.net.ssl.SSLSocket#setEnabledProtocols(String[]) + * @see #getSSLClientProtocols() + */ + public void setSSLClientProtocols(final String[] sslClientProtocols) { + this.sslClientProtocols_ = sslClientProtocols; + } + + /** + * Gets the cipher suites enabled for use on SSL connections. + * @return the cipher suites enabled for use on SSL connections + * @see #setSSLClientCipherSuites(String[]) + */ + public String[] getSSLClientCipherSuites() { + return sslClientCipherSuites_; + } + + /** + * Sets the cipher suites enabled for use on SSL connections, + * <code>null</code> to use default ones. + * + * @param sslClientCipherSuites the cipher suites + * @see javax.net.ssl.SSLSocket#setEnabledCipherSuites(String[]) + * @see #getSSLClientCipherSuites() + */ + public void setSSLClientCipherSuites(final String[] sslClientCipherSuites) { + this.sslClientCipherSuites_ = sslClientCipherSuites; + } + + /** * Enables/disables JavaScript support. By default, this property is enabled. * * @param enabled <tt>true</tt> to enable JavaScript support @@ -361,4 +406,21 @@ public void setTimeout(final int timeout) { timeout_ = timeout; } + + /** + * Sets the SSL protocol, used only when {@link #setUseInsecureSSL(boolean)} is set to <code>true</code>. + * @param sslInsecureProtocol the SSL protocol for insecure SSL connections, + * <code>null</code> to use for default value + */ + public void setSSLInsecureProtocol(final String sslInsecureProtocol) { + this.sslInsecureProtocol_ = sslInsecureProtocol; + } + + /** + * Gets the SSL protocol, to be used only when {@link #setUseInsecureSSL(boolean)} is set to <code>true</code>. + * @return the SSL protocol for insecure SSL connections + */ + public String getSSLInsecureProtocol() { + return sslInsecureProtocol_; + } } |
From: <asa...@us...> - 2014-05-27 08:26:28
|
Revision: 9391 http://sourceforge.net/p/htmlunit/code/9391 Author: asashour Date: 2014-05-27 08:26:22 +0000 (Tue, 27 May 2014) Log Message: ----------- JavaScript: handle RegExp constructed with 'undefined'. Issue 1599 Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml Added Paths: ----------- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeRegExpTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-27 08:17:24 UTC (rev 9390) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-27 08:26:22 UTC (rev 9391) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="asashour" issue="1599"> + JavaScript: handle RegExp constructed with 'undefined'. + </action> <action type="add" dev="asashour" issue="1600"> WebClientOptions: add .setSSLClientProtocols(), .setSSLClientCipherSuites() and .setSSLInsecureProtocol(). </action> Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeRegExpTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeRegExpTest.java (rev 0) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeRegExpTest.java 2014-05-27 08:26:22 UTC (rev 9391) @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2002-2014 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.javascript; + +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 NativeRegExp. + * + * @version $Revision$ + * @author Ahmed Ashour + */ +@RunWith(BrowserRunner.class) +public class NativeRegExpTest extends WebDriverTestCase { + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts("true") + public void undefined() throws Exception { + final String html + = "<html><head><script>\n" + + "function test() {\n" + + " alert(new RegExp(undefined).test('AA'));\n" + + "}\n" + + "</script></head><body onload='test()'>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } +} Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeRegExpTest.java ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property 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 |
From: <asa...@us...> - 2014-05-28 15:06:32
|
Revision: 9395 http://sourceforge.net/p/htmlunit/code/9395 Author: asashour Date: 2014-05-28 15:06:27 +0000 (Wed, 28 May 2014) Log Message: ----------- JavaScriptEngine: removes all postponed actions on webClient.closeAllWindows(); Issue 1604 Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngineTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-28 13:35:40 UTC (rev 9394) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-28 15:06:27 UTC (rev 9395) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="asashour" issue="1604"> + JavaScriptEngine: removes all postponed actions on webClient.closeAllWindows(); + </action> <action type="fix" dev="asashour" issue="1599"> JavaScript: handle RegExp constructed with 'undefined'. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java 2014-05-28 13:35:40 UTC (rev 9394) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java 2014-05-28 15:06:27 UTC (rev 9395) @@ -491,6 +491,11 @@ javaScriptExecutor_.shutdown(); javaScriptExecutor_ = null; } + if (postponedActions_ != null) { + postponedActions_.remove(); + javaScriptRunning_.remove(); + holdPostponedActions_ = false; + } } /** Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngineTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngineTest.java 2014-05-28 13:35:40 UTC (rev 9394) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngineTest.java 2014-05-28 15:06:27 UTC (rev 9395) @@ -19,6 +19,7 @@ import static org.junit.Assert.fail; import java.io.ByteArrayOutputStream; +import java.lang.reflect.Field; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -27,6 +28,7 @@ import java.util.Map; import java.util.zip.GZIPOutputStream; +import net.sourceforge.htmlunit.corejs.javascript.Context; import net.sourceforge.htmlunit.corejs.javascript.ContextFactory; import net.sourceforge.htmlunit.corejs.javascript.Function; import net.sourceforge.htmlunit.corejs.javascript.Script; @@ -1290,4 +1292,38 @@ assertEquals("JS executor for " + page.getWebClient(), jsThread.getName()); assertTrue(jsThread.isDaemon()); } + + /** + * @throws Exception if the test fails + */ + @Test + public void shutdown() throws Exception { + final String html = "<html></html>"; + final HtmlPage page = loadPage(html); + + final WebClient webClient = getWebClient(); + final JavaScriptEngine engine = webClient.getJavaScriptEngine(); + + engine.addPostponedAction(new PostponedAction(page) { + @Override + public void execute() throws Exception { + } + }); + assertEquals(1, getPostponedActions(engine).get().size()); + webClient.closeAllWindows(); + + assertNull(getPostponedActions(engine).get()); + } + + @SuppressWarnings("unchecked") + private static ThreadLocal<List<PostponedAction>> getPostponedActions(final JavaScriptEngine engine) { + try { + final Field field = engine.getClass().getDeclaredField("postponedActions_"); + field.setAccessible(true); + return (ThreadLocal<List<PostponedAction>>) field.get(engine); + } + catch (final Exception e) { + throw Context.throwAsScriptRuntimeEx(e); + } + } } |
From: <asa...@us...> - 2014-05-28 15:12:09
|
Revision: 9396 http://sourceforge.net/p/htmlunit/code/9396 Author: asashour Date: 2014-05-28 15:12:05 +0000 (Wed, 28 May 2014) Log Message: ----------- JavaScriptEngine: deprecate .shutdownJavaScriptExecutor(). Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-28 15:06:27 UTC (rev 9395) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-28 15:12:05 UTC (rev 9396) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="update" dev="asashour"> + JavaScriptEngine: deprecate .shutdownJavaScriptExecutor(). + </action> <action type="fix" dev="asashour" issue="1604"> JavaScriptEngine: removes all postponed actions on webClient.closeAllWindows(); </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2014-05-28 15:06:27 UTC (rev 9395) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2014-05-28 15:12:05 UTC (rev 9396) @@ -1738,7 +1738,7 @@ */ public void closeAllWindows() { if (scriptEngine_ != null) { - scriptEngine_.shutdownJavaScriptExecutor(); + scriptEngine_.shutdown(); } // NB: this implementation is too simple as a new TopLevelWindow may be opened by // some JS script while we are closing the others Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java 2014-05-28 15:06:27 UTC (rev 9395) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java 2014-05-28 15:12:05 UTC (rev 9396) @@ -485,8 +485,17 @@ /** * Shutdown JavaScriptExecutor. + * @deprecated as of 2.15, please use {@link #shutdown()} instead */ + @Deprecated public void shutdownJavaScriptExecutor() { + shutdown(); + } + + /** + * Shutdown the JavaScriptEngine. + */ + public void shutdown() { if (javaScriptExecutor_ != null) { javaScriptExecutor_.shutdown(); javaScriptExecutor_ = null; |
From: <rb...@us...> - 2014-05-28 19:06:16
|
Revision: 9397 http://sourceforge.net/p/htmlunit/code/9397 Author: rbri Date: 2014-05-28 19:06:12 +0000 (Wed, 28 May 2014) Log Message: ----------- NoSuchElementException when parsing malformed HTML Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2014-05-28 15:12:05 UTC (rev 9396) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2014-05-28 19:06:12 UTC (rev 9397) @@ -645,10 +645,10 @@ DomNode parent = currentNode; if ("tr".equals(newNodeName) && !isTableChild(currentNodeName)) { - parent = dequeueMalformedElementsUntil("tbody", "thead", "tfoot"); + parent = findElementOnStack("tbody", "thead", "tfoot"); } else if (isTableChild(newNodeName) && !"table".equals(currentNodeName)) { - parent = dequeueMalformedElementsUntil("table"); + parent = findElementOnStack("table"); } if ("table".equals(currentNodeName) && !isTableChild(newNodeName)) { @@ -670,7 +670,7 @@ } } - private DomNode dequeueMalformedElementsUntil(final String... searchedElementNames) { + private DomNode findElementOnStack(final String... searchedElementNames) { DomNode searchedNode = null; for (final DomNode node : stack_) { if (ArrayUtils.contains(searchedElementNames, node.getNodeName())) { @@ -682,12 +682,7 @@ if (searchedNode == null) { searchedNode = stack_.peek(); // this is surely wrong but at least it won't throw a NPE } - else { - // remove all elements from the stack until the found node - while (stack_.peek() != searchedNode) { - stack_.pop(); - } - } + return searchedNode; } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java 2014-05-28 15:12:05 UTC (rev 9396) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java 2014-05-28 19:06:12 UTC (rev 9397) @@ -401,4 +401,49 @@ + "</script></body></html>"; loadPageWithAlerts2(html); } + + /** + * @throws Exception if an error occurs + */ + @Test + // correct assertion is + // @Alerts({ "1", "TABLE", "1", "FORM" }) + // this test is NOT marked as NYI because we like to ensure + // no exception is thrown + @Alerts({ "1", "FORM", "1", "TABLE" }) + public void formInNestedTable() throws Exception { + final String html = "<html>\n" + + "<body>\n" + + "<table>\n" + + " <tr>\n" + + " <td>\n" + + " <table>\n" + + " <tr>\n" + + " <td id='td0'>\n" + + " <table>\n" + + " <form id='xyz'>\n" + + " <tr>\n" + + " <td>\n" + + " <input type='hidden' name='xyz' value='123'>\n" + + " <input type='submit' value='Submit'>\n" + + " </td>\n" + + " </tr>\n" + + " </form>\n" + + " </table>" + + " </td>\n" + + " </tr>\n" + + " <tr><td></td></tr>\n" + + " </table>\n" + + " </td>\n" + + " </tr>\n" + + "</table>" + + "<script>\n" + + " alert(document.getElementById('td0').children.length);\n" + + " alert(document.getElementById('td0').children[0].tagName);\n" + + " alert(document.getElementById('td0').children[0].children.length);\n" + + " alert(document.getElementById('td0').children[0].children[0].tagName);\n" + + "</script>\n" + + "</body></html>"; + loadPageWithAlerts2(html); + } } |
From: <asa...@us...> - 2014-05-29 21:21:17
|
Revision: 9402 http://sourceforge.net/p/htmlunit/code/9402 Author: asashour Date: 2014-05-29 21:21:14 +0000 (Thu, 29 May 2014) Log Message: ----------- HtmlUnitRegExpProxy: better performance, as String.substring() implementation was changed in Java 7. Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/regexp/HtmlUnitRegExpProxy.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/regexp/HtmlUnitRegExpProxyTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-29 08:28:32 UTC (rev 9401) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-29 21:21:14 UTC (rev 9402) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="asashour"> + HtmlUnitRegExpProxy: better performance, as String.substring() implementation was changed in Java 7. + </action> <action type="fix" dev="rbri" issue="1605" due-to="Carsten Steul"> NoSuchElementException when parsing malformed HTML. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/regexp/HtmlUnitRegExpProxy.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/regexp/HtmlUnitRegExpProxy.java 2014-05-29 08:28:32 UTC (rev 9401) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/regexp/HtmlUnitRegExpProxy.java 2014-05-29 21:21:14 UTC (rev 9402) @@ -327,15 +327,16 @@ // leftContext if (startPos > 0) { - leftContext = new FixedSubString(thisString.substring(0, startPos)); + leftContext = new SubString(thisString, 0, startPos); } else { leftContext = new SubString(); } // rightContext - if (endPos < thisString.length()) { - rightContext = new FixedSubString(thisString.substring(endPos)); + int length = thisString.length(); + if (endPos < length) { + rightContext = new SubString(thisString, endPos, length - endPos); } else { rightContext = new SubString(); Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/regexp/HtmlUnitRegExpProxyTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/regexp/HtmlUnitRegExpProxyTest.java 2014-05-29 08:28:32 UTC (rev 9401) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/regexp/HtmlUnitRegExpProxyTest.java 2014-05-29 21:21:14 UTC (rev 9402) @@ -855,7 +855,7 @@ * Test from Prototype suite running very fast with Java 6 but taking ages with Java 7 & 8. * @throws Exception if an error occurs */ - @Test + @Test(timeout = 1000) @Alerts({ "2200915", "2000915" }) public void replace_huge() throws Exception { final String html = "<html><body><script>\n" |
From: <rb...@us...> - 2014-05-30 16:15:03
|
Revision: 9405 http://sourceforge.net/p/htmlunit/code/9405 Author: rbri Date: 2014-05-30 16:14:57 +0000 (Fri, 30 May 2014) Log Message: ----------- Avoid exception if the content-length provided by the server is not correct. Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnectionTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/util/ServletContentWrapper.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-30 07:12:11 UTC (rev 9404) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-30 16:14:57 UTC (rev 9405) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="rbri" issue="1608" due-to="Carsten Steul"> + Avoid exception if the content-length provided by the server is not correct. + </action> <action type="fix" dev="asashour"> HtmlUnitRegExpProxy: better performance, as String.substring() implementation was changed in Java 7. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2014-05-30 07:12:11 UTC (rev 9404) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2014-05-30 16:14:57 UTC (rev 9405) @@ -43,6 +43,9 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.reflect.FieldUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.http.ConnectionClosedException; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpEntityEnclosingRequest; @@ -112,9 +115,12 @@ * @author Nicolas Belisle * @author Ronald Brill * @author John J Murdoch + * @author Carsten Steul */ public class HttpWebConnection implements WebConnection { + private static final Log LOG = LogFactory.getLog(HttpWebConnection.class); + private static final String HACKED_COOKIE_POLICY = "mine"; private HttpClientBuilder httpClientBuilder_; private final WebClient webClient_; @@ -696,6 +702,10 @@ } } } + catch (final ConnectionClosedException e) { + LOG.warn("Connection was closed while reading from stream.", e); + return new DownloadedContent.InMemory(bos.toByteArray()); + } finally { IOUtils.closeQuietly(is); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnectionTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnectionTest.java 2014-05-30 07:12:11 UTC (rev 9404) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/HttpWebConnectionTest.java 2014-05-30 16:14:57 UTC (rev 9405) @@ -35,6 +35,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; @@ -65,6 +66,8 @@ * @author David D. Kilzer * @author Marc Guillemot * @author Ahmed Ashour + * @author Ronald Brill + * @author Carsten Steul */ @RunWith(BrowserRunner.class) public class HttpWebConnectionTest extends WebServerTestCase { @@ -477,4 +480,156 @@ } } + /** + * @throws Exception if an error occurs + */ + @Test + public void contentLengthSmallerThanContent() throws Exception { + final Map<String, Class<? extends Servlet>> servlets = new HashMap<String, Class<? extends Servlet>>(); + servlets.put("/contentLengthSmallerThanContent", ContentLengthSmallerThanContentServlet.class); + startWebServer("./", null, servlets); + + final WebClient client = getWebClient(); + final HtmlPage page = client.getPage("http://localhost:" + PORT + "/contentLengthSmallerThanContent"); + assertEquals("visible text", page.asText()); + } + + /** + * Servlet for {@link #contentLengthSmallerThanContent()}. + */ + public static class ContentLengthSmallerThanContentServlet extends ServletContentWrapper { + + /** Constructor. */ + public ContentLengthSmallerThanContentServlet() { + super("<html>\n" + + "<body>\n" + + " <p>visible text</p>\n" + + " <p>missing text</p>\n" + + "</body>\n" + + "</html>"); + } + + @Override + protected void doGet(final HttpServletRequest request, final HttpServletResponse response) + throws IOException, ServletException { + response.setContentLength(getContent().indexOf("<p>missing text</p>")); + super.doGet(request, response); + } + } + + /** + * @throws Exception if an error occurs + */ + @Test + public void contentLengthSmallerThanContentLargeContent() throws Exception { + final Map<String, Class<? extends Servlet>> servlets = new HashMap<String, Class<? extends Servlet>>(); + servlets.put("/contentLengthSmallerThanContent", ContentLengthSmallerThanContentLargeContentServlet.class); + startWebServer("./", null, servlets); + + final WebClient client = getWebClient(); + final HtmlPage page = client.getPage("http://localhost:" + PORT + "/contentLengthSmallerThanContent"); + assertTrue(page.asText(), page.asText().endsWith("visible text")); + } + + /** + * Servlet for {@link #contentLengthSmallerThanContentLargeContent()}. + */ + public static class ContentLengthSmallerThanContentLargeContentServlet extends ServletContentWrapper { + + /** Constructor. */ + public ContentLengthSmallerThanContentLargeContentServlet() { + super("<html>\n" + + "<body>\n" + + " <p>" + + StringUtils.repeat("HtmlUnit ", 1024 * 1024) + + "</p>\n" + + " <p>visible text</p>\n" + + " <p>missing text</p>\n" + + "</body>\n" + + "</html>"); + } + + @Override + protected void doGet(final HttpServletRequest request, final HttpServletResponse response) + throws IOException, ServletException { + response.setContentLength(getContent().indexOf("<p>missing text</p>")); + super.doGet(request, response); + } + } + + /** + * @throws Exception if an error occurs + */ + @Test + public void contentLengthLargerThanContent() throws Exception { + final Map<String, Class<? extends Servlet>> servlets = new HashMap<String, Class<? extends Servlet>>(); + servlets.put("/contentLengthLargerThanContent", ContentLengthLargerThanContentServlet.class); + startWebServer("./", null, servlets); + + final WebClient client = getWebClient(); + final HtmlPage page = client.getPage("http://localhost:" + PORT + "/contentLengthLargerThanContent"); + assertEquals("visible text", page.asText()); + } + + /** + * Servlet for {@link #contentLengthLargerThanContent()}. + */ + public static class ContentLengthLargerThanContentServlet extends ServletContentWrapper { + + /** Constructor. */ + public ContentLengthLargerThanContentServlet() { + super("<html>\n" + + "<body>\n" + + " <p>visible text</p>\n" + + "</body>\n" + + "</html>"); + } + + @Override + protected void doGet(final HttpServletRequest request, final HttpServletResponse response) + throws IOException, ServletException { + response.setContentLength(getContentLength() + 42); + super.doGet(request, response); + } + } + + /** + * @throws Exception if an error occurs + */ + @Test + public void contentLengthLargerThanContentLargeContent() throws Exception { + final Map<String, Class<? extends Servlet>> servlets = new HashMap<String, Class<? extends Servlet>>(); + servlets.put("/contentLengthLargerThanContent", ContentLengthLargerThanContentServlet.class); + startWebServer("./", null, servlets); + + final WebClient client = getWebClient(); + final HtmlPage page = client.getPage("http://localhost:" + PORT + "/contentLengthLargerThanContent"); + assertEquals("visible text", page.asText()); + } + + /** + * Servlet for {@link #contentLengthLargerThanContentLargeContent()}. + */ + public static class ContentLengthLargerThanContentLargeContentServlet extends ServletContentWrapper { + + /** Constructor. */ + public ContentLengthLargerThanContentLargeContentServlet() { + super("<html>\n" + + "<body>\n" + + " <p>" + + StringUtils.repeat("HtmlUnit ", 1024 * 1024) + + "</p>\n" + + " <p>visible text</p>\n" + + " <p>missing text</p>\n" + + "</body>\n" + + "</html>"); + } + + @Override + protected void doGet(final HttpServletRequest request, final HttpServletResponse response) + throws IOException, ServletException { + response.setContentLength(getContentLength() + 2000); + super.doGet(request, response); + } + } } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/util/ServletContentWrapper.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/util/ServletContentWrapper.java 2014-05-30 07:12:11 UTC (rev 9404) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/util/ServletContentWrapper.java 2014-05-30 16:14:57 UTC (rev 9405) @@ -59,4 +59,19 @@ doGet(request, response); } + /** + * Helper. + * @return the content + */ + protected String getContent() { + return content_; + } + + /** + * Helper. + * @return the length of the content + */ + protected int getContentLength() { + return content_.length(); + } } |
From: <rb...@us...> - 2014-05-30 17:41:35
|
Revision: 9407 http://sourceforge.net/p/htmlunit/code/9407 Author: rbri Date: 2014-05-30 17:41:26 +0000 (Fri, 30 May 2014) Log Message: ----------- Some changes of the SOCKS proxy settings are ignored for HTTPS Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-30 16:48:42 UTC (rev 9406) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-30 17:41:26 UTC (rev 9407) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="rbri" issue="1579"> + Some changes of the SOCKS proxy settings are ignored for HTTPS. + </action> <action type="fix" dev="rbri" issue="1608" due-to="Carsten Steul"> Avoid exception if the content-length provided by the server is not correct. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2014-05-30 16:48:42 UTC (rev 9406) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2014-05-30 17:41:26 UTC (rev 9407) @@ -597,7 +597,8 @@ // register new SSL factory only if settings have changed if (options.isUseInsecureSSL() != usedOptions_.isUseInsecureSSL() - || options.getSSLClientCertificateUrl() != usedOptions_.getSSLClientCertificateUrl()) { + || options.getSSLClientCertificateUrl() != usedOptions_.getSSLClientCertificateUrl() + || options.getProxyConfig() != usedOptions_.getProxyConfig()) { configureHttpsScheme(httpClientBuilder); } @@ -619,6 +620,7 @@ usedOptions_.setUseInsecureSSL(options.isUseInsecureSSL()); usedOptions_.setSSLClientCertificate(options.getSSLClientCertificateUrl(), options.getSSLClientCertificatePassword(), options.getSSLClientCertificateType()); + usedOptions_.setProxyConfig(options.getProxyConfig()); } /** |
From: <asa...@us...> - 2014-05-30 17:48:56
|
Revision: 9408 http://sourceforge.net/p/htmlunit/code/9408 Author: asashour Date: 2014-05-30 17:48:50 +0000 (Fri, 30 May 2014) Log Message: ----------- JavaScript: document and element .querySelectorAll() is supported in Chrome. Issue 1597 Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DocumentFragment.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-30 17:41:26 UTC (rev 9407) +++ trunk/htmlunit/src/changes/changes.xml 2014-05-30 17:48:50 UTC (rev 9408) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="asashour" issue="1597"> + JavaScript: document and element .querySelectorAll() is supported in Chrome. + </action> <action type="fix" dev="rbri" issue="1579"> Some changes of the SOCKS proxy settings are ignored for HTTPS. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DocumentFragment.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DocumentFragment.java 2014-05-30 17:41:26 UTC (rev 9407) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DocumentFragment.java 2014-05-30 17:48:50 UTC (rev 9408) @@ -125,7 +125,7 @@ * @param selectors the selectors * @return the static node list */ - @JsxFunction({ @WebBrowser(IE), @WebBrowser(FF) }) + @JsxFunction public StaticNodeList querySelectorAll(final String selectors) { try { final List<Node> nodes = new ArrayList<Node>(); Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java 2014-05-30 17:41:26 UTC (rev 9407) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java 2014-05-30 17:48:50 UTC (rev 9408) @@ -2119,7 +2119,7 @@ * @param selectors the selectors * @return the static node list */ - @JsxFunction({ @WebBrowser(IE), @WebBrowser(FF) }) + @JsxFunction public StaticNodeList querySelectorAll(final String selectors) { try { final List<Node> nodes = new ArrayList<Node>(); Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2014-05-30 17:41:26 UTC (rev 9407) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2014-05-30 17:48:50 UTC (rev 9408) @@ -2071,7 +2071,7 @@ * @param selectors the selectors * @return the static node list */ - @JsxFunction({ @WebBrowser(IE), @WebBrowser(FF) }) + @JsxFunction public StaticNodeList querySelectorAll(final String selectors) { try { final List<Node> nodes = new ArrayList<Node>(); |
From: <rb...@us...> - 2014-06-01 17:45:34
|
Revision: 9413 http://sourceforge.net/p/htmlunit/code/9413 Author: rbri Date: 2014-06-01 17:45:26 +0000 (Sun, 01 Jun 2014) Log Message: ----------- Fix NPE when processing postMessage() [1589] Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Event.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Window.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/Window2Test.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-05-31 14:01:11 UTC (rev 9412) +++ trunk/htmlunit/src/changes/changes.xml 2014-06-01 17:45:26 UTC (rev 9413) @@ -8,6 +8,9 @@ <body> <release version="2.15" date="???" description="Bugfixes, IE11 progress"> + <action type="fix" dev="rbri" issue="1589"> + Fix NPE when processing postMessage(). + </action> <action type="fix" dev="asashour" issue="1597"> JavaScript: document and element .querySelectorAll() is supported in Chrome. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Event.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Event.java 2014-05-31 14:01:11 UTC (rev 9412) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Event.java 2014-06-01 17:45:26 UTC (rev 9413) @@ -424,10 +424,11 @@ */ @SuppressWarnings("unchecked") void startFire() { - LinkedList<Event> events = (LinkedList<Event>) Context.getCurrentContext().getThreadLocal(KEY_CURRENT_EVENT); + final Context context = Context.getCurrentContext(); + LinkedList<Event> events = (LinkedList<Event>) context.getThreadLocal(KEY_CURRENT_EVENT); if (events == null) { events = new LinkedList<Event>(); - Context.getCurrentContext().putThreadLocal(KEY_CURRENT_EVENT, events); + context.putThreadLocal(KEY_CURRENT_EVENT, events); } events.add(this); } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Window.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Window.java 2014-05-31 14:01:11 UTC (rev 9412) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Window.java 2014-06-01 17:45:26 UTC (rev 9413) @@ -48,6 +48,8 @@ import java.util.WeakHashMap; import net.sourceforge.htmlunit.corejs.javascript.Context; +import net.sourceforge.htmlunit.corejs.javascript.ContextAction; +import net.sourceforge.htmlunit.corejs.javascript.ContextFactory; import net.sourceforge.htmlunit.corejs.javascript.Function; import net.sourceforge.htmlunit.corejs.javascript.FunctionObject; import net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime; @@ -104,6 +106,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlSelect; import com.gargoylesoftware.htmlunit.html.HtmlStyle; import com.gargoylesoftware.htmlunit.html.HtmlTextArea; +import com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine; import com.gargoylesoftware.htmlunit.javascript.PostponedAction; import com.gargoylesoftware.htmlunit.javascript.ScriptableWithFallbackGetter; import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable; @@ -2196,13 +2199,21 @@ return; } + final JavaScriptEngine jsEngine = getWebWindow().getWebClient().getJavaScriptEngine(); final PostponedAction action = new PostponedAction(getDomNodeOrDie().getPage()) { @Override public void execute() throws Exception { - dispatchEvent(event); + final ContextAction action = new ContextAction() { + public Object run(final Context cx) { + return dispatchEvent(event); + } + }; + + final ContextFactory cf = jsEngine.getContextFactory(); + cf.call(action); } }; - getWebWindow().getWebClient().getJavaScriptEngine().addPostponedAction(action); + jsEngine.addPostponedAction(action); } private static int getPort(final URL url) { Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/Window2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/Window2Test.java 2014-05-31 14:01:11 UTC (rev 9412) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/Window2Test.java 2014-06-01 17:45:26 UTC (rev 9413) @@ -1233,9 +1233,47 @@ } /** + * Test for #1589 NullPointerException because of missing context. + * * @throws Exception if the test fails */ @Test + @Alerts("data: hello") + public void postMessageFromClick() throws Exception { + final String html + = "<html>" + + "<head><title>foo</title></head>\n" + + "<body>\n" + + "<script>\n" + + " function receiveMessage(event) {\n" + + " alert('data: ' + event.data);\n" + + " }\n" + + + " if (window.addEventListener) {\n" + + " window.addEventListener('message', receiveMessage, false);\n" + + " } else {\n" + + " window.attachEvent('onmessage', receiveMessage);\n" + + " }\n" + + "</script>\n" + + " <iframe id='myFrame' src='" + URL_SECOND + "'></iframe>\n" + + "</body></html>"; + + final String iframe = "<html><body>\n" + + "<button id='clickme' onclick='top.postMessage(\"hello\", \"*\");'>Click me</a>\n" + + "</body></html>"; + + getMockWebConnection().setResponse(URL_SECOND, iframe); + final WebDriver driver = loadPage2(html); + driver.switchTo().frame("myFrame"); + driver.findElement(By.id("clickme")).click(); + + assertEquals(getExpectedAlerts(), getCollectedAlerts(driver)); + } + + /** + * @throws Exception if the test fails + */ + @Test @Alerts(DEFAULT = "sync: false", IE8 = "sync: true") public void postMessageSyncOrAsync() throws Exception { |