[HtmlUnit] SVN: [15461] trunk/htmlunit/src

rbri--- via HtmlUnit-develop <[email protected]> Sat, 14 Jul 2018 11:58:03 +0000
Newsgroups gmane.comp.java.htmlunit.devel
Message-ID <[email protected]>
Revision: 15461
          http://sourceforge.net/p/htmlunit/code/15461
Author:   rbri
Date:     2018-07-14 11:57:57 +0000 (Sat, 14 Jul 2018)
Log Message:
-----------
url encoding has to use UTF-8 as codepage

Modified Paths:
--------------
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebResponse.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/activex/javascript/msxml/XMLHTTPRequest.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebResponseTest.java

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebResponse.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebResponse.java	2018-07-14 09:47:57 UTC (rev 15460)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebResponse.java	2018-07-14 11:57:57 UTC (rev 15461)
@@ -57,6 +57,7 @@
     private long loadTime_;
     private WebResponseData responseData_;
     private WebRequest request_;
+    private boolean defaultCharsetUtf8_;
 
     /**
      * Constructs with all data.
@@ -180,12 +181,12 @@
 
             // xml pages are using a different content type
             if (null != contentType
-                && PageType.XML == DefaultPageCreator.determinePageType(contentType)) {
+                && (defaultCharsetUtf8_
+                    || PageType.XML == DefaultPageCreator.determinePageType(contentType))) {
                 return UTF_8;
             }
+        }
 
-            charset = getWebRequest().getCharset();
-        }
         if (charset == null) {
             charset = ISO_8859_1;
         }
@@ -287,4 +288,11 @@
             responseData_.cleanUp();
         }
     }
+
+    /**
+     * Mark this response for using UTF-8 as default charset.
+     */
+    public void defaultCharsetUtf8() {
+        defaultCharsetUtf8_ = true;
+    }
 }

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/activex/javascript/msxml/XMLHTTPRequest.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/activex/javascript/msxml/XMLHTTPRequest.java	2018-07-14 09:47:57 UTC (rev 15460)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/activex/javascript/msxml/XMLHTTPRequest.java	2018-07-14 11:57:57 UTC (rev 15461)
@@ -574,6 +574,9 @@
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Web response loaded successfully.");
             }
+            // this kind of web responses using UTF-8 as default encoding
+            webResponse.defaultCharsetUtf8();
+
             boolean allowOriginResponse = true;
             if (originHeaderValue != null) {
                 final String value = webResponse.getResponseHeaderValue(HttpHeader.ACCESS_CONTROL_ALLOW_ORIGIN);

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-07-14 09:47:57 UTC (rev 15460)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java	2018-07-14 11:57:57 UTC (rev 15461)
@@ -748,6 +748,9 @@
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Web response loaded successfully.");
             }
+            // this kind of web responses using UTF-8 as default encoding
+            webResponse.defaultCharsetUtf8();
+
             boolean allowOriginResponse = true;
             if (originHeaderValue != null) {
                 String value = webResponse.getResponseHeaderValue(HttpHeader.ACCESS_CONTROL_ALLOW_ORIGIN);

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebResponseTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebResponseTest.java	2018-07-14 09:47:57 UTC (rev 15460)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebResponseTest.java	2018-07-14 11:57:57 UTC (rev 15461)
@@ -107,8 +107,8 @@
     public void illegalCharset() throws Exception {
         illegalCharset("text/html; text/html; charset=ISO-8859-1;", ISO_8859_1);
         illegalCharset("text/html; charset=UTF-8; charset=UTF-8", UTF_8);
-        illegalCharset("text/html; charset=#sda+s", UTF_8);
-        illegalCharset("text/html; charset=UnknownCharset", UTF_8);
+        illegalCharset("text/html; charset=#sda+s", ISO_8859_1);
+        illegalCharset("text/html; charset=UnknownCharset", ISO_8859_1);
     }
 
     private void illegalCharset(final String cntTypeHeader, final Charset expectedCharset) throws Exception {


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot