From: <rb...@us...> - 2017-06-11 10:53:55
|
Revision: 14592 http://sourceforge.net/p/htmlunit/code/14592 Author: rbri Date: 2017-06-11 10:53:53 +0000 (Sun, 11 Jun 2017) Log Message: ----------- make browser determination more robust Issue 1890 Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/AbstractJavaScriptConfiguration.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfigurationTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/AbstractJavaScriptConfiguration.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/AbstractJavaScriptConfiguration.java 2017-06-11 10:44:26 UTC (rev 14591) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/AbstractJavaScriptConfiguration.java 2017-06-11 10:53:53 UTC (rev 14592) @@ -96,20 +96,25 @@ final BrowserVersion browser) { if (browser != null) { final SupportedBrowser expectedBrowser; - if (browser.equals(BrowserVersion.CHROME)) { + if (browser.isChrome()) { expectedBrowser = SupportedBrowser.CHROME; } - else if (browser.equals(BrowserVersion.INTERNET_EXPLORER)) { + else if (browser.isIE()) { expectedBrowser = SupportedBrowser.IE; } - else if (browser.equals(BrowserVersion.FIREFOX_45)) { - expectedBrowser = SupportedBrowser.FF45; + else if (browser.isEdge()) { + expectedBrowser = SupportedBrowser.EDGE; } - else if (browser.equals(BrowserVersion.FIREFOX_52)) { - expectedBrowser = SupportedBrowser.FF52; + else if (browser.isFirefox()) { + if (browser.getBrowserVersionNumeric() < 52) { + expectedBrowser = SupportedBrowser.FF45; + } + else { + expectedBrowser = SupportedBrowser.FF52; + } } else { - expectedBrowser = SupportedBrowser.EDGE; + expectedBrowser = SupportedBrowser.CHROME; // our current fallback } final String hostClassName = klass.getName(); Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfigurationTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfigurationTest.java 2017-06-11 10:44:26 UTC (rev 14591) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfigurationTest.java 2017-06-11 10:53:53 UTC (rev 14592) @@ -42,7 +42,9 @@ import org.junit.Test; import com.gargoylesoftware.htmlunit.BrowserVersion; +import com.gargoylesoftware.htmlunit.MockWebConnection; import com.gargoylesoftware.htmlunit.SimpleWebTestCase; +import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine; import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable; import com.gargoylesoftware.htmlunit.javascript.host.worker.DedicatedWorkerGlobalScope; @@ -54,6 +56,7 @@ * @author Ahmed Ashour * @author Ronald Brill * @author Frank Danek + * @author Joerg Werner */ public class JavaScriptConfigurationTest extends SimpleWebTestCase { @@ -278,4 +281,51 @@ } } + /** + * see issue 1890. + * + * @throws Exception if the test fails + */ + @Test + public void original() throws Exception { + final BrowserVersion browserVersion = BrowserVersion.CHROME; + + test(browserVersion); + } + + /** + * see issue 1890. + * + * @throws Exception if the test fails + */ + @Test + public void cloned() throws Exception { + final BrowserVersion browserVersion = BrowserVersion.FIREFOX_45.clone(); + + test(browserVersion); + } + + /** + * see issue 1890. + * + * @throws Exception if the test fails + */ + @Test + public void clonedAndModified() throws Exception { + final BrowserVersion browserVersion = BrowserVersion.FIREFOX_45.clone(); + browserVersion.setUserAgent("foo"); + + test(browserVersion); + } + + private void test(final BrowserVersion browserVersion) throws IOException { + try (WebClient webClient = new WebClient(browserVersion)) { + final MockWebConnection conn = new MockWebConnection(); + conn.setDefaultResponse("<html><body onload='document.body.firstChild'></body></html>"); + webClient.setWebConnection(conn); + + webClient.getPage("http://localhost/"); + } + } + } |