From dc0c153dc969c25574d6a49c5c573f058239c29f Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Mon, 15 Jun 2015 20:26:45 +0200 Subject: [PATCH 01/12] Update for 1.17 version --- README.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 012d0eab..a8eba2dc 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ https://github.com/HaraldWalker/user-agent-utils/tree/master Support me and buy me a beer: Flattr this -New in Version 1.16 (unreleased) +New in Version 1.17 (unreleased) ------------------- TBA @@ -27,7 +27,7 @@ Add dependency: eu.bitwalker UserAgentUtils - 1.15 + 1.16 ``` @@ -36,7 +36,7 @@ Add dependency for snapshot releases: eu.bitwalker UserAgentUtils - 1.16-SNAPSHOT + 1.17-SNAPSHOT ``` @@ -47,6 +47,20 @@ Contributors Changelog --------- +1.16 +---- +- iOS 8.2, 8.3, 8.4 and 9 added +- Chrome updated with latest versions +- Firefox updated with latest versions +- Updated Opera browser detection +- Xbox OS and Internet Explorer for Xbox added +- Improved CFNETWORK browser detection +- Added Vivaldi browser +- Improved Windows 10 detection +- Improved bot detection +- Added Android 5 tablet detection +- Performance improvements + 1.15 ---- - Safari 7 and 8 added From ecc991455c8dae326e2ff6e68b65eae939705a1a Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Mon, 15 Jun 2015 20:27:04 +0200 Subject: [PATCH 02/12] Update pom.xml --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fe61f686..ee73eabd 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ User-Agent-Utils http://www.bitwalker.eu/software/user-agent-utils UserAgentUtils - 1.16-SNAPSHOT + 1.17-SNAPSHOT Utility classes to handle user-agents. github From c235973bdb1ae52c4b44c28645b9a473c46ac514 Mon Sep 17 00:00:00 2001 From: Nathan Maves Date: Wed, 15 Jul 2015 21:18:54 -0600 Subject: [PATCH 03/12] #109 Added support for the new Microsoft Edge browser --- .gitignore | 64 ++++++- .../eu/bitwalker/useragentutils/Browser.java | 166 +++++++++--------- .../useragentutils/RenderingEngine.java | 4 + .../bitwalker/useragentutils/BrowserTest.java | 7 +- 4 files changed, 159 insertions(+), 82 deletions(-) diff --git a/.gitignore b/.gitignore index a7c7ae48..8605b561 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,68 @@ bin/ -target/ .project .classpath .settings .DS_Store + + +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion + +*.iml + +## Directory-based project format: +.idea/ +# if you remove the above rule, at least ignore the following: + +# User-specific stuff: +# .idea/workspace.xml +# .idea/tasks.xml +# .idea/dictionaries + +# Sensitive or high-churn files: +# .idea/dataSources.ids +# .idea/dataSources.xml +# .idea/sqlDataSources.xml +# .idea/dynamic.xml +# .idea/uiDesigner.xml + +# Gradle: +# .idea/gradle.xml +# .idea/libraries + +# Mongo Explorer plugin: +# .idea/mongoSettings.xml + +## File-based project format: +*.ipr +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + + +### Maven template +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + + diff --git a/src/main/java/eu/bitwalker/useragentutils/Browser.java b/src/main/java/eu/bitwalker/useragentutils/Browser.java index 3a463077..37440059 100644 --- a/src/main/java/eu/bitwalker/useragentutils/Browser.java +++ b/src/main/java/eu/bitwalker/useragentutils/Browser.java @@ -45,7 +45,7 @@ /** * Enum constants for most common browsers, including e-mail clients and bots. * @author harald - * + * */ public enum Browser { @@ -65,18 +65,24 @@ public enum Browser { */ OUTLOOK2010( Manufacturer.MICROSOFT, Browser.OUTLOOK, 108, "Outlook 2010", new String[] {"MSOffice 14", "Microsoft Outlook 14"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.WORD, null), // before IE7 + /** + * Family of Microsoft Edge browsers + */ + EDGE(Manufacturer.MICROSOFT, null, 300, "Microsoft Edge", new String[] {"Edge"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\\\/((12)\\\\.([0-9]*)))"), + EDGE_12(Manufacturer.MICROSOFT, Browser.EDGE, 301, "Microsoft Edge", new String[] {"Edge"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, null), + /** * Family of Internet Explorer browsers */ IE( Manufacturer.MICROSOFT, null, 1, "Internet Explorer", new String[] { "MSIE", "Trident", "IE " }, new String[]{"BingPreview", "Xbox", "Xbox One"}, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, "MSIE (([\\d]+)\\.([\\w]+))" ), // before Mozilla /** - * Since version 7 Outlook Express is identifying itself. By detecting Outlook Express we can not + * Since version 7 Outlook Express is identifying itself. By detecting Outlook Express we can not * identify the Internet Explorer version which is probably used for the rendering. * Obviously this product is now called Windows Live Mail Desktop or just Windows Live Mail. */ OUTLOOK_EXPRESS7( Manufacturer.MICROSOFT, Browser.IE, 110, "Windows Live Mail", new String[] {"Outlook-Express/7.0"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.TRIDENT, null), // before IE7, previously known as Outlook Express. First released in 2006, offered with different name later /** - * Since 2007 the mobile edition of Internet Explorer identifies itself as IEMobile in the user-agent. + * Since 2007 the mobile edition of Internet Explorer identifies itself as IEMobile in the user-agent. * If previous versions have to be detected, use the operating system information as well. */ IEMOBILE11( Manufacturer.MICROSOFT, Browser.IE, 125, "IE Mobile 11", new String[] { "IEMobile/11" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE strings @@ -84,7 +90,7 @@ public enum Browser { IEMOBILE9( Manufacturer.MICROSOFT, Browser.IE, 123, "IE Mobile 9", new String[] { "IEMobile/9" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE strings IEMOBILE7( Manufacturer.MICROSOFT, Browser.IE, 121, "IE Mobile 7", new String[] { "IEMobile 7" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE strings IEMOBILE6( Manufacturer.MICROSOFT, Browser.IE, 120, "IE Mobile 6", new String[] { "IEMobile 6" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE - IE_XBOX(Manufacturer.MICROSOFT, Browser.IE, 360, "Xbox", new String[] { "xbox" }, new String[] {}, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), + IE_XBOX(Manufacturer.MICROSOFT, Browser.IE, 360, "Xbox", new String[] { "xbox" }, new String[] {}, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), IE11( Manufacturer.MICROSOFT, Browser.IE, 95, "Internet Explorer 11", new String[] { "Trident/7", "IE 11." }, new String[] {"MSIE 7", "BingPreview"}, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, "(?:Trident\\/7|IE)(?:\\.[0-9]*;)?(?:.*rv:| )(([0-9]+)\\.?([0-9]+))" ), // before Mozilla IE10( Manufacturer.MICROSOFT, Browser.IE, 92, "Internet Explorer 10", new String[] { "MSIE 10" }, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null ), // before MSIE IE9( Manufacturer.MICROSOFT, Browser.IE, 90, "Internet Explorer 9", new String[] { "MSIE 9" }, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null ), // before MSIE @@ -93,12 +99,12 @@ public enum Browser { IE6( Manufacturer.MICROSOFT, Browser.IE, 60, "Internet Explorer 6", new String[] { "MSIE 6" }, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null ), // before MSIE IE5_5( Manufacturer.MICROSOFT, Browser.IE, 55, "Internet Explorer 5.5", new String[] { "MSIE 5.5" }, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE IE5( Manufacturer.MICROSOFT, Browser.IE, 50, "Internet Explorer 5", new String[] { "MSIE 5" }, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null ), // before MSIE - + /** * Google Chrome browser */ CHROME( Manufacturer.GOOGLE, null, 1, "Chrome", new String[] { "Chrome", "CrMo", "CriOS" }, new String[] { "OPR/", "Web Preview", "Vivaldi" } , BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "Chrome\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)" ), // before Mozilla - CHROME_MOBILE( Manufacturer.GOOGLE, Browser.CHROME, 100, "Chrome Mobile", new String[] { "CrMo","CriOS", "Mobile Safari" }, new String[] {"OPR/"}, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, "(?:CriOS|CrMo|Chrome)\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)" ), + CHROME_MOBILE( Manufacturer.GOOGLE, Browser.CHROME, 100, "Chrome Mobile", new String[] { "CrMo","CriOS", "Mobile Safari" }, new String[] {"OPR/"}, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, "(?:CriOS|CrMo|Chrome)\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)" ), CHROME46( Manufacturer.GOOGLE, Browser.CHROME, 51, "Chrome 46", new String[] { "Chrome/46" }, new String[] { "OPR/", "Web Preview", "Vivaldi" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla CHROME45( Manufacturer.GOOGLE, Browser.CHROME, 50, "Chrome 45", new String[] { "Chrome/45" }, new String[] { "OPR/", "Web Preview", "Vivaldi" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla CHROME44( Manufacturer.GOOGLE, Browser.CHROME, 49, "Chrome 44", new String[] { "Chrome/44" }, new String[] { "OPR/", "Web Preview", "Vivaldi" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla @@ -138,8 +144,8 @@ public enum Browser { CHROME10( Manufacturer.GOOGLE, Browser.CHROME, 15, "Chrome 10", new String[] { "Chrome/10" }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla CHROME9( Manufacturer.GOOGLE, Browser.CHROME, 10, "Chrome 9", new String[] { "Chrome/9" }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla CHROME8( Manufacturer.GOOGLE, Browser.CHROME, 5, "Chrome 8", new String[] { "Chrome/8" }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla - - OMNIWEB( Manufacturer.OTHER, null, 2, "Omniweb", new String[] { "OmniWeb" }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // + + OMNIWEB( Manufacturer.OTHER, null, 2, "Omniweb", new String[] { "OmniWeb" }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // SAFARI( Manufacturer.APPLE, null, 1, "Safari", new String[] { "Safari" }, new String[] { "bot", "preview", "OPR/", "Coast/", "Vivaldi","CFNetwork" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "Version\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?)" ), // before AppleWebKit BLACKBERRY10( Manufacturer.BLACKBERRY, Browser.SAFARI, 10, "BlackBerry", new String[] { "BB10" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, null), @@ -152,11 +158,11 @@ public enum Browser { SAFARI4( Manufacturer.APPLE, Browser.SAFARI, 4, "Safari 4", new String[] { "Version/4" }, new String[] { "Googlebot-Mobile" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before AppleWebKit /** - * Opera Coast mobile browser, http://en.wikipedia.org/wiki/Opera_Coast + * Opera Coast mobile browser, http://en.wikipedia.org/wiki/Opera_Coast */ - COAST( Manufacturer.OPERA, null, 500, "Opera", new String[] { " Coast/" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, "Coast\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), - COAST1( Manufacturer.OPERA, Browser.COAST, 501, "Opera", new String[] { " Coast/1." }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, "Coast\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), - + COAST( Manufacturer.OPERA, null, 500, "Opera", new String[] { " Coast/" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, "Coast\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), + COAST1( Manufacturer.OPERA, Browser.COAST, 501, "Opera", new String[] { " Coast/1." }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, "Coast\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), + OPERA( Manufacturer.OPERA, null, 1, "Opera", new String[] { " OPR/", "Opera" }, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, "Opera\\/(([\\d]+)\\.([\\w]+))"), // before MSIE OPERA_MOBILE( Manufacturer.OPERA, Browser.OPERA, 100,"Opera Mobile", new String[] { "Mobile Safari"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.BLINK, "OPR\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), // Another Opera for mobile devices OPERA_MINI( Manufacturer.OPERA, Browser.OPERA, 20, "Opera Mini", new String[] { "Opera Mini"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.PRESTO, null), // Opera for mobile devices @@ -173,22 +179,22 @@ public enum Browser { OPERA18( Manufacturer.OPERA, Browser.OPERA, 18, "Opera 18", new String[] { "OPR/18." }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "OPR\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), OPERA17( Manufacturer.OPERA, Browser.OPERA, 17, "Opera 17", new String[] { "OPR/17." }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "OPR\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), OPERA16( Manufacturer.OPERA, Browser.OPERA, 16, "Opera 16", new String[] { "OPR/16." }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "OPR\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), - OPERA15( Manufacturer.OPERA, Browser.OPERA, 15, "Opera 15", new String[] { "OPR/15." }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "OPR\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), + OPERA15( Manufacturer.OPERA, Browser.OPERA, 15, "Opera 15", new String[] { "OPR/15." }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "OPR\\/(([\\d]+)\\.([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), OPERA12( Manufacturer.OPERA, Browser.OPERA, 12, "Opera 12", new String[] { "Opera/12", "Version/12." }, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, "Version\\/(([\\d]+)\\.([\\w]+))"), OPERA11( Manufacturer.OPERA, Browser.OPERA, 11, "Opera 11", new String[] { "Version/11." }, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, "Version\\/(([\\d]+)\\.([\\w]+))"), - OPERA10( Manufacturer.OPERA, Browser.OPERA, 10, "Opera 10", new String[] { "Opera/9.8" }, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, "Version\\/(([\\d]+)\\.([\\w]+))"), - OPERA9( Manufacturer.OPERA, Browser.OPERA, 5, "Opera 9", new String[] { "Opera/9" }, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, null), - KONQUEROR( Manufacturer.OTHER, null, 1, "Konqueror", new String[] { "Konqueror"}, new String[]{"Exabot"}, BrowserType.WEB_BROWSER, RenderingEngine.KHTML, "Konqueror\\/(([0-9]+)\\.?([\\w]+)?(-[\\w]+)?)" ), - + OPERA10( Manufacturer.OPERA, Browser.OPERA, 10, "Opera 10", new String[] { "Opera/9.8" }, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, "Version\\/(([\\d]+)\\.([\\w]+))"), + OPERA9( Manufacturer.OPERA, Browser.OPERA, 5, "Opera 9", new String[] { "Opera/9" }, null, BrowserType.WEB_BROWSER, RenderingEngine.PRESTO, null), + KONQUEROR( Manufacturer.OTHER, null, 1, "Konqueror", new String[] { "Konqueror"}, new String[]{"Exabot"}, BrowserType.WEB_BROWSER, RenderingEngine.KHTML, "Konqueror\\/(([0-9]+)\\.?([\\w]+)?(-[\\w]+)?)" ), + DOLFIN2( Manufacturer.SAMSUNG, null, 1, "Samsung Dolphin 2", new String[] { "Dolfin/2" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, null ), // webkit based browser for the bada os - + /* * Apple WebKit compatible client. Can be a browser or an application with embedded browser using UIWebView. */ - APPLE_WEB_KIT( Manufacturer.APPLE, null, 50, "Apple WebKit", new String[] { "AppleWebKit" }, new String[] { "bot", "preview", "OPR/", "Coast/", "Vivaldi" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit - APPLE_ITUNES( Manufacturer.APPLE, Browser.APPLE_WEB_KIT, 52, "iTunes", new String[] { "iTunes" }, null, BrowserType.APP, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit - APPLE_APPSTORE( Manufacturer.APPLE, Browser.APPLE_WEB_KIT, 53, "App Store", new String[] { "MacAppStore" }, null, BrowserType.APP, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit - ADOBE_AIR( Manufacturer.ADOBE, Browser.APPLE_WEB_KIT, 1, "Adobe AIR application", new String[] { "AdobeAIR" }, null, BrowserType.APP, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit + APPLE_WEB_KIT( Manufacturer.APPLE, null, 50, "Apple WebKit", new String[] { "AppleWebKit" }, new String[] { "bot", "preview", "OPR/", "Coast/", "Vivaldi" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit + APPLE_ITUNES( Manufacturer.APPLE, Browser.APPLE_WEB_KIT, 52, "iTunes", new String[] { "iTunes" }, null, BrowserType.APP, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit + APPLE_APPSTORE( Manufacturer.APPLE, Browser.APPLE_WEB_KIT, 53, "App Store", new String[] { "MacAppStore" }, null, BrowserType.APP, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit + ADOBE_AIR( Manufacturer.ADOBE, Browser.APPLE_WEB_KIT, 1, "Adobe AIR application", new String[] { "AdobeAIR" }, null, BrowserType.APP, RenderingEngine.WEBKIT, null), // Microsoft Entrourage/Outlook 2010 also only identifies itself as AppleWebKit LOTUS_NOTES( Manufacturer.OTHER, null, 3, "Lotus Notes", new String[] { "Lotus-Notes" }, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, "Lotus-Notes\\/(([\\d]+)\\.([\\w]+))"), // before Mozilla @@ -196,29 +202,29 @@ public enum Browser { CAMINO2( Manufacturer.OTHER, Browser.CAMINO, 17, "Camino 2", new String[] { "Camino/2" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FLOCK( Manufacturer.OTHER, null, 4, "Flock", new String[]{"Flock"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, "Flock\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?)"), - + FIREFOX( Manufacturer.MOZILLA, null, 10, "Firefox", new String[] { "Firefox" }, new String[] {"ggpht.com", "WordPress.com mShots"}, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, "Firefox\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?(\\.[\\w]+)?)"), // using Gecko Engine FIREFOX3MOBILE( Manufacturer.MOZILLA, Browser.FIREFOX, 31, "Firefox 3 Mobile", new String[] { "Firefox/3.5 Maemo" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX_MOBILE( Manufacturer.MOZILLA, Browser.FIREFOX, 200, "Firefox Mobile", new String[] { "Mobile" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX_MOBILE23(Manufacturer.MOZILLA, FIREFOX_MOBILE, 223, "Firefox Mobile 23", new String[] { "Firefox/23" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX40( Manufacturer.MOZILLA, Browser.FIREFOX, 217, "Firefox 40", new String[] { "Firefox/40" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX39( Manufacturer.MOZILLA, Browser.FIREFOX, 216, "Firefox 39", new String[] { "Firefox/39" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX38( Manufacturer.MOZILLA, Browser.FIREFOX, 215, "Firefox 38", new String[] { "Firefox/38" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX37( Manufacturer.MOZILLA, Browser.FIREFOX, 214, "Firefox 37", new String[] { "Firefox/37" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX36( Manufacturer.MOZILLA, Browser.FIREFOX, 213, "Firefox 36", new String[] { "Firefox/36" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX35( Manufacturer.MOZILLA, Browser.FIREFOX, 212, "Firefox 35", new String[] { "Firefox/35" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX34( Manufacturer.MOZILLA, Browser.FIREFOX, 211, "Firefox 34", new String[] { "Firefox/34" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX33( Manufacturer.MOZILLA, Browser.FIREFOX, 210, "Firefox 33", new String[] { "Firefox/33" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX32( Manufacturer.MOZILLA, Browser.FIREFOX, 109, "Firefox 32", new String[] { "Firefox/32" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX31( Manufacturer.MOZILLA, Browser.FIREFOX, 310, "Firefox 31", new String[] { "Firefox/31" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX30( Manufacturer.MOZILLA, Browser.FIREFOX, 300, "Firefox 30", new String[] { "Firefox/30" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX29( Manufacturer.MOZILLA, Browser.FIREFOX, 290, "Firefox 29", new String[] { "Firefox/29" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX28( Manufacturer.MOZILLA, Browser.FIREFOX, 280, "Firefox 28", new String[] { "Firefox/28" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX27( Manufacturer.MOZILLA, Browser.FIREFOX, 108, "Firefox 27", new String[] { "Firefox/27" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX26( Manufacturer.MOZILLA, Browser.FIREFOX, 107, "Firefox 26", new String[] { "Firefox/26" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX25( Manufacturer.MOZILLA, Browser.FIREFOX, 106, "Firefox 25", new String[] { "Firefox/25" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX24( Manufacturer.MOZILLA, Browser.FIREFOX, 105, "Firefox 24", new String[] { "Firefox/24" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - FIREFOX23( Manufacturer.MOZILLA, Browser.FIREFOX, 104, "Firefox 23", new String[] { "Firefox/23" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX40( Manufacturer.MOZILLA, Browser.FIREFOX, 217, "Firefox 40", new String[] { "Firefox/40" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX39( Manufacturer.MOZILLA, Browser.FIREFOX, 216, "Firefox 39", new String[] { "Firefox/39" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX38( Manufacturer.MOZILLA, Browser.FIREFOX, 215, "Firefox 38", new String[] { "Firefox/38" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX37( Manufacturer.MOZILLA, Browser.FIREFOX, 214, "Firefox 37", new String[] { "Firefox/37" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX36( Manufacturer.MOZILLA, Browser.FIREFOX, 213, "Firefox 36", new String[] { "Firefox/36" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX35( Manufacturer.MOZILLA, Browser.FIREFOX, 212, "Firefox 35", new String[] { "Firefox/35" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX34( Manufacturer.MOZILLA, Browser.FIREFOX, 211, "Firefox 34", new String[] { "Firefox/34" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX33( Manufacturer.MOZILLA, Browser.FIREFOX, 210, "Firefox 33", new String[] { "Firefox/33" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX32( Manufacturer.MOZILLA, Browser.FIREFOX, 109, "Firefox 32", new String[] { "Firefox/32" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX31( Manufacturer.MOZILLA, Browser.FIREFOX, 310, "Firefox 31", new String[] { "Firefox/31" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX30( Manufacturer.MOZILLA, Browser.FIREFOX, 300, "Firefox 30", new String[] { "Firefox/30" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX29( Manufacturer.MOZILLA, Browser.FIREFOX, 290, "Firefox 29", new String[] { "Firefox/29" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX28( Manufacturer.MOZILLA, Browser.FIREFOX, 280, "Firefox 28", new String[] { "Firefox/28" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX27( Manufacturer.MOZILLA, Browser.FIREFOX, 108, "Firefox 27", new String[] { "Firefox/27" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX26( Manufacturer.MOZILLA, Browser.FIREFOX, 107, "Firefox 26", new String[] { "Firefox/26" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX25( Manufacturer.MOZILLA, Browser.FIREFOX, 106, "Firefox 25", new String[] { "Firefox/25" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX24( Manufacturer.MOZILLA, Browser.FIREFOX, 105, "Firefox 24", new String[] { "Firefox/24" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX23( Manufacturer.MOZILLA, Browser.FIREFOX, 104, "Firefox 23", new String[] { "Firefox/23" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX22( Manufacturer.MOZILLA, Browser.FIREFOX, 103, "Firefox 22", new String[] { "Firefox/22" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX21( Manufacturer.MOZILLA, Browser.FIREFOX, 102, "Firefox 21", new String[] { "Firefox/21" }, new String[]{"WordPress.com mShots"}, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX20( Manufacturer.MOZILLA, Browser.FIREFOX, 101, "Firefox 20", new String[] { "Firefox/20" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine @@ -241,7 +247,7 @@ public enum Browser { FIREFOX3( Manufacturer.MOZILLA, Browser.FIREFOX, 30, "Firefox 3", new String[] { "Firefox/3" }, new String[] {"ggpht.com"}, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX2( Manufacturer.MOZILLA, Browser.FIREFOX, 20, "Firefox 2", new String[] { "Firefox/2" }, new String[]{"WordPress.com mShots"}, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX1_5( Manufacturer.MOZILLA, Browser.FIREFOX, 15, "Firefox 1.5", new String[] { "Firefox/1.5" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine - + /* * Thunderbird email client, based on the same Gecko engine Firefox is using. */ @@ -253,37 +259,37 @@ public enum Browser { THUNDERBIRD7( Manufacturer.MOZILLA, Browser.THUNDERBIRD, 170, "Thunderbird 7", new String[] { "Thunderbird/7" }, null, BrowserType.EMAIL_CLIENT, RenderingEngine.GECKO, null ), // using Gecko Engine THUNDERBIRD6( Manufacturer.MOZILLA, Browser.THUNDERBIRD, 160, "Thunderbird 6", new String[] { "Thunderbird/6" }, null, BrowserType.EMAIL_CLIENT, RenderingEngine.GECKO, null ), // using Gecko Engine THUNDERBIRD3( Manufacturer.MOZILLA, Browser.THUNDERBIRD, 130, "Thunderbird 3", new String[] { "Thunderbird/3" }, null, BrowserType.EMAIL_CLIENT, RenderingEngine.GECKO, null ), // using Gecko Engine - THUNDERBIRD2( Manufacturer.MOZILLA, Browser.THUNDERBIRD, 120, "Thunderbird 2", new String[] { "Thunderbird/2" }, null, BrowserType.EMAIL_CLIENT, RenderingEngine.GECKO, null ), // using Gecko Engine - + THUNDERBIRD2( Manufacturer.MOZILLA, Browser.THUNDERBIRD, 120, "Thunderbird 2", new String[] { "Thunderbird/2" }, null, BrowserType.EMAIL_CLIENT, RenderingEngine.GECKO, null ), // using Gecko Engine + VIVALDI(Manufacturer.OTHER, null, 108338, "Vivaldi", new String[] { "Vivaldi" }, new String[] {}, BrowserType.WEB_BROWSER, RenderingEngine.BLINK, "Vivaldi/(([\\d]+).([\\d]+).([\\d]+).([\\d]+))"), - + SEAMONKEY( Manufacturer.OTHER, null, 15, "SeaMonkey", new String[]{"SeaMonkey"}, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, "SeaMonkey\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?)"), // using Gecko Engine - + BOT( Manufacturer.OTHER, null,12, "Robot/Spider", new String[] {"Googlebot", "Mediapartners-Google", "Web Preview", "bot", "Applebot" , "spider", "crawler", "Feedfetcher", "Slurp", "Twiceler", "Nutch", "BecomeBot", "bingbot", "BingPreview", "Google Web Preview", "WordPress.com mShots", "Seznam", "facebookexternalhit" , "YandexMarket", "Teoma", "ThumbSniper", "Phantom.js"}, null, BrowserType.ROBOT, RenderingEngine.OTHER, null), BOT_MOBILE( Manufacturer.OTHER, Browser.BOT, 20 , "Mobil Robot/Spider", new String[] {"Googlebot-Mobile"}, null, BrowserType.ROBOT, RenderingEngine.OTHER, null), - + MOZILLA( Manufacturer.MOZILLA, null, 1, "Mozilla", new String[] { "Mozilla", "Moozilla" }, new String[] {"ggpht.com"}, BrowserType.WEB_BROWSER, RenderingEngine.OTHER, null), // rest of the mozilla browsers - + CFNETWORK( Manufacturer.OTHER, null, 6, "CFNetwork", new String[] { "CFNetwork" }, null, BrowserType.UNKNOWN, RenderingEngine.OTHER, "CFNetwork/(([\\d]+)(?:\\.([\\d]))?(?:\\.([\\d]+))?)" ), // Mac OS X cocoa library - + EUDORA( Manufacturer.OTHER, null, 7, "Eudora", new String[] { "Eudora", "EUDORA" }, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, null ), // email client by Qualcomm - + POCOMAIL( Manufacturer.OTHER, null, 8, "PocoMail", new String[] { "PocoMail" }, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, null ), - + THEBAT( Manufacturer.OTHER, null, 9, "The Bat!", new String[]{"The Bat"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, null), // Email Client - + NETFRONT( Manufacturer.OTHER, null, 10, "NetFront", new String[]{"NetFront"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.OTHER, null), // mobile device browser - + EVOLUTION( Manufacturer.OTHER, null, 11, "Evolution", new String[]{"CamelHttpStream"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.OTHER, null), // http://www.go-evolution.org/Camel.Stream - + LYNX( Manufacturer.OTHER, null, 13, "Lynx", new String[]{"Lynx"}, null, BrowserType.TEXT_BROWSER, RenderingEngine.OTHER, "Lynx\\/(([0-9]+)\\.([\\d]+)\\.?([\\w-+]+)?\\.?([\\w-+]+)?)"), - + DOWNLOAD( Manufacturer.OTHER, null, 16, "Downloading Tool", new String[]{"cURL","wget", "ggpht.com", "Apache-HttpClient"}, null, BrowserType.TOOL, RenderingEngine.OTHER, null), - + UNKNOWN( Manufacturer.OTHER, null, 14, "Unknown", new String[0], null, BrowserType.UNKNOWN, RenderingEngine.OTHER, null ), @Deprecated - APPLE_MAIL( Manufacturer.APPLE, null, 51, "Apple Mail", new String[0], null, BrowserType.EMAIL_CLIENT, RenderingEngine.WEBKIT, null); // not detectable any longer. - + APPLE_MAIL( Manufacturer.APPLE, null, 51, "Apple Mail", new String[0], null, BrowserType.EMAIL_CLIENT, RenderingEngine.WEBKIT, null); // not detectable any longer. + /* * An id for each browser version which is unique per manufacturer. */ @@ -298,7 +304,7 @@ public enum Browser { private List children; private Pattern versionRegEx; private static List topLevelBrowsers; - + private Browser(Manufacturer manufacturer, Browser parent, int versionId, String name, String[] aliases, String[] exclude, BrowserType browserType, RenderingEngine renderingEngine, String versionRegexString) { this.id = (short) ( ( manufacturer.getId() << 8) + (byte) versionId); this.name = name; @@ -311,19 +317,19 @@ private Browser(Manufacturer manufacturer, Browser parent, int versionId, String this.renderingEngine = renderingEngine; if (versionRegexString != null) this.versionRegEx = Pattern.compile(versionRegexString); - if (this.parent == null) + if (this.parent == null) addTopLevelBrowser(this); - else + else this.parent.children.add(this); } // create collection of top level browsers during initialization private static void addTopLevelBrowser(Browser browser) { if(topLevelBrowsers == null) - topLevelBrowsers = new ArrayList(); + topLevelBrowsers = new ArrayList(); topLevelBrowsers.add(browser); } - + public short getId() { return id; } @@ -331,7 +337,7 @@ public short getId() { public String getName() { return name; } - + private Pattern getVersionRegEx() { if (this.versionRegEx == null) { if (this.getGroup() != this) @@ -341,9 +347,9 @@ private Pattern getVersionRegEx() { } return this.versionRegEx; } - + /** - * Detects the detailed version information of the browser. Depends on the userAgent to be available. + * Detects the detailed version information of the browser. Depends on the userAgent to be available. * Returns null if it can not detect the version information. * @return Version */ @@ -362,7 +368,7 @@ public Version getVersion(String userAgentString) { } return null; } - + /** * @return the browserType */ @@ -376,7 +382,7 @@ public BrowserType getBrowserType() { public Manufacturer getManufacturer() { return manufacturer; } - + /** * @return the rendering engine */ @@ -410,7 +416,7 @@ public boolean isInUserAgentString(String agentString) private boolean isInUserAgentLowercaseString(String agentStringLowerCase) { return Utils.contains(agentStringLowerCase, aliases); } - + private Browser checkUserAgentLowercase(String agentLowercaseString) { if (this.isInUserAgentLowercaseString(agentLowercaseString)) { @@ -431,12 +437,12 @@ private Browser checkUserAgentLowercase(String agentLowercaseString) { } return null; } - + /** - * Iterates over all Browsers to compare the browser signature with + * Iterates over all Browsers to compare the browser signature with * the user agent string. If no match can be found Browser.UNKNOWN will * be returned. - * Starts with the top level browsers and only if one of those matches + * Starts with the top level browsers and only if one of those matches * checks children browsers. * Steps out of loop as soon as there is a match. * @param agentString @@ -456,8 +462,8 @@ public static Browser parseUserAgentLowercaseString(String agentString) } /** - * Iterates over the given Browsers (incl. children) to compare the browser - * signature with the user agent string. + * Iterates over the given Browsers (incl. children) to compare the browser + * signature with the user agent string. * If no match can be found Browser.UNKNOWN will be returned. * Steps out of loop as soon as there is a match. * Be aware that if the order of the provided Browsers is incorrect or if the set is too limited it can lead to false matches! @@ -482,12 +488,12 @@ private static Browser parseUserAgentLowercaseString(String agentLowercaseString } return Browser.UNKNOWN; } - + /** * Returns the enum constant of this type with the specified id. * Throws IllegalArgumentException if the value does not exist. * @param id - * @return + * @return */ public static Browser valueOf(short id) { @@ -496,12 +502,12 @@ public static Browser valueOf(short id) if (browser.getId() == id) return browser; } - + // same behavior as standard valueOf(string) method throw new IllegalArgumentException( "No enum const for id " + id); } - - - + + + } diff --git a/src/main/java/eu/bitwalker/useragentutils/RenderingEngine.java b/src/main/java/eu/bitwalker/useragentutils/RenderingEngine.java index 30b858a7..845e4f3a 100644 --- a/src/main/java/eu/bitwalker/useragentutils/RenderingEngine.java +++ b/src/main/java/eu/bitwalker/useragentutils/RenderingEngine.java @@ -43,6 +43,10 @@ */ public enum RenderingEngine { + /** + * EdgeHTML is a proprietary layout engine developed for the Microsoft Edge web browser, developed by Microsoft. + */ + EDGE_HTML("EdgeHTML"), /** * Trident is the the Microsoft layout engine, mainly used by Internet Explorer. */ diff --git a/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java b/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java index 57d366a7..1b7b0ef0 100644 --- a/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java +++ b/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java @@ -85,7 +85,11 @@ public class BrowserTest { String[] ie11clients = new String[] { "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko", "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; ASU2JS; rv:11.0) like Gecko", //64bit Win8 - }; + }; + + String[] edgeClients = new String[] { + "Mozilla/5.0 (Windows NT 6.4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0" + }; String[] ie55clients = new String[] { "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.1.4322)", @@ -590,6 +594,7 @@ public void testParseUserAgentString() { testAgents(ie9clients, Browser.IE9); testAgents(ie10clients, Browser.IE10); testAgents(ie11clients, Browser.IE11); + testAgents(edgeClients, Browser.EDGE_12); testAgents(ieTooOld, Browser.IE); testAgents(outlook2007, Browser.OUTLOOK2007); testAgents(outlook2010, Browser.OUTLOOK2010); From f0206363eff00cc52d1d6490ce956c17e6b456bc Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Thu, 16 Jul 2015 08:33:19 +0200 Subject: [PATCH 04/12] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index a8eba2dc..e739cc3f 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ https://github.com/HaraldWalker/user-agent-utils/tree/master Support me and buy me a beer: Flattr this +Advice +------ +A lot of user-agents lie about their identify. That makes US sniffing a guessing game. On website it is a better approach to detect features using a javascript library like Modernizr (http://modernizr.com/). + New in Version 1.17 (unreleased) ------------------- TBA From 29fd0d63057f57f919fe6ce517330d5d5c635d74 Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Thu, 16 Jul 2015 08:33:42 +0200 Subject: [PATCH 05/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e739cc3f..1eec2887 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Support me and buy me a beer: Advice ------ -A lot of user-agents lie about their identify. That makes US sniffing a guessing game. On website it is a better approach to detect features using a javascript library like Modernizr (http://modernizr.com/). +A lot of user-agents lie about their identify. That makes US sniffing a guessing game. On websites it is a better approach to detect features using a javascript library like Modernizr (http://modernizr.com/). New in Version 1.17 (unreleased) ------------------- From 50461ba994d393ed429be812260b4627dc36ef70 Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Thu, 16 Jul 2015 08:39:26 +0200 Subject: [PATCH 06/12] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1eec2887..bf3069e3 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,8 @@ Add dependency for snapshot releases: Contributors ------------ * Please use the `trunk` branch on GitHub when making a pull request +* This project is in maintenance mode. We will try to stay up to date and fix bugs but do not expect any big new features or changes. +* If you want big changes feel free to fork this project and start your own version. Changelog --------- From 682045757507d128fbb5e15f98a222ca61518398 Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Thu, 16 Jul 2015 08:53:39 +0200 Subject: [PATCH 07/12] Update README.md --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index bf3069e3..2c1174a2 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,22 @@ Contributors * Please use the `trunk` branch on GitHub when making a pull request * This project is in maintenance mode. We will try to stay up to date and fix bugs but do not expect any big new features or changes. * If you want big changes feel free to fork this project and start your own version. + +FAQ +--- + +_Can I add new browsers or operating systems?_ +Unfortunately not directly. This library uses enums to represent browsers and operating systems to make using it easy and readable. Unfortunately the use of enums also has some disadvantages. You can make a pull request on trunk for a new browser or operating system if all tests are still passing. The purpose of this library is not to detect every possible version, so you’ll have to provide the business value for a change. + +_Where can I report bugs or make feature requests_ +Go to https://github.com/HaraldWalker/user-agent-utils/issues + +_How can I improve the performance of the user-agent parsing?_ +When handling requests on a web-server, consider if you need both the browser and operating system or if one of the two gives you enough information. As the parsing uses an ordered tree structure, performance depends a lot on the type of clients making the requests. The most common browsers and operating systems will be parsed faster than exotic ones. Consider caching the results temporarily. + +_Are there other libraries like this?_ +When I started this project in 2010 there were no other libraries offering the features I was looking for. Currently there are both open source as well as commercial solutions. + Changelog --------- From 2aa5046c4259068ed5a0592d4455c7f5a9808a36 Mon Sep 17 00:00:00 2001 From: Nathan Maves Date: Thu, 16 Jul 2015 09:21:32 -0600 Subject: [PATCH 08/12] Better search stings. --- src/main/java/eu/bitwalker/useragentutils/Browser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/bitwalker/useragentutils/Browser.java b/src/main/java/eu/bitwalker/useragentutils/Browser.java index 37440059..6f8904c3 100644 --- a/src/main/java/eu/bitwalker/useragentutils/Browser.java +++ b/src/main/java/eu/bitwalker/useragentutils/Browser.java @@ -69,7 +69,7 @@ public enum Browser { * Family of Microsoft Edge browsers */ EDGE(Manufacturer.MICROSOFT, null, 300, "Microsoft Edge", new String[] {"Edge"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\\\/((12)\\\\.([0-9]*)))"), - EDGE_12(Manufacturer.MICROSOFT, Browser.EDGE, 301, "Microsoft Edge", new String[] {"Edge"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, null), + EDGE_12(Manufacturer.MICROSOFT, Browser.EDGE, 301, "Microsoft Edge", new String[] {"Edge/12"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\\\/((12)\\\\.([0-9]*)))" ), /** * Family of Internet Explorer browsers From 660f50e94d1a646c4e5bc22ddb315a7a44422143 Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Thu, 16 Jul 2015 18:53:42 +0200 Subject: [PATCH 09/12] Several updates (see readme) --- README.md | 5 +- javadoc/allclasses-frame.html | 6 +- javadoc/allclasses-noframe.html | 6 +- javadoc/constant-values.html | 8 +- javadoc/deprecated-list.html | 8 +- .../bitwalker/useragentutils/Application.html | 8 +- .../useragentutils/ApplicationType.html | 8 +- .../eu/bitwalker/useragentutils/Browser.html | 315 ++++++----- .../bitwalker/useragentutils/BrowserType.html | 8 +- .../bitwalker/useragentutils/DeviceType.html | 8 +- .../useragentutils/Manufacturer.html | 55 +- .../useragentutils/OperatingSystem.html | 66 ++- .../useragentutils/RenderingEngine.html | 37 +- .../bitwalker/useragentutils/UserAgent.html | 8 +- .../eu/bitwalker/useragentutils/Utils.html | 8 +- .../eu/bitwalker/useragentutils/Version.html | 8 +- .../useragentutils/class-use/Application.html | 8 +- .../class-use/ApplicationType.html | 8 +- .../useragentutils/class-use/Browser.html | 10 +- .../useragentutils/class-use/BrowserType.html | 8 +- .../useragentutils/class-use/DeviceType.html | 8 +- .../class-use/Manufacturer.html | 8 +- .../class-use/OperatingSystem.html | 8 +- .../class-use/RenderingEngine.html | 8 +- .../useragentutils/class-use/UserAgent.html | 8 +- .../useragentutils/class-use/Utils.html | 8 +- .../useragentutils/class-use/Version.html | 8 +- .../useragentutils/package-frame.html | 6 +- .../useragentutils/package-summary.html | 8 +- .../useragentutils/package-tree.html | 8 +- .../bitwalker/useragentutils/package-use.html | 8 +- javadoc/help-doc.html | 8 +- javadoc/index-all.html | 10 +- javadoc/index.html | 4 +- javadoc/overview-tree.html | 8 +- javadoc/serialized-form.html | 8 +- javadoc/stylesheet.css | 501 +++++++++++++++++- .../eu/bitwalker/useragentutils/Browser.java | 15 +- .../useragentutils/Manufacturer.java | 7 +- .../useragentutils/OperatingSystem.java | 21 +- .../bitwalker/useragentutils/BrowserTest.java | 7 +- .../useragentutils/OperatingSystemTest.java | 19 +- .../AbstractUserAgentParameterizedTest.java | 6 +- .../browser/ChromeParameterizedTest.java | 4 +- .../browser/FirefoxParameterizedTest.java | 2 +- 45 files changed, 955 insertions(+), 347 deletions(-) diff --git a/README.md b/README.md index 2c1174a2..9179b0ef 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,10 @@ A lot of user-agents lie about their identify. That makes US sniffing a guessing New in Version 1.17 (unreleased) ------------------- -TBA +-- Added Ubuntu and Ubuntu Touch (mobile) detection +-- Added Windows 10 mobile detection +-- Added Microsoft Edge browser detection (contributed by https://github.com/nmaves) +-- Added future Firefox version up to 42. Javadoc ------- diff --git a/javadoc/allclasses-frame.html b/javadoc/allclasses-frame.html index b8b13278..8905cbcc 100644 --- a/javadoc/allclasses-frame.html +++ b/javadoc/allclasses-frame.html @@ -2,10 +2,10 @@ - + -All Classes (User-Agent-Utils 1.16-SNAPSHOT API) - +All Classes (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/allclasses-noframe.html b/javadoc/allclasses-noframe.html index a35457a8..6d2864e1 100644 --- a/javadoc/allclasses-noframe.html +++ b/javadoc/allclasses-noframe.html @@ -2,10 +2,10 @@ - + -All Classes (User-Agent-Utils 1.16-SNAPSHOT API) - +All Classes (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html index b99110c2..143a59da 100644 --- a/javadoc/constant-values.html +++ b/javadoc/constant-values.html @@ -2,16 +2,16 @@ - + -Constant Field Values (User-Agent-Utils 1.16-SNAPSHOT API) - +Constant Field Values (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/deprecated-list.html b/javadoc/deprecated-list.html index bb61dd77..c68880ba 100644 --- a/javadoc/deprecated-list.html +++ b/javadoc/deprecated-list.html @@ -2,16 +2,16 @@ - + -Deprecated List (User-Agent-Utils 1.16-SNAPSHOT API) - +Deprecated List (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Application.html b/javadoc/eu/bitwalker/useragentutils/Application.html index 5d040d50..fce3ff57 100644 --- a/javadoc/eu/bitwalker/useragentutils/Application.html +++ b/javadoc/eu/bitwalker/useragentutils/Application.html @@ -2,16 +2,16 @@ - + -Application (User-Agent-Utils 1.16-SNAPSHOT API) - +Application (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/ApplicationType.html b/javadoc/eu/bitwalker/useragentutils/ApplicationType.html index 0b0860bb..98ffdd6d 100644 --- a/javadoc/eu/bitwalker/useragentutils/ApplicationType.html +++ b/javadoc/eu/bitwalker/useragentutils/ApplicationType.html @@ -2,16 +2,16 @@ - + -ApplicationType (User-Agent-Utils 1.16-SNAPSHOT API) - +ApplicationType (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Browser.html b/javadoc/eu/bitwalker/useragentutils/Browser.html index 890e7098..b92c1459 100644 --- a/javadoc/eu/bitwalker/useragentutils/Browser.html +++ b/javadoc/eu/bitwalker/useragentutils/Browser.html @@ -2,16 +2,16 @@ - + -Browser (User-Agent-Utils 1.16-SNAPSHOT API) - +Browser (User-Agent-Utils 1.17-SNAPSHOT API) + @@ -302,363 +302,380 @@

Enum Constant Summary

DOWNLOAD  -EUDORA  +EDGE +
Family of Microsoft Edge browsers.
+ -EVOLUTION  +EDGE_MOBILE12  -FIREFOX  +EDGE12  -FIREFOX_MOBILE  +EUDORA  -FIREFOX_MOBILE23  +EVOLUTION  -FIREFOX1_5  +FIREFOX  -FIREFOX10  +FIREFOX_MOBILE  -FIREFOX11  +FIREFOX_MOBILE23  -FIREFOX12  +FIREFOX1_5  -FIREFOX13  +FIREFOX10  -FIREFOX14  +FIREFOX11  -FIREFOX15  +FIREFOX12  -FIREFOX16  +FIREFOX13  -FIREFOX17  +FIREFOX14  -FIREFOX18  +FIREFOX15  -FIREFOX19  +FIREFOX16  -FIREFOX2  +FIREFOX17  -FIREFOX20  +FIREFOX18  -FIREFOX21  +FIREFOX19  -FIREFOX22  +FIREFOX2  -FIREFOX23  +FIREFOX20  -FIREFOX24  +FIREFOX21  -FIREFOX25  +FIREFOX22  -FIREFOX26  +FIREFOX23  -FIREFOX27  +FIREFOX24  -FIREFOX28  +FIREFOX25  -FIREFOX29  +FIREFOX26  -FIREFOX3  +FIREFOX27  -FIREFOX30  +FIREFOX28  -FIREFOX31  +FIREFOX29  -FIREFOX32  +FIREFOX3  -FIREFOX33  +FIREFOX30  -FIREFOX34  +FIREFOX31  -FIREFOX35  +FIREFOX32  -FIREFOX36  +FIREFOX33  -FIREFOX37  +FIREFOX34  -FIREFOX38  +FIREFOX35  -FIREFOX39  +FIREFOX36  -FIREFOX3MOBILE  +FIREFOX37  -FIREFOX4  +FIREFOX38  + + +FIREFOX39  + + +FIREFOX3MOBILE  +FIREFOX4  + + FIREFOX40  + +FIREFOX41  + -FIREFOX5  +FIREFOX42  -FIREFOX6  +FIREFOX5  -FIREFOX7  +FIREFOX6  -FIREFOX8  +FIREFOX7  -FIREFOX9  +FIREFOX8  -FLOCK  +FIREFOX9  +FLOCK  + + IE
Family of Internet Explorer browsers
- + IE_XBOX  - + IE10  - + IE11  - + IE5  - + IE5_5  - + IE6  - + IE7  - + IE8  - + IE9  - + IEMOBILE10  - + IEMOBILE11
Since 2007 the mobile edition of Internet Explorer identifies itself as IEMobile in the user-agent.
- + IEMOBILE6  - + IEMOBILE7  - + IEMOBILE9  - + KONQUEROR  - + LOTUS_NOTES  - + LYNX  - + MOBILE_SAFARI  - + MOZILLA  - + NETFRONT  - + OMNIWEB  - + OPERA  - + OPERA_MINI  - + OPERA_MOBILE  - + OPERA10  - + OPERA11  - + OPERA12  - + OPERA15  - + OPERA16  - + OPERA17  - + OPERA18  - + OPERA19  - + OPERA20  - + OPERA23  - + OPERA24  - + OPERA25  - + OPERA26  - + OPERA27  - + OPERA28  - + OPERA29  - + OPERA30  - + OPERA9  - + OUTLOOK
Outlook email client
- + OUTLOOK_EXPRESS7
Since version 7 Outlook Express is identifying itself.
- + OUTLOOK2007
Microsoft Outlook 2007 identifies itself as MSIE7 but uses the html rendering engine of Word 2007.
- + OUTLOOK2010
Outlook 2010 is still using the rendering engine of Word.
- + OUTLOOK2013  - + POCOMAIL  - + SAFARI  - + SAFARI4  - + SAFARI5  - + SAFARI6  - + SAFARI7  - + SAFARI8  - + SEAMONKEY  - + SILK  - + THEBAT  - + THUNDERBIRD  - + THUNDERBIRD10  - + THUNDERBIRD11  - + THUNDERBIRD12  - + THUNDERBIRD2  - + THUNDERBIRD3  - + THUNDERBIRD6  - + THUNDERBIRD7  - + THUNDERBIRD8  - + UNKNOWN  - + VIVALDI  @@ -717,7 +734,7 @@

Method Summary

static Browser parseUserAgentString(String agentString) -
Iterates over all Browsers to compare the browser signature with +
Iterates over all Browsers to compare the browser signature with the user agent string.
@@ -833,7 +850,7 @@

IE

  • OUTLOOK_EXPRESS7

    public static final Browser OUTLOOK_EXPRESS7
    -
    Since version 7 Outlook Express is identifying itself. By detecting Outlook Express we can not +
    Since version 7 Outlook Express is identifying itself. By detecting Outlook Express we can not identify the Internet Explorer version which is probably used for the rendering. Obviously this product is now called Windows Live Mail Desktop or just Windows Live Mail.
  • @@ -845,7 +862,7 @@

    OUTLOOK_EXPRESS7

  • IEMOBILE11

    public static final Browser IEMOBILE11
    -
    Since 2007 the mobile edition of Internet Explorer identifies itself as IEMobile in the user-agent. +
    Since 2007 the mobile edition of Internet Explorer identifies itself as IEMobile in the user-agent. If previous versions have to be detected, use the operating system information as well.
  • @@ -966,6 +983,34 @@

    IE5

    public static final Browser IE5
    + + + +
      +
    • +

      EDGE

      +
      public static final Browser EDGE
      +
      Family of Microsoft Edge browsers. Pretends to be Chrome and claims to be webkit compatible.
      +
    • +
    + + + +
      +
    • +

      EDGE12

      +
      public static final Browser EDGE12
      +
    • +
    + + + +
      +
    • +

      EDGE_MOBILE12

      +
      public static final Browser EDGE_MOBILE12
      +
    • +
    @@ -1760,6 +1805,24 @@

    FIREFOX_MOBILE23

    public static final Browser FIREFOX_MOBILE23
    + + + +
      +
    • +

      FIREFOX42

      +
      public static final Browser FIREFOX42
      +
    • +
    + + + +
      +
    • +

      FIREFOX41

      +
      public static final Browser FIREFOX41
      +
    • +
    @@ -2406,7 +2469,7 @@

    getName

  • getVersion

    public Version getVersion(String userAgentString)
    -
    Detects the detailed version information of the browser. Depends on the userAgent to be available. +
    Detects the detailed version information of the browser. Depends on the userAgent to be available. Returns null if it can not detect the version information.
    Returns:
    Version
  • @@ -2467,10 +2530,10 @@

    isInUserAgentString

  • parseUserAgentString

    public static Browser parseUserAgentString(String agentString)
    -
    Iterates over all Browsers to compare the browser signature with +
    Iterates over all Browsers to compare the browser signature with the user agent string. If no match can be found Browser.UNKNOWN will be returned. - Starts with the top level browsers and only if one of those matches + Starts with the top level browsers and only if one of those matches checks children browsers. Steps out of loop as soon as there is a match.
    Parameters:
    agentString -
    @@ -2494,8 +2557,8 @@

    parseUserAgentLowercaseString

    parseUserAgentString

    public static Browser parseUserAgentString(String agentString,
                                List<Browser> browsers)
    -
    Iterates over the given Browsers (incl. children) to compare the browser - signature with the user agent string. +
    Iterates over the given Browsers (incl. children) to compare the browser + signature with the user agent string. If no match can be found Browser.UNKNOWN will be returned. Steps out of loop as soon as there is a match. Be aware that if the order of the provided Browsers is incorrect or if the set is too limited it can lead to false matches!
    diff --git a/javadoc/eu/bitwalker/useragentutils/BrowserType.html b/javadoc/eu/bitwalker/useragentutils/BrowserType.html index d1d4258e..14489dc8 100644 --- a/javadoc/eu/bitwalker/useragentutils/BrowserType.html +++ b/javadoc/eu/bitwalker/useragentutils/BrowserType.html @@ -2,16 +2,16 @@ - + -BrowserType (User-Agent-Utils 1.16-SNAPSHOT API) - +BrowserType (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/DeviceType.html b/javadoc/eu/bitwalker/useragentutils/DeviceType.html index d958a70c..b0e4231b 100644 --- a/javadoc/eu/bitwalker/useragentutils/DeviceType.html +++ b/javadoc/eu/bitwalker/useragentutils/DeviceType.html @@ -2,16 +2,16 @@ - + -DeviceType (User-Agent-Utils 1.16-SNAPSHOT API) - +DeviceType (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Manufacturer.html b/javadoc/eu/bitwalker/useragentutils/Manufacturer.html index 6571cfd7..58a4481e 100644 --- a/javadoc/eu/bitwalker/useragentutils/Manufacturer.html +++ b/javadoc/eu/bitwalker/useragentutils/Manufacturer.html @@ -2,16 +2,16 @@ - + -Manufacturer (User-Agent-Utils 1.16-SNAPSHOT API) - +Manufacturer (User-Agent-Utils 1.17-SNAPSHOT API) + @@ -159,81 +159,86 @@

    Enum Constant Summary

    +CONONICAL +
    Canonical Ltd.
    + + + GOOGLE
    Google Inc.
    - + HP
    Hewlett-Packard Company, previously Palm
    - + MICROSOFT
    Microsoft Corporation
    - + MMC
    Mail.com Media Corporation
    - + MOZILLA
    Mozilla Foundation
    - + NINTENDO
    Nintendo
    - + NOKIA
    Nokia Corporation
    - + OPERA
    Opera Software ASA
    - + OTHER
    Unknow or rare manufacturer
    - + ROKU
    Roku sells home digital media products
    - + SAMSUNG
    Samsung Electronics
    - + SONY
    Sony Computer Entertainment, Inc.
    - + SONY_ERICSSON
    Sony Ericsson Mobile Communications AB
    - + SUN
    Sun Microsystems, Inc.
    - + SYMBIAN
    Symbian Ltd.
    - + YAHOO
    Yahoo Inc.
    @@ -516,13 +521,23 @@

    ROKU

    -
      +
      • ADOBE

        public static final Manufacturer ADOBE
        Adobe Systems Inc.
      + + + +
        +
      • +

        CONONICAL

        +
        public static final Manufacturer CONONICAL
        +
        Canonical Ltd.
        +
      • +
    diff --git a/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html b/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html index d479b382..df36656b 100644 --- a/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html +++ b/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html @@ -2,16 +2,16 @@ - + -OperatingSystem (User-Agent-Utils 1.16-SNAPSHOT API) - +OperatingSystem (User-Agent-Utils 1.17-SNAPSHOT API) + @@ -347,6 +347,12 @@

    Enum Constant Summary

    +UBUNTU  + + +UBUNTU_TOUCH_MOBILE  + + UNKNOWN  @@ -374,39 +380,42 @@

    Enum Constant Summary

    WINDOWS_10  -WINDOWS_2000  +WINDOWS_10_MOBILE  -WINDOWS_7  +WINDOWS_2000  -WINDOWS_8  +WINDOWS_7  -WINDOWS_81  +WINDOWS_8  -WINDOWS_98  +WINDOWS_81  -WINDOWS_MOBILE  +WINDOWS_98  -WINDOWS_MOBILE7  +WINDOWS_MOBILE  -WINDOWS_PHONE8  +WINDOWS_MOBILE7  -WINDOWS_PHONE8_1  +WINDOWS_PHONE8  -WINDOWS_VISTA  +WINDOWS_PHONE8_1  -WINDOWS_XP  +WINDOWS_VISTA  +WINDOWS_XP  + + XBOX_OS  @@ -596,6 +605,15 @@

    WINDOWS_XP

    public static final OperatingSystem WINDOWS_XP
  • + + + +
      +
    • +

      WINDOWS_10_MOBILE

      +
      public static final OperatingSystem WINDOWS_10_MOBILE
      +
    • +
    @@ -1083,6 +1101,24 @@

    LINUX

    public static final OperatingSystem LINUX
    + + + + + + + +
      +
    • +

      UBUNTU_TOUCH_MOBILE

      +
      public static final OperatingSystem UBUNTU_TOUCH_MOBILE
      +
    • +
    diff --git a/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html b/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html index 6144b9f9..66a2291d 100644 --- a/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html +++ b/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html @@ -2,16 +2,16 @@ - + -RenderingEngine (User-Agent-Utils 1.16-SNAPSHOT API) - +RenderingEngine (User-Agent-Utils 1.17-SNAPSHOT API) + @@ -133,41 +133,46 @@

    Enum Constant Summary

    +EDGE_HTML +
    EdgeHTML is a proprietary layout engine developed for the Microsoft Edge web browser, developed by Microsoft.
    + + + GECKO
    Open source and cross platform layout engine, used by Firefox and many other browsers.
    - + KHTML
    Layout engine of the KDE project
    - + MOZILLA
    Original layout engine of the Mozilla browser and related products.
    - + OTHER
    Layout engine developed as part ofthe Chromium project.
    - + PRESTO
    Proprietary layout engine by Opera Software ASA
    - + TRIDENT
    Trident is the the Microsoft layout engine, mainly used by Internet Explorer.
    - + WEBKIT
    Layout engine based on KHTML, used by Safari, Chrome and some other browsers.
    - + WORD
    HTML parsing and rendering engine of Microsoft Office Word, used by some other products of the Office suite instead of Trident.
    @@ -229,6 +234,16 @@

    Methods inherited from class java.lang. + + +
      +
    • +

      EDGE_HTML

      +
      public static final RenderingEngine EDGE_HTML
      +
      EdgeHTML is a proprietary layout engine developed for the Microsoft Edge web browser, developed by Microsoft.
      +
    • +
    diff --git a/javadoc/eu/bitwalker/useragentutils/UserAgent.html b/javadoc/eu/bitwalker/useragentutils/UserAgent.html index a200fdba..50b613d5 100644 --- a/javadoc/eu/bitwalker/useragentutils/UserAgent.html +++ b/javadoc/eu/bitwalker/useragentutils/UserAgent.html @@ -2,16 +2,16 @@ - + -UserAgent (User-Agent-Utils 1.16-SNAPSHOT API) - +UserAgent (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Utils.html b/javadoc/eu/bitwalker/useragentutils/Utils.html index 5111a254..c6ca3c86 100644 --- a/javadoc/eu/bitwalker/useragentutils/Utils.html +++ b/javadoc/eu/bitwalker/useragentutils/Utils.html @@ -2,16 +2,16 @@ - + -Utils (User-Agent-Utils 1.16-SNAPSHOT API) - +Utils (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Version.html b/javadoc/eu/bitwalker/useragentutils/Version.html index f4f7bba7..f88147ad 100644 --- a/javadoc/eu/bitwalker/useragentutils/Version.html +++ b/javadoc/eu/bitwalker/useragentutils/Version.html @@ -2,16 +2,16 @@ - + -Version (User-Agent-Utils 1.16-SNAPSHOT API) - +Version (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Application.html b/javadoc/eu/bitwalker/useragentutils/class-use/Application.html index a5505cb4..d66d6600 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Application.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Application.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Application (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Application (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html b/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html index 67b7bb8b..a999fafb 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.ApplicationType (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.ApplicationType (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Browser.html b/javadoc/eu/bitwalker/useragentutils/class-use/Browser.html index e3889cf7..77789ad3 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Browser.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Browser.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Browser (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Browser (User-Agent-Utils 1.17-SNAPSHOT API) + @@ -95,7 +95,7 @@

    Uses of static Browser Browser.parseUserAgentString(String agentString) -
    Iterates over all Browsers to compare the browser signature with +
    Iterates over all Browsers to compare the browser signature with the user agent string.
    diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/BrowserType.html b/javadoc/eu/bitwalker/useragentutils/class-use/BrowserType.html index a5a1adff..0b81f1f3 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/BrowserType.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/BrowserType.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.BrowserType (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.BrowserType (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/DeviceType.html b/javadoc/eu/bitwalker/useragentutils/class-use/DeviceType.html index a5e09491..431d13e4 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/DeviceType.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/DeviceType.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.DeviceType (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.DeviceType (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Manufacturer.html b/javadoc/eu/bitwalker/useragentutils/class-use/Manufacturer.html index 397c6aff..8bf4a70c 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Manufacturer.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Manufacturer.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Manufacturer (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Manufacturer (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/OperatingSystem.html b/javadoc/eu/bitwalker/useragentutils/class-use/OperatingSystem.html index 0db569cb..976ffc71 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/OperatingSystem.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/OperatingSystem.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.OperatingSystem (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.OperatingSystem (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/RenderingEngine.html b/javadoc/eu/bitwalker/useragentutils/class-use/RenderingEngine.html index aa6432cc..1e974e3f 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/RenderingEngine.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/RenderingEngine.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.RenderingEngine (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.RenderingEngine (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/UserAgent.html b/javadoc/eu/bitwalker/useragentutils/class-use/UserAgent.html index 3101f35e..f69eeb41 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/UserAgent.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/UserAgent.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.UserAgent (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.UserAgent (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Utils.html b/javadoc/eu/bitwalker/useragentutils/class-use/Utils.html index 561f2a0c..5726d81c 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Utils.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Utils.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Utils (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Utils (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Version.html b/javadoc/eu/bitwalker/useragentutils/class-use/Version.html index b8709718..892d148d 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Version.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Version.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Version (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Version (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/package-frame.html b/javadoc/eu/bitwalker/useragentutils/package-frame.html index b5d471f1..42d2cb56 100644 --- a/javadoc/eu/bitwalker/useragentutils/package-frame.html +++ b/javadoc/eu/bitwalker/useragentutils/package-frame.html @@ -2,10 +2,10 @@ - + -eu.bitwalker.useragentutils (User-Agent-Utils 1.16-SNAPSHOT API) - +eu.bitwalker.useragentutils (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/package-summary.html b/javadoc/eu/bitwalker/useragentutils/package-summary.html index 5abd56f0..f8e835da 100644 --- a/javadoc/eu/bitwalker/useragentutils/package-summary.html +++ b/javadoc/eu/bitwalker/useragentutils/package-summary.html @@ -2,16 +2,16 @@ - + -eu.bitwalker.useragentutils (User-Agent-Utils 1.16-SNAPSHOT API) - +eu.bitwalker.useragentutils (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/package-tree.html b/javadoc/eu/bitwalker/useragentutils/package-tree.html index 3ee7cf4b..2ef0902b 100644 --- a/javadoc/eu/bitwalker/useragentutils/package-tree.html +++ b/javadoc/eu/bitwalker/useragentutils/package-tree.html @@ -2,16 +2,16 @@ - + -eu.bitwalker.useragentutils Class Hierarchy (User-Agent-Utils 1.16-SNAPSHOT API) - +eu.bitwalker.useragentutils Class Hierarchy (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/eu/bitwalker/useragentutils/package-use.html b/javadoc/eu/bitwalker/useragentutils/package-use.html index 71115f54..8eb0a821 100644 --- a/javadoc/eu/bitwalker/useragentutils/package-use.html +++ b/javadoc/eu/bitwalker/useragentutils/package-use.html @@ -2,16 +2,16 @@ - + -Uses of Package eu.bitwalker.useragentutils (User-Agent-Utils 1.16-SNAPSHOT API) - +Uses of Package eu.bitwalker.useragentutils (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html index 8fe5769e..47cc2ebc 100644 --- a/javadoc/help-doc.html +++ b/javadoc/help-doc.html @@ -2,16 +2,16 @@ - + -API Help (User-Agent-Utils 1.16-SNAPSHOT API) - +API Help (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/index-all.html b/javadoc/index-all.html index d5a85a7c..643a83b5 100644 --- a/javadoc/index-all.html +++ b/javadoc/index-all.html @@ -2,16 +2,16 @@ - + -Index (User-Agent-Utils 1.16-SNAPSHOT API) - +Index (User-Agent-Utils 1.17-SNAPSHOT API) + @@ -252,7 +252,7 @@

    P

     
    parseUserAgentString(String) - Static method in enum eu.bitwalker.useragentutils.Browser
    -
    Iterates over all Browsers to compare the browser signature with +
    Iterates over all Browsers to compare the browser signature with the user agent string.
    parseUserAgentString(String, List<Browser>) - Static method in enum eu.bitwalker.useragentutils.Browser
    diff --git a/javadoc/index.html b/javadoc/index.html index bcff16f5..18b41fa9 100644 --- a/javadoc/index.html +++ b/javadoc/index.html @@ -2,9 +2,9 @@ - + -User-Agent-Utils 1.16-SNAPSHOT API +User-Agent-Utils 1.17-SNAPSHOT API diff --git a/javadoc/serialized-form.html b/javadoc/serialized-form.html index 592781d3..90880098 100644 --- a/javadoc/serialized-form.html +++ b/javadoc/serialized-form.html @@ -2,16 +2,16 @@ - + -Serialized Form (User-Agent-Utils 1.16-SNAPSHOT API) - +Serialized Form (User-Agent-Utils 1.17-SNAPSHOT API) + diff --git a/javadoc/stylesheet.css b/javadoc/stylesheet.css index 6ea9e516..0aeaa97f 100644 --- a/javadoc/stylesheet.css +++ b/javadoc/stylesheet.css @@ -1,29 +1,474 @@ /* Javadoc style sheet */ - -/* Define colors, fonts and other style attributes here to override the defaults */ - -/* Page background color */ -body { background-color: #FFFFFF; color:#000000 } - -/* Headings */ -h1 { font-size: 145% } - -/* Table colors */ -.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */ -.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */ -.TableRowColor { background: #FFFFFF; color:#000000 } /* White */ - -/* Font used in left-hand frame lists */ -.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 } -.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } -.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 } - -/* Navigation bar fonts and colors */ -.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */ -.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */ -.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;} -.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;} - -.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} -.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000} - +/* +Overall document style +*/ +body { + background-color:#ffffff; + color:#353833; + font-family:Arial, Helvetica, sans-serif; + font-size:76%; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4c6b87; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4c6b87; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-size:1.3em; +} +h1 { + font-size:1.8em; +} +h2 { + font-size:1.5em; +} +h3 { + font-size:1.4em; +} +h4 { + font-size:1.3em; +} +h5 { + font-size:1.2em; +} +h6 { + font-size:1.1em; +} +ul { + list-style-type:disc; +} +code, tt { + font-size:1.2em; +} +dt code { + font-size:1.2em; +} +table tr td dt code { + font-size:1.2em; + vertical-align:top; +} +sup { + font-size:.6em; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:.8em; + z-index:200; + margin-top:-7px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + background-image:url(resources/titlebar.gif); + background-position:left top; + background-repeat:no-repeat; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-image:url(resources/background.gif); + background-repeat:repeat-x; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:1em; + margin:0; +} +.topNav { + background-image:url(resources/background.gif); + background-repeat:repeat-x; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; +} +.bottomNav { + margin-top:10px; + background-image:url(resources/background.gif); + background-repeat:repeat-x; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; +} +.subNav { + background-color:#dee3e9; + border-bottom:1px solid #9eadc0; + float:left; + width:100%; + overflow:hidden; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding:3px 6px; +} +ul.subNavList li{ + list-style:none; + float:left; + font-size:90%; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; +} +.navBarCell1Rev { + background-image:url(resources/tab.gif); + background-color:#a88834; + color:#FFFFFF; + margin: auto 5px; + border:1px solid #c9aa44; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader h1 { + font-size:1.3em; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 25px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:1.2em; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border-top:1px solid #9eadc0; + border-bottom:1px solid #9eadc0; + margin:0 0 6px -8px; + padding:2px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border-top:1px solid #9eadc0; + border-bottom:1px solid #9eadc0; + margin:0 0 6px -8px; + padding:2px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:1.0em; +} +.indexContainer h2 { + font-size:1.1em; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:1.1em; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:10px 0 10px 20px; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:25px; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #9eadc0; + background-color:#f9f9f9; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:1px solid #9eadc0; + border-top:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; + border-bottom:1px solid #9eadc0; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.contentContainer table, .classUseContainer table, .constantValuesContainer table { + border-bottom:1px solid #9eadc0; + width:100%; +} +.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table { + width:100%; +} +.contentContainer .description table, .contentContainer .details table { + border-bottom:none; +} +.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{ + vertical-align:top; + padding-right:20px; +} +.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast, +.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast, +.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne, +.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne { + padding-right:3px; +} +.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + margin:0px; +} +caption a:link, caption a:hover, caption a:active, caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span { + white-space:nowrap; + padding-top:8px; + padding-left:8px; + display:block; + float:left; + background-image:url(resources/titlebar.gif); + height:18px; +} +.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd { + width:10px; + background-image:url(resources/titlebar_end.gif); + background-repeat:no-repeat; + background-position:top right; + position:relative; + float:left; +} +ul.blockList ul.blockList li.blockList table { + margin:0 0 12px 0px; + width:100%; +} +.tableSubHeadingColor { + background-color: #EEEEFF; +} +.altColor { + background-color:#eeeeef; +} +.rowColor { + background-color:#ffffff; +} +.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td { + text-align:left; + padding:3px 3px 3px 7px; +} +th.colFirst, th.colLast, th.colOne, .constantValuesContainer th { + background:#dee3e9; + border-top:1px solid #9eadc0; + border-bottom:1px solid #9eadc0; + text-align:left; + padding:3px 3px 3px 7px; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +td.colFirst, th.colFirst { + border-left:1px solid #9eadc0; + white-space:nowrap; +} +td.colLast, th.colLast { + border-right:1px solid #9eadc0; +} +td.colOne, th.colOne { + border-right:1px solid #9eadc0; + border-left:1px solid #9eadc0; +} +table.overviewSummary { + padding:0px; + margin-left:0px; +} +table.overviewSummary td.colFirst, table.overviewSummary th.colFirst, +table.overviewSummary td.colOne, table.overviewSummary th.colOne { + width:25%; + vertical-align:middle; +} +table.packageSummary td.colFirst, table.overviewSummary th.colFirst { + width:25%; + vertical-align:middle; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:.9em; +} +.block { + display:block; + margin:3px 0 0 0; +} +.strong { + font-weight:bold; +} diff --git a/src/main/java/eu/bitwalker/useragentutils/Browser.java b/src/main/java/eu/bitwalker/useragentutils/Browser.java index 6f8904c3..c3e941fb 100644 --- a/src/main/java/eu/bitwalker/useragentutils/Browser.java +++ b/src/main/java/eu/bitwalker/useragentutils/Browser.java @@ -65,12 +65,6 @@ public enum Browser { */ OUTLOOK2010( Manufacturer.MICROSOFT, Browser.OUTLOOK, 108, "Outlook 2010", new String[] {"MSOffice 14", "Microsoft Outlook 14"}, null, BrowserType.EMAIL_CLIENT, RenderingEngine.WORD, null), // before IE7 - /** - * Family of Microsoft Edge browsers - */ - EDGE(Manufacturer.MICROSOFT, null, 300, "Microsoft Edge", new String[] {"Edge"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\\\/((12)\\\\.([0-9]*)))"), - EDGE_12(Manufacturer.MICROSOFT, Browser.EDGE, 301, "Microsoft Edge", new String[] {"Edge/12"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\\\/((12)\\\\.([0-9]*)))" ), - /** * Family of Internet Explorer browsers */ @@ -100,6 +94,13 @@ public enum Browser { IE5_5( Manufacturer.MICROSOFT, Browser.IE, 55, "Internet Explorer 5.5", new String[] { "MSIE 5.5" }, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null), // before MSIE IE5( Manufacturer.MICROSOFT, Browser.IE, 50, "Internet Explorer 5", new String[] { "MSIE 5" }, null, BrowserType.WEB_BROWSER, RenderingEngine.TRIDENT, null ), // before MSIE + /** + * Family of Microsoft Edge browsers. Pretends to be Chrome and claims to be webkit compatible. + */ + EDGE(Manufacturer.MICROSOFT, null, 300, "Microsoft Edge", new String[] {"Edge"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\\\/((12)\\\\.([0-9]*)))"), + EDGE12(Manufacturer.MICROSOFT, Browser.EDGE, 301, "Microsoft Edge", new String[] {"Edge/12"}, new String[] {"Mobile"}, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\\\/((12)\\\\.([0-9]*)))" ), + EDGE_MOBILE12(Manufacturer.MICROSOFT, Browser.EDGE, 302, "Microsoft Edge Mobile", new String[] {"Mobile Safari", "Edge/12"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\\\/((12)\\\\.([0-9]*)))" ), + /** * Google Chrome browser */ @@ -207,6 +208,8 @@ public enum Browser { FIREFOX3MOBILE( Manufacturer.MOZILLA, Browser.FIREFOX, 31, "Firefox 3 Mobile", new String[] { "Firefox/3.5 Maemo" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX_MOBILE( Manufacturer.MOZILLA, Browser.FIREFOX, 200, "Firefox Mobile", new String[] { "Mobile" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX_MOBILE23(Manufacturer.MOZILLA, FIREFOX_MOBILE, 223, "Firefox Mobile 23", new String[] { "Firefox/23" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX42( Manufacturer.MOZILLA, Browser.FIREFOX, 219, "Firefox 42", new String[] { "Firefox/42" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine + FIREFOX41( Manufacturer.MOZILLA, Browser.FIREFOX, 218, "Firefox 41", new String[] { "Firefox/41" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX40( Manufacturer.MOZILLA, Browser.FIREFOX, 217, "Firefox 40", new String[] { "Firefox/40" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX39( Manufacturer.MOZILLA, Browser.FIREFOX, 216, "Firefox 39", new String[] { "Firefox/39" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine FIREFOX38( Manufacturer.MOZILLA, Browser.FIREFOX, 215, "Firefox 38", new String[] { "Firefox/38" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine diff --git a/src/main/java/eu/bitwalker/useragentutils/Manufacturer.java b/src/main/java/eu/bitwalker/useragentutils/Manufacturer.java index c6a150cb..c82ff626 100644 --- a/src/main/java/eu/bitwalker/useragentutils/Manufacturer.java +++ b/src/main/java/eu/bitwalker/useragentutils/Manufacturer.java @@ -132,7 +132,12 @@ public enum Manufacturer { /** * Adobe Systems Inc. */ - ADOBE(23, "Adobe Systems Inc."); + ADOBE(23, "Adobe Systems Inc."), + /** + * Canonical Ltd. + */ + CONONICAL(25,"Canonical Ltd."); + private final short id; diff --git a/src/main/java/eu/bitwalker/useragentutils/OperatingSystem.java b/src/main/java/eu/bitwalker/useragentutils/OperatingSystem.java index 5fecacdb..0cc57ced 100644 --- a/src/main/java/eu/bitwalker/useragentutils/OperatingSystem.java +++ b/src/main/java/eu/bitwalker/useragentutils/OperatingSystem.java @@ -59,19 +59,20 @@ public enum OperatingSystem { WINDOWS_VISTA( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,20, "Windows Vista", new String[] { "Windows NT 6" }, new String[]{"Xbox","Xbox One"}, DeviceType.COMPUTER, null ), // before Win WINDOWS_2000( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,15, "Windows 2000", new String[] { "Windows NT 5.0" }, null, DeviceType.COMPUTER, null ), // before Win WINDOWS_XP( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,10, "Windows XP", new String[] { "Windows NT 5"}, new String[] { "ggpht.com" }, DeviceType.COMPUTER, null ), // before Win, 5.1 and 5.2 are basically XP systems + WINDOWS_10_MOBILE(Manufacturer.MICROSOFT,OperatingSystem.WINDOWS, 54, "Windows 10 Mobile", new String[] { "Windows Phone 10" }, null, DeviceType.MOBILE, null ), WINDOWS_PHONE8_1(Manufacturer.MICROSOFT,OperatingSystem.WINDOWS, 53, "Windows Phone 8.1", new String[] { "Windows Phone 8.1" }, null, DeviceType.MOBILE, null ), // before Win WINDOWS_PHONE8(Manufacturer.MICROSOFT,OperatingSystem.WINDOWS, 52, "Windows Phone 8", new String[] { "Windows Phone 8" }, null, DeviceType.MOBILE, null ), // before Win WINDOWS_MOBILE7(Manufacturer.MICROSOFT,OperatingSystem.WINDOWS, 51, "Windows Phone 7", new String[] { "Windows Phone OS 7" }, null, DeviceType.MOBILE, null ), // should be Windows Phone 7 but to keep it compatible we'll leave the name as is. WINDOWS_MOBILE( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS, 50, "Windows Mobile", new String[] { "Windows CE" }, null, DeviceType.MOBILE, null ), // before Win WINDOWS_98( Manufacturer.MICROSOFT,OperatingSystem.WINDOWS,5, "Windows 98", new String[] { "Windows 98","Win98" }, new String[] { "Palm" }, DeviceType.COMPUTER, null ), // before Win XBOX_OS(Manufacturer.MICROSOFT, OperatingSystem.WINDOWS,62, "Xbox OS",new String[]{"xbox"},new String[]{}, DeviceType.GAME_CONSOLE, null), - - ANDROID( Manufacturer.GOOGLE,null, 0, "Android", new String[] { "Android" }, null, DeviceType.MOBILE, null ), + + ANDROID( Manufacturer.GOOGLE,null, 0, "Android", new String[] { "Android" }, new String[] {"Ubuntu"}, DeviceType.MOBILE, null ), ANDROID5( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 5, "Android 5.x", new String[] { "Android 5", "Android-5" }, new String[] { "glass" }, DeviceType.MOBILE, null ), - ANDROID5_TABLET(Manufacturer.GOOGLE,OperatingSystem.ANDROID5, 50, "Android 5.x Tablet", new String[] { "Android 5", "Android-5"}, new String[] { "mobile", "glass" }, DeviceType.TABLET, null ), - ANDROID4( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 4, "Android 4.x", new String[] { "Android 4", "Android-4" }, new String[] { "glass" }, DeviceType.MOBILE, null ), - ANDROID4_TABLET(Manufacturer.GOOGLE,OperatingSystem.ANDROID4, 40, "Android 4.x Tablet", new String[] { "Android 4", "Android-4"}, new String[] { "mobile", "glass" }, DeviceType.TABLET, null ), - ANDROID4_WEARABLE(Manufacturer.GOOGLE,OperatingSystem.ANDROID, 400, "Android 4.x", new String[] { "Android 4" }, null, DeviceType.WEARABLE, null ), + ANDROID5_TABLET(Manufacturer.GOOGLE,OperatingSystem.ANDROID5, 50, "Android 5.x Tablet", new String[] { "Android 5", "Android-5"}, new String[] { "mobile", "glass"}, DeviceType.TABLET, null ), + ANDROID4( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 4, "Android 4.x", new String[] { "Android 4", "Android-4" }, new String[] { "glass", "ubuntu"}, DeviceType.MOBILE, null ), + ANDROID4_TABLET(Manufacturer.GOOGLE,OperatingSystem.ANDROID4, 40, "Android 4.x Tablet", new String[] { "Android 4", "Android-4"}, new String[] { "mobile", "glass", "ubuntu" }, DeviceType.TABLET, null ), + ANDROID4_WEARABLE(Manufacturer.GOOGLE,OperatingSystem.ANDROID, 400, "Android 4.x", new String[] { "Android 4" }, new String[] {"ubuntu"}, DeviceType.WEARABLE, null ), ANDROID3_TABLET(Manufacturer.GOOGLE,OperatingSystem.ANDROID, 30, "Android 3.x Tablet", new String[] { "Android 3" }, null, DeviceType.TABLET, null ), // as long as there are not Android 3.x phones this should be enough ANDROID2( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 2, "Android 2.x", new String[] { "Android 2" }, null, DeviceType.MOBILE, null ), ANDROID2_TABLET(Manufacturer.GOOGLE,OperatingSystem.ANDROID2, 20, "Android 2.x Tablet", new String[] { "Kindle Fire", "GT-P1000","SCH-I800" }, null, DeviceType.TABLET, null ), @@ -79,7 +80,7 @@ public enum OperatingSystem { /** * Generic Android mobile device without OS version number information */ - ANDROID_MOBILE( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 11, "Android Mobile", new String[] { "Mobile" }, null, DeviceType.MOBILE, null ), + ANDROID_MOBILE( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 11, "Android Mobile", new String[] { "Mobile" }, new String[] {"ubuntu"}, DeviceType.MOBILE, null ), /** * Generic Android tablet device without OS version number information */ @@ -150,8 +151,10 @@ public enum OperatingSystem { KINDLE( Manufacturer.AMAZON,null, 1, "Linux (Kindle)", new String[] { "Kindle" }, null, DeviceType.TABLET, null ), KINDLE3( Manufacturer.AMAZON,OperatingSystem.KINDLE, 30, "Linux (Kindle 3)", new String[] { "Kindle/3" }, null, DeviceType.TABLET, null ), KINDLE2( Manufacturer.AMAZON,OperatingSystem.KINDLE, 20, "Linux (Kindle 2)", new String[] { "Kindle/2" }, null, DeviceType.TABLET, null ), - LINUX( Manufacturer.OTHER,null, 2, "Linux", new String[] { "Linux" , "CamelHttpStream" }, null, DeviceType.COMPUTER, null ), // CamelHttpStream is being used by Evolution, an email client for Linux - + LINUX( Manufacturer.OTHER,null, 2, "Linux", new String[] { "Linux", "CamelHttpStream" }, null, DeviceType.COMPUTER, null ), // CamelHttpStream is being used by Evolution, an email client for Linux + UBUNTU( Manufacturer.CONONICAL, OperatingSystem.LINUX, 1, "Ubuntu", new String[] {"ubuntu"}, null, DeviceType.UNKNOWN, null), + UBUNTU_TOUCH_MOBILE( Manufacturer.CONONICAL, OperatingSystem.UBUNTU, 200, "Ubuntu Touch (mobile)", new String[] {"mobile"}, null, DeviceType.MOBILE, null), + /** * Other Symbian OS versions */ diff --git a/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java b/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java index 1b7b0ef0..62812a81 100644 --- a/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java +++ b/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java @@ -91,6 +91,10 @@ public class BrowserTest { "Mozilla/5.0 (Windows NT 6.4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0" }; + String[] edgeMobileClients = new String[] { + "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; DEVICE INFO) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.0" + }; + String[] ie55clients = new String[] { "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; .NET CLR 1.1.4322)", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)", @@ -594,7 +598,8 @@ public void testParseUserAgentString() { testAgents(ie9clients, Browser.IE9); testAgents(ie10clients, Browser.IE10); testAgents(ie11clients, Browser.IE11); - testAgents(edgeClients, Browser.EDGE_12); + testAgents(edgeClients, Browser.EDGE12); + testAgents(edgeMobileClients, Browser.EDGE_MOBILE12); testAgents(ieTooOld, Browser.IE); testAgents(outlook2007, Browser.OUTLOOK2007); testAgents(outlook2010, Browser.OUTLOOK2010); diff --git a/src/test/java/eu/bitwalker/useragentutils/OperatingSystemTest.java b/src/test/java/eu/bitwalker/useragentutils/OperatingSystemTest.java index 58a26138..9e1cecb6 100644 --- a/src/test/java/eu/bitwalker/useragentutils/OperatingSystemTest.java +++ b/src/test/java/eu/bitwalker/useragentutils/OperatingSystemTest.java @@ -216,7 +216,11 @@ public class OperatingSystemTest { }; String[] iPadIos8 = { - "Mozilla/5.0 (iPad; CPU OS 8_0 like Mac OS X) AppleWebKit/538.34.9 (KHTML, like Gecko) Mobile/12A4265u" + "Mozilla/5.0 (iPad; CPU OS 8_0 like Mac OS X) AppleWebKit/538.34.9 (KHTML, like Gecko) Mobile/12A4265u", + }; + + String[] iPadIos8_4 = { + "Mozilla/5.0 (iPad; CPU OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H143 Safari/600.1.4" }; String[] blackberries = { @@ -344,6 +348,10 @@ public class OperatingSystemTest { "Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; HTC; HTC6990LVW) like Gecko" }; + String[] windows10mobile = { + "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; NOKIA; Lumia 735) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0" + }; + String[] bada = { "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500NEJE5; U; Bada/1.0; fr-fr) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.0 Mobile WVGA SMM-MMS/1.2.0 NexPlayer/3.0 profile/MIDP-2.1 configuration/CLDC-1.1 OPN-B", "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S8500/S8500XXJL2; U; Bada/1.2; de-de) AppleWebKit/533.1 (KHTML, like Gecko) Dolfin/2.2 Mobile WVGA SMM-MMS/1.2.0 OPN-B" @@ -353,6 +361,10 @@ public class OperatingSystemTest { "Mozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2a1pre) Gecko/20091127 Firefox/3.5 Maemo Browser 1.5.6 RX-51 N900" }; + String[] ubuntu_touch = { + "Mozilla/5.0 (Linux; Ubuntu 14.04 like Android 4.4) AppleWebKit/537.36 Chromium/35.0.1870.2 Mobile Safari/537.36 " + }; + String[] kindle2 = { "Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 600x800)" }; @@ -397,6 +409,7 @@ public void testParseUserAgentString() { testAgents(windowsMobile7, OperatingSystem.WINDOWS_MOBILE7); testAgents(windowsMobile8, OperatingSystem.WINDOWS_PHONE8); testAgents(windowsMobile8_1, OperatingSystem.WINDOWS_PHONE8_1); + testAgents(windows10mobile, OperatingSystem.WINDOWS_10_MOBILE); testAgents(windowsVista, OperatingSystem.WINDOWS_VISTA); testAgents(windows7, OperatingSystem.WINDOWS_7); testAgents(windows8, OperatingSystem.WINDOWS_8); @@ -423,6 +436,7 @@ public void testParseUserAgentString() { testAgents(iPadIos6, OperatingSystem.iOS6_IPAD); testAgents(iPadIos7, OperatingSystem.iOS7_IPAD); testAgents(iPadIos8, OperatingSystem.iOS8_IPAD); + testAgents(iPadIos8_4, OperatingSystem.iOS8_4_IPAD); testAgents(iPad, OperatingSystem.MAC_OS_X_IPAD); testAgents(blackberries, OperatingSystem.BLACKBERRY); testAgents(blackberry6, OperatingSystem.BLACKBERRY6); @@ -447,7 +461,7 @@ public void testParseUserAgentString() { testAgents(genericMobile, OperatingSystem.UNKNOWN_MOBILE); testAgents(genericTablet, OperatingSystem.UNKNOWN_TABLET); testAgents(unknown, OperatingSystem.UNKNOWN); - + testAgents(ubuntu_touch, OperatingSystem.UBUNTU_TOUCH_MOBILE); } @Test @@ -475,6 +489,7 @@ public void testDeviceTypes() { testDeviceTypes(iPad, DeviceType.TABLET); testDeviceTypes(gameconsoles, DeviceType.GAME_CONSOLE); testDeviceTypes(googleTV, DeviceType.DMR); + testDeviceTypes(ubuntu_touch, DeviceType.MOBILE); } public void testGroupRecursion() { diff --git a/src/test/java/eu/bitwalker/useragentutils/browser/AbstractUserAgentParameterizedTest.java b/src/test/java/eu/bitwalker/useragentutils/browser/AbstractUserAgentParameterizedTest.java index 14f8a2a7..943854e7 100644 --- a/src/test/java/eu/bitwalker/useragentutils/browser/AbstractUserAgentParameterizedTest.java +++ b/src/test/java/eu/bitwalker/useragentutils/browser/AbstractUserAgentParameterizedTest.java @@ -47,13 +47,13 @@ public void shouldParseUserAgent() throws Exception { Version browserVersion = userAgent.getBrowserVersion(); if (null != browserVersion) { - assertEquals(this.expectedBrowserVersion, browserVersion.toString()); + assertEquals(this.userAgentValue, this.expectedBrowserVersion, browserVersion.toString()); } else { - assertEquals(this.expectedBrowserVersion, browserVersion); + assertEquals(this.userAgentValue, this.expectedBrowserVersion, browserVersion); } OperatingSystem os = userAgent.getOperatingSystem(); - assertEquals(expectedOS, os); + assertEquals(this.userAgentValue, expectedOS, os); } } diff --git a/src/test/java/eu/bitwalker/useragentutils/browser/ChromeParameterizedTest.java b/src/test/java/eu/bitwalker/useragentutils/browser/ChromeParameterizedTest.java index 7b3e14ab..05fd4579 100644 --- a/src/test/java/eu/bitwalker/useragentutils/browser/ChromeParameterizedTest.java +++ b/src/test/java/eu/bitwalker/useragentutils/browser/ChromeParameterizedTest.java @@ -34,7 +34,7 @@ public static Collection testData() { Browser.CHROME8, "8.0.558.0", OperatingSystem.WINDOWS_XP }, { "Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0", - Browser.CHROME8, "8.1.0.0", OperatingSystem.LINUX }, + Browser.CHROME8, "8.1.0.0", OperatingSystem.UBUNTU }, // chrome9 { @@ -46,7 +46,7 @@ public static Collection testData() { // chrome10 { "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.15 (KHTML, like Gecko) Ubuntu/10.10 Chromium/10.0.613.0 Chrome/10.0.613.0 Safari/534.15", - Browser.CHROME10, "10.0.613.0", OperatingSystem.LINUX }, + Browser.CHROME10, "10.0.613.0", OperatingSystem.UBUNTU }, // chrome11 { "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.697.0 Safari/534.24", diff --git a/src/test/java/eu/bitwalker/useragentutils/browser/FirefoxParameterizedTest.java b/src/test/java/eu/bitwalker/useragentutils/browser/FirefoxParameterizedTest.java index f47b6c17..6c3ae531 100644 --- a/src/test/java/eu/bitwalker/useragentutils/browser/FirefoxParameterizedTest.java +++ b/src/test/java/eu/bitwalker/useragentutils/browser/FirefoxParameterizedTest.java @@ -25,7 +25,7 @@ public static Collection testData() { // firefox3 { "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.14) Gecko/2009090216 Ubuntu/9.04 (jaunty) Firefox/3.0.14", - Browser.FIREFOX3, "3.0.14", OperatingSystem.LINUX }, + Browser.FIREFOX3, "3.0.14", OperatingSystem.UBUNTU }, // firefox4 { "Mozilla/5.0 (X11; Linux x86_64; rv:2.0b4) Gecko/20100818 Firefox/4.0b4", From 949f87d670589762d3d16decb84210a86104d6dc Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Thu, 16 Jul 2015 18:59:06 +0200 Subject: [PATCH 10/12] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9179b0ef..711f1fa2 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,10 @@ A lot of user-agents lie about their identify. That makes US sniffing a guessing New in Version 1.17 (unreleased) ------------------- --- Added Ubuntu and Ubuntu Touch (mobile) detection --- Added Windows 10 mobile detection --- Added Microsoft Edge browser detection (contributed by https://github.com/nmaves) --- Added future Firefox version up to 42. +- Added Ubuntu and Ubuntu Touch (mobile) detection +- Added Windows 10 mobile detection +- Added Microsoft Edge browser detection (contributed by https://github.com/nmaves) +- Added future Firefox version up to 42. Javadoc ------- From f32d80a49c80d964749bc69a6323f7e38d3ae790 Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Thu, 16 Jul 2015 18:59:50 +0200 Subject: [PATCH 11/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 711f1fa2..c6c98368 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ New in Version 1.17 (unreleased) - Added Ubuntu and Ubuntu Touch (mobile) detection - Added Windows 10 mobile detection - Added Microsoft Edge browser detection (contributed by https://github.com/nmaves) -- Added future Firefox version up to 42. +- Added future Firefox versions up to 42. Javadoc ------- From 67656becf364375a1b1c2869570d6abd5862d649 Mon Sep 17 00:00:00 2001 From: Harald Walker Date: Sun, 2 Aug 2015 17:09:19 +0200 Subject: [PATCH 12/12] Prepare 1.17 release --- README.md | 6 +++--- javadoc/allclasses-frame.html | 6 +++--- javadoc/allclasses-noframe.html | 6 +++--- javadoc/constant-values.html | 8 ++++---- javadoc/deprecated-list.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/Application.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/ApplicationType.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/Browser.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/BrowserType.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/DeviceType.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/Manufacturer.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/OperatingSystem.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/RenderingEngine.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/UserAgent.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/Utils.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/Version.html | 8 ++++---- .../bitwalker/useragentutils/class-use/Application.html | 8 ++++---- .../useragentutils/class-use/ApplicationType.html | 8 ++++---- .../eu/bitwalker/useragentutils/class-use/Browser.html | 8 ++++---- .../bitwalker/useragentutils/class-use/BrowserType.html | 8 ++++---- .../eu/bitwalker/useragentutils/class-use/DeviceType.html | 8 ++++---- .../bitwalker/useragentutils/class-use/Manufacturer.html | 8 ++++---- .../useragentutils/class-use/OperatingSystem.html | 8 ++++---- .../useragentutils/class-use/RenderingEngine.html | 8 ++++---- .../eu/bitwalker/useragentutils/class-use/UserAgent.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/class-use/Utils.html | 8 ++++---- .../eu/bitwalker/useragentutils/class-use/Version.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/package-frame.html | 6 +++--- javadoc/eu/bitwalker/useragentutils/package-summary.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/package-tree.html | 8 ++++---- javadoc/eu/bitwalker/useragentutils/package-use.html | 8 ++++---- javadoc/help-doc.html | 8 ++++---- javadoc/index-all.html | 8 ++++---- javadoc/index.html | 4 ++-- javadoc/overview-tree.html | 8 ++++---- javadoc/serialized-form.html | 8 ++++---- pom.xml | 2 +- 37 files changed, 139 insertions(+), 139 deletions(-) diff --git a/README.md b/README.md index c6c98368..35e2ff13 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Advice ------ A lot of user-agents lie about their identify. That makes US sniffing a guessing game. On websites it is a better approach to detect features using a javascript library like Modernizr (http://modernizr.com/). -New in Version 1.17 (unreleased) +New in Version 1.17 ------------------- - Added Ubuntu and Ubuntu Touch (mobile) detection - Added Windows 10 mobile detection @@ -34,7 +34,7 @@ Add dependency: eu.bitwalker UserAgentUtils - 1.16 + 1.17 ``` @@ -43,7 +43,7 @@ Add dependency for snapshot releases: eu.bitwalker UserAgentUtils - 1.17-SNAPSHOT + 1.18-SNAPSHOT ``` diff --git a/javadoc/allclasses-frame.html b/javadoc/allclasses-frame.html index 8905cbcc..662823b1 100644 --- a/javadoc/allclasses-frame.html +++ b/javadoc/allclasses-frame.html @@ -2,10 +2,10 @@ - + -All Classes (User-Agent-Utils 1.17-SNAPSHOT API) - +All Classes (User-Agent-Utils 1.17 API) + diff --git a/javadoc/allclasses-noframe.html b/javadoc/allclasses-noframe.html index 6d2864e1..bb76d291 100644 --- a/javadoc/allclasses-noframe.html +++ b/javadoc/allclasses-noframe.html @@ -2,10 +2,10 @@ - + -All Classes (User-Agent-Utils 1.17-SNAPSHOT API) - +All Classes (User-Agent-Utils 1.17 API) + diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html index 143a59da..a35db646 100644 --- a/javadoc/constant-values.html +++ b/javadoc/constant-values.html @@ -2,16 +2,16 @@ - + -Constant Field Values (User-Agent-Utils 1.17-SNAPSHOT API) - +Constant Field Values (User-Agent-Utils 1.17 API) + diff --git a/javadoc/deprecated-list.html b/javadoc/deprecated-list.html index c68880ba..bd78adea 100644 --- a/javadoc/deprecated-list.html +++ b/javadoc/deprecated-list.html @@ -2,16 +2,16 @@ - + -Deprecated List (User-Agent-Utils 1.17-SNAPSHOT API) - +Deprecated List (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Application.html b/javadoc/eu/bitwalker/useragentutils/Application.html index fce3ff57..da32b684 100644 --- a/javadoc/eu/bitwalker/useragentutils/Application.html +++ b/javadoc/eu/bitwalker/useragentutils/Application.html @@ -2,16 +2,16 @@ - + -Application (User-Agent-Utils 1.17-SNAPSHOT API) - +Application (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/ApplicationType.html b/javadoc/eu/bitwalker/useragentutils/ApplicationType.html index 98ffdd6d..3f7e1021 100644 --- a/javadoc/eu/bitwalker/useragentutils/ApplicationType.html +++ b/javadoc/eu/bitwalker/useragentutils/ApplicationType.html @@ -2,16 +2,16 @@ - + -ApplicationType (User-Agent-Utils 1.17-SNAPSHOT API) - +ApplicationType (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Browser.html b/javadoc/eu/bitwalker/useragentutils/Browser.html index b92c1459..dfe733ff 100644 --- a/javadoc/eu/bitwalker/useragentutils/Browser.html +++ b/javadoc/eu/bitwalker/useragentutils/Browser.html @@ -2,16 +2,16 @@ - + -Browser (User-Agent-Utils 1.17-SNAPSHOT API) - +Browser (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/BrowserType.html b/javadoc/eu/bitwalker/useragentutils/BrowserType.html index 14489dc8..d7143a4e 100644 --- a/javadoc/eu/bitwalker/useragentutils/BrowserType.html +++ b/javadoc/eu/bitwalker/useragentutils/BrowserType.html @@ -2,16 +2,16 @@ - + -BrowserType (User-Agent-Utils 1.17-SNAPSHOT API) - +BrowserType (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/DeviceType.html b/javadoc/eu/bitwalker/useragentutils/DeviceType.html index b0e4231b..7f897451 100644 --- a/javadoc/eu/bitwalker/useragentutils/DeviceType.html +++ b/javadoc/eu/bitwalker/useragentutils/DeviceType.html @@ -2,16 +2,16 @@ - + -DeviceType (User-Agent-Utils 1.17-SNAPSHOT API) - +DeviceType (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Manufacturer.html b/javadoc/eu/bitwalker/useragentutils/Manufacturer.html index 58a4481e..339e7dbb 100644 --- a/javadoc/eu/bitwalker/useragentutils/Manufacturer.html +++ b/javadoc/eu/bitwalker/useragentutils/Manufacturer.html @@ -2,16 +2,16 @@ - + -Manufacturer (User-Agent-Utils 1.17-SNAPSHOT API) - +Manufacturer (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html b/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html index df36656b..8a7e668c 100644 --- a/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html +++ b/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html @@ -2,16 +2,16 @@ - + -OperatingSystem (User-Agent-Utils 1.17-SNAPSHOT API) - +OperatingSystem (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html b/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html index 66a2291d..3a6457b1 100644 --- a/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html +++ b/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html @@ -2,16 +2,16 @@ - + -RenderingEngine (User-Agent-Utils 1.17-SNAPSHOT API) - +RenderingEngine (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/UserAgent.html b/javadoc/eu/bitwalker/useragentutils/UserAgent.html index 50b613d5..47fa211a 100644 --- a/javadoc/eu/bitwalker/useragentutils/UserAgent.html +++ b/javadoc/eu/bitwalker/useragentutils/UserAgent.html @@ -2,16 +2,16 @@ - + -UserAgent (User-Agent-Utils 1.17-SNAPSHOT API) - +UserAgent (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Utils.html b/javadoc/eu/bitwalker/useragentutils/Utils.html index c6ca3c86..a5a6a05e 100644 --- a/javadoc/eu/bitwalker/useragentutils/Utils.html +++ b/javadoc/eu/bitwalker/useragentutils/Utils.html @@ -2,16 +2,16 @@ - + -Utils (User-Agent-Utils 1.17-SNAPSHOT API) - +Utils (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/Version.html b/javadoc/eu/bitwalker/useragentutils/Version.html index f88147ad..062c6929 100644 --- a/javadoc/eu/bitwalker/useragentutils/Version.html +++ b/javadoc/eu/bitwalker/useragentutils/Version.html @@ -2,16 +2,16 @@ - + -Version (User-Agent-Utils 1.17-SNAPSHOT API) - +Version (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Application.html b/javadoc/eu/bitwalker/useragentutils/class-use/Application.html index d66d6600..817e9180 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Application.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Application.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Application (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Application (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html b/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html index a999fafb..c3d36b13 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.ApplicationType (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.ApplicationType (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Browser.html b/javadoc/eu/bitwalker/useragentutils/class-use/Browser.html index 77789ad3..0aa2b043 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Browser.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Browser.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Browser (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Browser (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/BrowserType.html b/javadoc/eu/bitwalker/useragentutils/class-use/BrowserType.html index 0b81f1f3..60d3615b 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/BrowserType.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/BrowserType.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.BrowserType (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.BrowserType (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/DeviceType.html b/javadoc/eu/bitwalker/useragentutils/class-use/DeviceType.html index 431d13e4..5e71a3b3 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/DeviceType.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/DeviceType.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.DeviceType (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.DeviceType (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Manufacturer.html b/javadoc/eu/bitwalker/useragentutils/class-use/Manufacturer.html index 8bf4a70c..a4f64dd4 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Manufacturer.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Manufacturer.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Manufacturer (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Manufacturer (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/OperatingSystem.html b/javadoc/eu/bitwalker/useragentutils/class-use/OperatingSystem.html index 976ffc71..e9cd93a4 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/OperatingSystem.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/OperatingSystem.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.OperatingSystem (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.OperatingSystem (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/RenderingEngine.html b/javadoc/eu/bitwalker/useragentutils/class-use/RenderingEngine.html index 1e974e3f..f4d702d4 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/RenderingEngine.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/RenderingEngine.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.RenderingEngine (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.RenderingEngine (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/UserAgent.html b/javadoc/eu/bitwalker/useragentutils/class-use/UserAgent.html index f69eeb41..acbc79f4 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/UserAgent.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/UserAgent.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.UserAgent (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.UserAgent (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Utils.html b/javadoc/eu/bitwalker/useragentutils/class-use/Utils.html index 5726d81c..470078ae 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Utils.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Utils.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Utils (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Utils (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Version.html b/javadoc/eu/bitwalker/useragentutils/class-use/Version.html index 892d148d..2f34d345 100644 --- a/javadoc/eu/bitwalker/useragentutils/class-use/Version.html +++ b/javadoc/eu/bitwalker/useragentutils/class-use/Version.html @@ -2,16 +2,16 @@ - + -Uses of Class eu.bitwalker.useragentutils.Version (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Class eu.bitwalker.useragentutils.Version (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/package-frame.html b/javadoc/eu/bitwalker/useragentutils/package-frame.html index 42d2cb56..a0651b8b 100644 --- a/javadoc/eu/bitwalker/useragentutils/package-frame.html +++ b/javadoc/eu/bitwalker/useragentutils/package-frame.html @@ -2,10 +2,10 @@ - + -eu.bitwalker.useragentutils (User-Agent-Utils 1.17-SNAPSHOT API) - +eu.bitwalker.useragentutils (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/package-summary.html b/javadoc/eu/bitwalker/useragentutils/package-summary.html index f8e835da..b259ff09 100644 --- a/javadoc/eu/bitwalker/useragentutils/package-summary.html +++ b/javadoc/eu/bitwalker/useragentutils/package-summary.html @@ -2,16 +2,16 @@ - + -eu.bitwalker.useragentutils (User-Agent-Utils 1.17-SNAPSHOT API) - +eu.bitwalker.useragentutils (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/package-tree.html b/javadoc/eu/bitwalker/useragentutils/package-tree.html index 2ef0902b..83d26406 100644 --- a/javadoc/eu/bitwalker/useragentutils/package-tree.html +++ b/javadoc/eu/bitwalker/useragentutils/package-tree.html @@ -2,16 +2,16 @@ - + -eu.bitwalker.useragentutils Class Hierarchy (User-Agent-Utils 1.17-SNAPSHOT API) - +eu.bitwalker.useragentutils Class Hierarchy (User-Agent-Utils 1.17 API) + diff --git a/javadoc/eu/bitwalker/useragentutils/package-use.html b/javadoc/eu/bitwalker/useragentutils/package-use.html index 8eb0a821..77b309f4 100644 --- a/javadoc/eu/bitwalker/useragentutils/package-use.html +++ b/javadoc/eu/bitwalker/useragentutils/package-use.html @@ -2,16 +2,16 @@ - + -Uses of Package eu.bitwalker.useragentutils (User-Agent-Utils 1.17-SNAPSHOT API) - +Uses of Package eu.bitwalker.useragentutils (User-Agent-Utils 1.17 API) + diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html index 47cc2ebc..4bde742e 100644 --- a/javadoc/help-doc.html +++ b/javadoc/help-doc.html @@ -2,16 +2,16 @@ - + -API Help (User-Agent-Utils 1.17-SNAPSHOT API) - +API Help (User-Agent-Utils 1.17 API) + diff --git a/javadoc/index-all.html b/javadoc/index-all.html index 643a83b5..f081b43b 100644 --- a/javadoc/index-all.html +++ b/javadoc/index-all.html @@ -2,16 +2,16 @@ - + -Index (User-Agent-Utils 1.17-SNAPSHOT API) - +Index (User-Agent-Utils 1.17 API) + diff --git a/javadoc/index.html b/javadoc/index.html index 18b41fa9..fc2722ac 100644 --- a/javadoc/index.html +++ b/javadoc/index.html @@ -2,9 +2,9 @@ - + -User-Agent-Utils 1.17-SNAPSHOT API +User-Agent-Utils 1.17 API diff --git a/javadoc/serialized-form.html b/javadoc/serialized-form.html index 90880098..86080581 100644 --- a/javadoc/serialized-form.html +++ b/javadoc/serialized-form.html @@ -2,16 +2,16 @@ - + -Serialized Form (User-Agent-Utils 1.17-SNAPSHOT API) - +Serialized Form (User-Agent-Utils 1.17 API) + diff --git a/pom.xml b/pom.xml index ee73eabd..2dc6e969 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ User-Agent-Utils http://www.bitwalker.eu/software/user-agent-utils UserAgentUtils - 1.17-SNAPSHOT + 1.17 Utility classes to handle user-agents. github