[HtmlUnit] SVN: [15488] trunk/htmlunit/src
rbri--- via HtmlUnit-develop <[email protected]> Thu, 19 Jul 2018 18:26:19 +0000
| Newsgroups | gmane.comp.java.htmlunit.devel |
|---|---|
| Message-ID | <[email protected]> |
Revision: 15488
http://sourceforge.net/p/htmlunit/code/15488
Author: rbri
Date: 2018-07-19 18:26:06 +0000 (Thu, 19 Jul 2018)
Log Message:
-----------
next step in our endless encoding fight - fix area and image
Modified Paths:
--------------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlArea.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImage.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/PrimitiveWebServer.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClient7Test.java
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlArea.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlArea.java 2018-07-18 19:32:57 UTC (rev 15487)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlArea.java 2018-07-19 18:26:06 UTC (rev 15488)
@@ -91,6 +91,7 @@
"Not a valid url: " + getHrefAttribute());
}
final WebRequest request = new WebRequest(url);
+ request.setCharset(page.getCharset());
request.setAdditionalHeader(HttpHeader.REFERER, page.getUrl().toExternalForm());
final WebWindow webWindow = enclosingPage.getEnclosingWindow();
webClient.getPage(
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImage.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImage.java 2018-07-18 19:32:57 UTC (rev 15487)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImage.java 2018-07-19 18:26:06 UTC (rev 15488)
@@ -463,6 +463,7 @@
final URL url = page.getFullyQualifiedUrl(src);
final String accept = webclient.getBrowserVersion().getImgAcceptHeader();
final WebRequest request = new WebRequest(url, accept);
+ request.setCharset(page.getCharset());
request.setAdditionalHeader(HttpHeader.REFERER, page.getUrl().toExternalForm());
imageWebResponse_ = webclient.loadWebResponse(request);
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/PrimitiveWebServer.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/PrimitiveWebServer.java 2018-07-18 19:32:57 UTC (rev 15487)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/PrimitiveWebServer.java 2018-07-19 18:26:06 UTC (rev 15488)
@@ -103,17 +103,18 @@
}
else {
requests_.add(requestString);
- try (OutputStream out = socket.getOutputStream()) {
- if (first || otherResponse_ == null) {
- response = firstResponse_;
- }
- else {
- response = otherResponse_;
- }
- first = false;
- out.write(response.getBytes(charset_));
+ if (first || otherResponse_ == null) {
+ response = firstResponse_;
}
+ else {
+ response = otherResponse_;
+ }
+ first = false;
}
+
+ try (OutputStream out = socket.getOutputStream()) {
+ out.write(response.getBytes(charset_));
+ }
}
}
catch (final SocketException e) {
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClient7Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClient7Test.java 2018-07-18 19:32:57 UTC (rev 15487)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClient7Test.java 2018-07-19 18:26:06 UTC (rev 15488)
@@ -14,6 +14,7 @@
*/
package com.gargoylesoftware.htmlunit;
+import static com.gargoylesoftware.htmlunit.BrowserRunner.TestedBrowser.FF60;
import static com.gargoylesoftware.htmlunit.BrowserRunner.TestedBrowser.IE;
import java.net.URL;
@@ -26,6 +27,7 @@
import org.openqa.selenium.WebDriver;
import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts;
+import com.gargoylesoftware.htmlunit.BrowserRunner.BuggyWebDriver;
import com.gargoylesoftware.htmlunit.BrowserRunner.NotYetImplemented;
/**
@@ -221,6 +223,98 @@
* @throws Exception if the test fails
*/
@Test
+ @Alerts(DEFAULT = "/area.html?k%C3%B6nig",
+ IE = "/area.html?k\u00c3\u00b6nig")
+ @BuggyWebDriver(FF60)
+ @NotYetImplemented(IE)
+ public void areaUrlEncodingUTF8Header() throws Exception {
+ areaUrlEncoding(true, "UTF-8");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "/area.html?k%C3%B6nig",
+ IE = "/area.html?k\u00c3\u00b6nig")
+ @BuggyWebDriver(FF60)
+ @NotYetImplemented(IE)
+ public void areaUrlEncodingUTF8Meta() throws Exception {
+ areaUrlEncoding(false, "UTF-8");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "/area.html?k%F6nig",
+ IE = "/area.html?k\u00f6nig")
+ @BuggyWebDriver(FF60)
+ @NotYetImplemented(IE)
+ public void areaUrlEncodingISO8859_1Header() throws Exception {
+ areaUrlEncoding(true, "ISO-8859-1");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "/area.html?k%F6nig",
+ IE = "/area.html?k\u00f6nig")
+ @BuggyWebDriver(FF60)
+ @NotYetImplemented(IE)
+ public void areaUrlEncodingISO8859_1Meta() throws Exception {
+ areaUrlEncoding(false, "ISO-8859-1");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "/test.gif?k%C3%B6nig",
+ IE = "/test.gif?k\u00c3\u00b6nig")
+ @NotYetImplemented(IE)
+ public void imageUrlEncodingUTF8Header() throws Exception {
+ imageUrlEncoding(true, "UTF-8");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "/test.gif?k%C3%B6nig",
+ IE = "/test.gif?k\u00c3\u00b6nig")
+ @NotYetImplemented(IE)
+ public void imageUrlEncodingUTF8Meta() throws Exception {
+ imageUrlEncoding(false, "UTF-8");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "/test.gif?k%F6nig",
+ IE = "/test.gif?k\u00f6nig")
+ @NotYetImplemented(IE)
+ public void imageUrlEncodingISO8859_1Header() throws Exception {
+ imageUrlEncoding(true, "ISO_8859_1");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "/test.gif?k%F6nig",
+ IE = "/test.gif?k\u00f6nig")
+ @NotYetImplemented(IE)
+ public void imageUrlEncodingISO8859_1Meta() throws Exception {
+ imageUrlEncoding(false, "ISO_8859_1");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
@Alerts(DEFAULT = "/test.css?k%C3%B6nig",
IE = "/test.css?k\u00c3\u00b6nig")
@NotYetImplemented(IE)
@@ -301,6 +395,26 @@
true);
}
+ private void areaUrlEncoding(final boolean header, final String charset) throws Exception {
+ urlEncoding(header, charset,
+ null,
+ " <img id='myImg' usemap='#dot' width='100' height='100'"
+ + " src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAA"
+ + "HElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=='>\n"
+ + " <map name='dot'>\n"
+ + " <area id='myLink' shape='rect' coords='0,0,42,42' href='area.html?k\u00F6nig'/>\n"
+ + " <map>\n",
+ true);
+ }
+
+ private void imageUrlEncoding(final boolean header, final String charset) throws Exception {
+ urlEncoding(header, charset,
+ null,
+ " <img id='myImg' src='test.gif?k\u00F6nig'>"
+ + " <button id='myLink' onClick='document.getElementById(\"myImg\").width'></button>",
+ true);
+ }
+
private void linkUrlEncoding(final boolean header, final String charset) throws Exception {
urlEncoding(header, charset,
" <link rel='stylesheet' type='text/css' href='test.css?k\u00F6nig'>",
@@ -418,11 +532,8 @@
}
// HtmlApplet.java
-// HtmlArea.java
// HtmlEmbed.java
// HtmlForm.java
-// HtmlImage.java
// HtmlImageInput.java
// HtmlObject.java
-
}
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot