From e8394a4673ce92c5bb6a35b2ea5abc3d9b366539 Mon Sep 17 00:00:00 2001 From: Alexey Zotov Date: Mon, 12 Aug 2013 15:03:46 +0400 Subject: [PATCH] Fixed konqueror browser support. --- .../browser/KonquerorBrowserBuilder.java | 6 +- .../KonquerorMozillaSubBuilderTest.java | 64 +++++++++++++++++++ 2 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 test/org/openddr/simpleapi/oddr/builder/browser/KonquerorMozillaSubBuilderTest.java diff --git a/src/org/openddr/simpleapi/oddr/builder/browser/KonquerorBrowserBuilder.java b/src/org/openddr/simpleapi/oddr/builder/browser/KonquerorBrowserBuilder.java index a316b05..a186cde 100644 --- a/src/org/openddr/simpleapi/oddr/builder/browser/KonquerorBrowserBuilder.java +++ b/src/org/openddr/simpleapi/oddr/builder/browser/KonquerorBrowserBuilder.java @@ -22,16 +22,18 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; + +import org.apache.commons.lang.StringUtils; import org.openddr.simpleapi.oddr.model.UserAgent; import org.openddr.simpleapi.oddr.model.browser.Browser; public class KonquerorBrowserBuilder extends LayoutEngineBrowserBuilder { - private static final String KONQUEROR_VERSION_REGEXP = ".*Konqueror/([0-9a-z\\.\\-]+).*"; + private static final String KONQUEROR_VERSION_REGEXP = ".*[Kk]onqueror/([0-9a-z\\.\\-]+).*"; private Pattern konquerorVersionPattern = Pattern.compile(KONQUEROR_VERSION_REGEXP); public boolean canBuild(UserAgent userAgent) { - return (userAgent.getCompleteUserAgent().contains("Konqueror")); + return (userAgent.getCompleteUserAgent().toLowerCase().contains("konqueror")); } @Override diff --git a/test/org/openddr/simpleapi/oddr/builder/browser/KonquerorMozillaSubBuilderTest.java b/test/org/openddr/simpleapi/oddr/builder/browser/KonquerorMozillaSubBuilderTest.java new file mode 100644 index 0000000..395e570 --- /dev/null +++ b/test/org/openddr/simpleapi/oddr/builder/browser/KonquerorMozillaSubBuilderTest.java @@ -0,0 +1,64 @@ +package org.openddr.simpleapi.oddr.builder.browser; + +import org.junit.Test; +import org.openddr.simpleapi.oddr.model.UserAgent; +import org.openddr.simpleapi.oddr.model.UserAgentFactory; +import org.openddr.simpleapi.oddr.model.browser.Browser; +import org.w3c.ddr.simple.exception.InitializationException; +import org.w3c.ddr.simple.exception.NameException; + +import java.io.IOException; + +import static org.junit.Assert.*; + +public class KonquerorMozillaSubBuilderTest { + + private final KonquerorBrowserBuilder konquerorBrowserBuilder = new KonquerorBrowserBuilder(); + + @Test + public void testCanBuild() throws InitializationException, IOException, NameException { + + final UserAgent wrongUserAgent = UserAgentFactory.newUserAgent("wrong user agent"); + assertFalse(konquerorBrowserBuilder.canBuild(wrongUserAgent)); + + final UserAgent realUserAgent = UserAgentFactory.newUserAgent( + "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Exabot-Thumbnails)"); + assertTrue(konquerorBrowserBuilder.canBuild(realUserAgent)); + + final UserAgent realUserAgentLowerCase = UserAgentFactory.newUserAgent( + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.7.2 Safari/534.34"); + assertTrue(konquerorBrowserBuilder.canBuild(realUserAgentLowerCase)); + } + + @Test + public void testBuild() { + + UserAgent userAgent = UserAgentFactory.newUserAgent( + "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Exabot-Thumbnails)"); + Browser browser = konquerorBrowserBuilder.build(userAgent, 0); + + assertEquals("KDE", browser.getVendor()); + assertEquals("Konqueror", browser.getModel()); + assertEquals(80, browser.getConfidence()); + assertEquals("3.5", browser.getVersion()); + assertEquals("3", browser.getMajorRevision()); + assertEquals("5", browser.getMinorRevision()); + assertEquals("0", browser.getMicroRevision()); + assertEquals("0", browser.getNanoRevision()); + + + userAgent = UserAgentFactory.newUserAgent( + "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.34 (KHTML, like Gecko) konqueror/4.7.2 Safari/534.34"); + browser = konquerorBrowserBuilder.build(userAgent, 0); + + assertEquals("KDE", browser.getVendor()); + assertEquals("Konqueror", browser.getModel()); + assertEquals(70, browser.getConfidence()); + assertEquals("4.7.2", browser.getVersion()); + assertEquals("4", browser.getMajorRevision()); + assertEquals("7", browser.getMinorRevision()); + assertEquals("2", browser.getMicroRevision()); + assertEquals("0", browser.getNanoRevision()); + + } +}