From: <rb...@us...> - 2018-06-21 16:36:38
|
Revision: 15376 http://sourceforge.net/p/htmlunit/code/15376 Author: rbri Date: 2018-06-21 16:36:25 +0000 (Thu, 21 Jun 2018) Log Message: ----------- ff60 support (wip) Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest2Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2018-06-21 16:12:46 UTC (rev 15375) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2018-06-21 16:36:25 UTC (rev 15376) @@ -1529,9 +1529,13 @@ @BrowserFeature(IE) WINDOW_EXECUTE_EVENTS, - /** XMLHttpRequest.getAllResponseHeaders() has a trailing CrLf. */ + /** XMLHttpRequest.getAllResponseHeaders() uses only Lf as separator. */ + @BrowserFeature({FF60, IE}) + XHR_ALL_RESPONSE_HEADERS_SEPARATE_BY_LF, + + /** XMLHttpRequest.getAllResponseHeaders() has a trailing separator. */ @BrowserFeature(IE) - XHR_ALL_RESPONSE_HEADERS_APPEND_CRLF, + XHR_ALL_RESPONSE_HEADERS_APPEND_SEPARATOR, /** XMLHttpRequest triggers the opened event at the beginning of the send method again. */ @BrowserFeature(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 2018-06-21 16:12:46 UTC (rev 15375) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java 2018-06-21 16:36:25 UTC (rev 15376) @@ -14,7 +14,8 @@ */ package com.gargoylesoftware.htmlunit.javascript.host.xml; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_ALL_RESPONSE_HEADERS_APPEND_CRLF; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_ALL_RESPONSE_HEADERS_APPEND_SEPARATOR; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_ALL_RESPONSE_HEADERS_SEPARATE_BY_LF; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_FIRE_STATE_OPENED_AGAIN_IN_ASYNC_MODE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_IGNORE_PORT_FOR_SAME_ORIGIN; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.XHR_LENGTH_COMPUTABLE; @@ -460,10 +461,18 @@ if (webResponse_ != null) { final StringBuilder builder = new StringBuilder(); for (final NameValuePair header : webResponse_.getResponseHeaders()) { - builder.append(header.getName()).append(": ").append(header.getValue()).append("\r\n"); + builder.append(header.getName()).append(": ").append(header.getValue()); + + if (!getBrowserVersion().hasFeature(XHR_ALL_RESPONSE_HEADERS_SEPARATE_BY_LF)) { + builder.append('\r'); + } + builder.append('\n'); } - if (getBrowserVersion().hasFeature(XHR_ALL_RESPONSE_HEADERS_APPEND_CRLF)) { - builder.append("\r\n"); + if (getBrowserVersion().hasFeature(XHR_ALL_RESPONSE_HEADERS_APPEND_SEPARATOR)) { + if (!getBrowserVersion().hasFeature(XHR_ALL_RESPONSE_HEADERS_SEPARATE_BY_LF)) { + builder.append('\r'); + } + builder.append('\n'); } return builder.toString(); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest2Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest2Test.java 2018-06-21 16:12:46 UTC (rev 15375) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest2Test.java 2018-06-21 16:36:25 UTC (rev 15376) @@ -15,6 +15,7 @@ package com.gargoylesoftware.htmlunit.javascript.host.xml; import static com.gargoylesoftware.htmlunit.BrowserRunner.TestedBrowser.CHROME; +import static com.gargoylesoftware.htmlunit.BrowserRunner.TestedBrowser.FF60; import static com.gargoylesoftware.htmlunit.BrowserRunner.TestedBrowser.IE; import static java.nio.charset.StandardCharsets.UTF_8; @@ -950,10 +951,10 @@ + "Transfer-Encoding: chunked\r\n" + "Server: Jetty(XXX)\r\n"}, IE = {"", "", - "Date XYZ GMT\r\n" - + "Content-Type: text/xml;charset=iso-8859-1\r\n" - + "Transfer-Encoding: chunked\r\n" - + "Server: Jetty(XXX)\r\n\r\n"}, + "Date XYZ GMT\n" + + "Content-Type: text/xml;charset=iso-8859-1\n" + + "Transfer-Encoding: chunked\n" + + "Server: Jetty(XXX)\n\n"}, CHROME = {"", "", "date XYZ GMT\r\n" + "server: Jetty(XXX)\r\n" @@ -964,7 +965,7 @@ + "Date XYZ GMT\n" + "Server: Jetty(XXX)\n" + "Transfer-Encoding: chunked\n"}) - @NotYetImplemented(CHROME) + @NotYetImplemented({CHROME, FF60}) public void getAllResponseHeaders() throws Exception { final String html = "<html>\n" |