diff --git a/README.md b/README.md
index b99ae310..a6a8c893 100644
--- a/README.md
+++ b/README.md
@@ -17,13 +17,14 @@ A lot of user-agents lie about their identify. That makes US sniffing a guessing
If you want faster updates, switch to snapshot releases.
-New in Version 1.18
+New in Version 1.19 (unreleased)
-------------------
-- #118 Updated Opera support
-- #115 Improved Ubuntu detection
-- #114 Fixed Microsoft Edge version detection
-- #125 Improved Opera version detection
-- Safari 9 support
+- #138 Improved future Microsoft Edge detection and added Edge 13
+- Added current and future Firefox and Chrome versions
+- Improved detection of unsuported new Firefox versions
+- Added detection of Firefox mobile for iOS devices
+- Improved Phantom.js detection as BOT
+- Added support for Android 6 and Android 6 tablets
Javadoc
-------
@@ -84,6 +85,14 @@ http://www.bitwalker.eu/contact
Changelog
---------
+1.18
+----
+- #118 Updated Opera support
+- #115 Improved Ubuntu detection
+- #114 Fixed Microsoft Edge version detection
+- #125 Improved Opera version detection
+- Safari 9 support
+
1.17
----
- Added Ubuntu and Ubuntu Touch (mobile) detection
diff --git a/javadoc/allclasses-frame.html b/javadoc/allclasses-frame.html
index 0844c7b7..825ac654 100644
--- a/javadoc/allclasses-frame.html
+++ b/javadoc/allclasses-frame.html
@@ -2,10 +2,10 @@
-
+
-All Classes (User-Agent-Utils 1.18 API)
-
+All Classes (User-Agent-Utils 1.19-SNAPSHOT API)
+
diff --git a/javadoc/allclasses-noframe.html b/javadoc/allclasses-noframe.html
index ecf54702..a7aaad39 100644
--- a/javadoc/allclasses-noframe.html
+++ b/javadoc/allclasses-noframe.html
@@ -2,10 +2,10 @@
-
+
-All Classes (User-Agent-Utils 1.18 API)
-
+All Classes (User-Agent-Utils 1.19-SNAPSHOT API)
+
diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html
index 21852639..12798015 100644
--- a/javadoc/constant-values.html
+++ b/javadoc/constant-values.html
@@ -2,16 +2,16 @@
-
+
-Constant Field Values (User-Agent-Utils 1.18 API)
-
+Constant Field Values (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -110,6 +110,6 @@ Contents
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/deprecated-list.html b/javadoc/deprecated-list.html
index 25538719..82920caf 100644
--- a/javadoc/deprecated-list.html
+++ b/javadoc/deprecated-list.html
@@ -2,16 +2,16 @@
-
+
-Deprecated List (User-Agent-Utils 1.18 API)
-
+Deprecated List (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -151,6 +151,6 @@ Contents
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/Application.html b/javadoc/eu/bitwalker/useragentutils/Application.html
index 89a823c4..12f0a2bb 100644
--- a/javadoc/eu/bitwalker/useragentutils/Application.html
+++ b/javadoc/eu/bitwalker/useragentutils/Application.html
@@ -2,16 +2,16 @@
-
+
-Application (User-Agent-Utils 1.18 API)
-
+Application (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -524,6 +524,6 @@ valueOf
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/ApplicationType.html b/javadoc/eu/bitwalker/useragentutils/ApplicationType.html
index a0b309ca..53d65713 100644
--- a/javadoc/eu/bitwalker/useragentutils/ApplicationType.html
+++ b/javadoc/eu/bitwalker/useragentutils/ApplicationType.html
@@ -2,16 +2,16 @@
-
+
-ApplicationType (User-Agent-Utils 1.18 API)
-
+ApplicationType (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -333,6 +333,6 @@ getName
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/Browser.html b/javadoc/eu/bitwalker/useragentutils/Browser.html
index 92580535..884e67a1 100644
--- a/javadoc/eu/bitwalker/useragentutils/Browser.html
+++ b/javadoc/eu/bitwalker/useragentutils/Browser.html
@@ -2,16 +2,16 @@
-
+
-Browser (User-Agent-Utils 1.18 API)
-
+Browser (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -282,30 +282,42 @@ Enum Constant Summary
CHROME46
-CHROME8
+CHROME47
-CHROME9
+CHROME48
+
+
+CHROME49
+
+
+CHROME8
+CHROME9
+
+
COAST
Opera Coast mobile browser, http://en.wikipedia.org/wiki/Opera_Coast
-
+
COAST1
-
+
DOLFIN2
-
+
DOWNLOAD
-
+
EDGE
Family of Microsoft Edge browsers.
+
+EDGE_MOBILE
+
EDGE_MOBILE12
@@ -313,17 +325,25 @@ Enum Constant Summary
EDGE12
-EUDORA
+EDGE13
-EVOLUTION
+EUDORA
-FIREFOX
+EVOLUTION
+FIREFOX
+
+
FIREFOX_MOBILE
+
+FIREFOX_MOBILE_IOS
+Firefox for iOS devices.
+
+
FIREFOX_MOBILE23
@@ -442,255 +462,264 @@ Enum Constant Summary
FIREFOX42
-FIREFOX5
+FIREFOX43
-FIREFOX6
+FIREFOX44
-FIREFOX7
+FIREFOX45
-FIREFOX8
+FIREFOX5
-FIREFOX9
+FIREFOX6
-FLOCK
+FIREFOX7
+FIREFOX8
+
+
+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
-
+
OPERA31
-
+
OPERA32
-
+
OPERA33
-
+
OPERA34
-
+
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
-
+
SAFARI9
-
+
SEAMONKEY
-
+
SILK
-
+
THEBAT
-
+
THUNDERBIRD
-
+
THUNDERBIRD10
-
+
THUNDERBIRD11
-
+
THUNDERBIRD12
-
+
THUNDERBIRD2
-
+
THUNDERBIRD3
-
+
THUNDERBIRD6
-
+
THUNDERBIRD7
-
+
THUNDERBIRD8
-
+
UNKNOWN
-
+
VIVALDI
@@ -1008,13 +1037,13 @@ EDGE
Family of Microsoft Edge browsers. Pretends to be Chrome and claims to be webkit compatible.
-
+
@@ -1026,6 +1055,24 @@ EDGE_MOBILE12
public static final Browser EDGE_MOBILE12
+
+
+
+
+
+
+
+
@@ -1045,6 +1092,33 @@ CHROME_MOBILE
public static final Browser CHROME_MOBILE
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1405,842 +1479,879 @@ OMNIWEB
public static final Browser OMNIWEB
-
+
-
+
-
+
-
+
-
+
-SAFARI9
-public static final Browser SAFARI9
+FIREFOX_MOBILE_IOS
+public static final Browser FIREFOX_MOBILE_IOS
+Firefox for iOS devices. This Firefox version is using webkit instead of gecko rendering engine.
-
+
-
+
-
+
-
+
-
+
-
+
-COAST
-public static final Browser COAST
-Opera Coast mobile browser, http://en.wikipedia.org/wiki/Opera_Coast
+FIREFOX40
+public static final Browser FIREFOX40
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-FIREFOX33
-public static final Browser FIREFOX33
+COAST
+public static final Browser COAST
+Opera Coast mobile browser, http://en.wikipedia.org/wiki/Opera_Coast
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2705,6 +2816,6 @@ valueOf
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/BrowserType.html b/javadoc/eu/bitwalker/useragentutils/BrowserType.html
index fef7f795..ce05d6e4 100644
--- a/javadoc/eu/bitwalker/useragentutils/BrowserType.html
+++ b/javadoc/eu/bitwalker/useragentutils/BrowserType.html
@@ -2,16 +2,16 @@
-
+
-BrowserType (User-Agent-Utils 1.18 API)
-
+BrowserType (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -423,6 +423,6 @@ getName
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/DeviceType.html b/javadoc/eu/bitwalker/useragentutils/DeviceType.html
index d35c8fa7..f1fd7c21 100644
--- a/javadoc/eu/bitwalker/useragentutils/DeviceType.html
+++ b/javadoc/eu/bitwalker/useragentutils/DeviceType.html
@@ -2,16 +2,16 @@
-
+
-DeviceType (User-Agent-Utils 1.18 API)
-
+DeviceType (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -411,6 +411,6 @@ getName
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/Manufacturer.html b/javadoc/eu/bitwalker/useragentutils/Manufacturer.html
index 9b58c056..5bba0e3b 100644
--- a/javadoc/eu/bitwalker/useragentutils/Manufacturer.html
+++ b/javadoc/eu/bitwalker/useragentutils/Manufacturer.html
@@ -2,16 +2,16 @@
-
+
-Manufacturer (User-Agent-Utils 1.18 API)
-
+Manufacturer (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -667,6 +667,6 @@ getName
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html b/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html
index 4cca258e..5f24d0c5 100644
--- a/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html
+++ b/javadoc/eu/bitwalker/useragentutils/OperatingSystem.html
@@ -2,16 +2,16 @@
-
+
-OperatingSystem (User-Agent-Utils 1.18 API)
-
+OperatingSystem (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -168,6 +168,12 @@ Enum Constant Summary
ANDROID5_TABLET
+ANDROID6
+
+
+ANDROID6_TABLET
+
+
BADA
Bada is a mobile operating system being developed by Samsung Electronics.
@@ -677,6 +683,24 @@ ANDROID
public static final OperatingSystem ANDROID
+
+
+
+
+
+
+
+
@@ -1532,6 +1556,6 @@ valueOf
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html b/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html
index 8c8e0925..dda4f8b3 100644
--- a/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html
+++ b/javadoc/eu/bitwalker/useragentutils/RenderingEngine.html
@@ -2,16 +2,16 @@
-
+
-RenderingEngine (User-Agent-Utils 1.18 API)
-
+RenderingEngine (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -443,6 +443,6 @@ valueOf
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/UserAgent.html b/javadoc/eu/bitwalker/useragentutils/UserAgent.html
index d2b97ea7..6fc9de60 100644
--- a/javadoc/eu/bitwalker/useragentutils/UserAgent.html
+++ b/javadoc/eu/bitwalker/useragentutils/UserAgent.html
@@ -2,16 +2,16 @@
-
+
-UserAgent (User-Agent-Utils 1.18 API)
-
+UserAgent (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -429,6 +429,6 @@ equals
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/Utils.html b/javadoc/eu/bitwalker/useragentutils/Utils.html
index ba140ecb..6bd9884d 100644
--- a/javadoc/eu/bitwalker/useragentutils/Utils.html
+++ b/javadoc/eu/bitwalker/useragentutils/Utils.html
@@ -2,16 +2,16 @@
-
+
-Utils (User-Agent-Utils 1.18 API)
-
+Utils (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -223,6 +223,6 @@ Utils
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/Version.html b/javadoc/eu/bitwalker/useragentutils/Version.html
index 499f7838..8341d921 100644
--- a/javadoc/eu/bitwalker/useragentutils/Version.html
+++ b/javadoc/eu/bitwalker/useragentutils/Version.html
@@ -2,16 +2,16 @@
-
+
-Version (User-Agent-Utils 1.18 API)
-
+Version (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -358,6 +358,6 @@ compareTo
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/Application.html b/javadoc/eu/bitwalker/useragentutils/class-use/Application.html
index 2cbaf25b..d2b46f4f 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.18 API)
-
+Uses of Class eu.bitwalker.useragentutils.Application (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -154,6 +154,6 @@ Uses of
- Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html b/javadoc/eu/bitwalker/useragentutils/class-use/ApplicationType.html
index 0a83ae3e..000e088b 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.18 API)
-
+Uses of Class eu.bitwalker.useragentutils.ApplicationType (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -148,6 +148,6 @@ Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/eu/bitwalker/useragentutils/package-use.html b/javadoc/eu/bitwalker/useragentutils/package-use.html
index ab0286a1..88b2e785 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.18 API)
-
+Uses of Package eu.bitwalker.useragentutils (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -174,6 +174,6 @@ Uses of Pa
- Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html
index 5139376c..1a6b9992 100644
--- a/javadoc/help-doc.html
+++ b/javadoc/help-doc.html
@@ -2,16 +2,16 @@
-
+
-API Help (User-Agent-Utils 1.18 API)
-
+API Help (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -211,6 +211,6 @@ Constant Field Values
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/index-all.html b/javadoc/index-all.html
index 3378d798..94fb0348 100644
--- a/javadoc/index-all.html
+++ b/javadoc/index-all.html
@@ -2,16 +2,16 @@
-
+
-Index (User-Agent-Utils 1.18 API)
-
+Index (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -457,6 +457,6 @@ V
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/index.html b/javadoc/index.html
index de896a8f..8d22f1c9 100644
--- a/javadoc/index.html
+++ b/javadoc/index.html
@@ -2,9 +2,9 @@
-
+
-User-Agent-Utils 1.18 API
+User-Agent-Utils 1.19-SNAPSHOT API
@@ -144,6 +144,6 @@ Enum Hierarchy
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/javadoc/serialized-form.html b/javadoc/serialized-form.html
index 4e1e3d85..dc720822 100644
--- a/javadoc/serialized-form.html
+++ b/javadoc/serialized-form.html
@@ -2,16 +2,16 @@
-
+
-Serialized Form (User-Agent-Utils 1.18 API)
-
+Serialized Form (User-Agent-Utils 1.19-SNAPSHOT API)
+
@@ -152,6 +152,6 @@ userAgentString
-Copyright © 2015. All rights reserved.
+Copyright © 2016. All rights reserved.
diff --git a/pom.xml b/pom.xml
index 90d42425..54e2fceb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
User-Agent-Utils
http://www.bitwalker.eu/software/user-agent-utils
UserAgentUtils
- 1.18
+ 1.19-SNAPSHOT
Utility classes to handle user-agents.
github
diff --git a/src/main/java/eu/bitwalker/useragentutils/Application.java b/src/main/java/eu/bitwalker/useragentutils/Application.java
index b025c6d8..1c146976 100644
--- a/src/main/java/eu/bitwalker/useragentutils/Application.java
+++ b/src/main/java/eu/bitwalker/useragentutils/Application.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+ * Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/main/java/eu/bitwalker/useragentutils/ApplicationType.java b/src/main/java/eu/bitwalker/useragentutils/ApplicationType.java
index 3a43f8cc..66924635 100644
--- a/src/main/java/eu/bitwalker/useragentutils/ApplicationType.java
+++ b/src/main/java/eu/bitwalker/useragentutils/ApplicationType.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/main/java/eu/bitwalker/useragentutils/Browser.java b/src/main/java/eu/bitwalker/useragentutils/Browser.java
index 76575a71..5ade9db9 100644
--- a/src/main/java/eu/bitwalker/useragentutils/Browser.java
+++ b/src/main/java/eu/bitwalker/useragentutils/Browser.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
@@ -97,15 +97,20 @@ public enum Browser {
/**
* 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]*)))" ),
+ EDGE( Manufacturer.MICROSOFT, null, 300, "Microsoft Edge", new String[] {"Edge"}, null, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, "(?:Edge\\/(([0-9]+)\\.([0-9]*)))"),
+ EDGE_MOBILE( Manufacturer.MICROSOFT, Browser.EDGE, 304, "Microsoft Edge Mobile", new String[] {"Mobile Safari"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.EDGE_HTML, null ),
+ EDGE_MOBILE12(Manufacturer.MICROSOFT, Browser.EDGE_MOBILE, 302, "Microsoft Edge Mobile 12", new String[] {"Mobile Safari", "Edge/12"}, null, BrowserType.MOBILE_BROWSER, RenderingEngine.EDGE_HTML, null ),
+ EDGE13( Manufacturer.MICROSOFT, Browser.EDGE, 303, "Microsoft Edge 13", new String[] {"Edge/13"}, new String[] {"Mobile"}, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, null ),
+ EDGE12( Manufacturer.MICROSOFT, Browser.EDGE, 301, "Microsoft Edge 12", new String[] {"Edge/12"}, new String[] {"Mobile"}, BrowserType.WEB_BROWSER, RenderingEngine.EDGE_HTML, null ),
/**
* 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]+)?)" ),
+ CHROME49( Manufacturer.GOOGLE, Browser.CHROME, 55, "Chrome 49", new String[] { "Chrome/49" }, new String[] { "OPR/", "Web Preview", "Vivaldi" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla
+ CHROME48( Manufacturer.GOOGLE, Browser.CHROME, 53, "Chrome 48", new String[] { "Chrome/48" }, new String[] { "OPR/", "Web Preview", "Vivaldi" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla
+ CHROME47( Manufacturer.GOOGLE, Browser.CHROME, 52, "Chrome 47", new String[] { "Chrome/47" }, new String[] { "OPR/", "Web Preview", "Vivaldi" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before Mozilla
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
@@ -148,9 +153,64 @@ public enum Browser {
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
+ FIREFOX( Manufacturer.MOZILLA, null, 10, "Firefox", new String[] { "Firefox", "FxiOS" }, new String[] {"camino", "flock", "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
+ /**
+ * Firefox for iOS devices. This Firefox version is using webkit instead of gecko rendering engine.
+ */
+ FIREFOX_MOBILE_IOS(Manufacturer.MOZILLA, FIREFOX_MOBILE, 224, "Firefox Mobile (iOS)", new String[] { "FxiOS" }, null, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, null ),
+ FIREFOX45( Manufacturer.MOZILLA, Browser.FIREFOX, 222, "Firefox 45", new String[] { "Firefox/45" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX44( Manufacturer.MOZILLA, Browser.FIREFOX, 221, "Firefox 44", new String[] { "Firefox/44" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX43( Manufacturer.MOZILLA, Browser.FIREFOX, 220, "Firefox 43", new String[] { "Firefox/43" }, null, BrowserType.WEB_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
+ 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
+ FIREFOX19( Manufacturer.MOZILLA, Browser.FIREFOX, 100, "Firefox 19", new String[] { "Firefox/19" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX18( Manufacturer.MOZILLA, Browser.FIREFOX, 99, "Firefox 18", new String[] { "Firefox/18" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX17( Manufacturer.MOZILLA, Browser.FIREFOX, 98, "Firefox 17", new String[] { "Firefox/17" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX16( Manufacturer.MOZILLA, Browser.FIREFOX, 97, "Firefox 16", new String[] { "Firefox/16" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX15( Manufacturer.MOZILLA, Browser.FIREFOX, 96, "Firefox 15", new String[] { "Firefox/15" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX14( Manufacturer.MOZILLA, Browser.FIREFOX, 95, "Firefox 14", new String[] { "Firefox/14" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX13( Manufacturer.MOZILLA, Browser.FIREFOX, 94, "Firefox 13", new String[] { "Firefox/13" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX12( Manufacturer.MOZILLA, Browser.FIREFOX, 93, "Firefox 12", new String[] { "Firefox/12" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX11( Manufacturer.MOZILLA, Browser.FIREFOX, 92, "Firefox 11", new String[] { "Firefox/11" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX10( Manufacturer.MOZILLA, Browser.FIREFOX, 91, "Firefox 10", new String[] { "Firefox/10" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX9( Manufacturer.MOZILLA, Browser.FIREFOX, 90, "Firefox 9", new String[] { "Firefox/9" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX8( Manufacturer.MOZILLA, Browser.FIREFOX, 80, "Firefox 8", new String[] { "Firefox/8" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX7( Manufacturer.MOZILLA, Browser.FIREFOX, 70, "Firefox 7", new String[] { "Firefox/7" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX6( Manufacturer.MOZILLA, Browser.FIREFOX, 60, "Firefox 6", new String[] { "Firefox/6." }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX5( Manufacturer.MOZILLA, Browser.FIREFOX, 50, "Firefox 5", new String[] { "Firefox/5." }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX4( Manufacturer.MOZILLA, Browser.FIREFOX, 40, "Firefox 4", new String[] { "Firefox/4." }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
+ FIREFOX3( Manufacturer.MOZILLA, Browser.FIREFOX, 30, "Firefox 3", new String[] { "Firefox/3." }, new String[] {"Camino", "Flock", "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[]{"Camino", "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
+
+
+ SAFARI( Manufacturer.APPLE, null, 1, "Safari", new String[] { "Safari" }, new String[] { "bot", "preview", "OPR/", "Coast/", "Vivaldi","CFNetwork", "Phantom" }, 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),
- MOBILE_SAFARI( Manufacturer.APPLE, Browser.SAFARI, 2, "Mobile Safari", new String[] { "Mobile Safari","Mobile/" }, new String[] { "bot", "preview", "OPR/", "Coast/", "Vivaldi", "CFNetwork" }, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, null ), // before Safari
+ MOBILE_SAFARI( Manufacturer.APPLE, Browser.SAFARI, 2, "Mobile Safari", new String[] { "Mobile Safari","Mobile/" }, new String[] { "bot", "preview", "OPR/", "Coast/", "Vivaldi", "CFNetwork", "FxiOS" }, BrowserType.MOBILE_BROWSER, RenderingEngine.WEBKIT, null ), // before Safari
SILK( Manufacturer.AMAZON, Browser.SAFARI, 15, "Silk", new String[] { "Silk/" }, null, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, "Silk\\/(([0-9]+)\\.?([\\w]+)?(\\.[\\w]+)?(\\-[\\w]+)?)" ), // http://en.wikipedia.org/wiki/Amazon_Silk
SAFARI9( Manufacturer.APPLE, Browser.SAFARI, 9, "Safari 9", new String[] { "Version/9" }, new String[] { "Applebot" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before AppleWebKit
SAFARI8( Manufacturer.APPLE, Browser.SAFARI, 8, "Safari 8", new String[] { "Version/8" }, new String[] { "Applebot" }, BrowserType.WEB_BROWSER, RenderingEngine.WEBKIT, null ), // before AppleWebKit
@@ -197,7 +257,7 @@ public enum Browser {
/*
* 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_WEB_KIT( Manufacturer.APPLE, null, 50, "Apple WebKit", new String[] { "AppleWebKit" }, new String[] { "bot", "preview", "OPR/", "Coast/", "Vivaldi", "Phantom" }, 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
@@ -209,53 +269,6 @@ public enum Browser {
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
- 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
- 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
- FIREFOX19( Manufacturer.MOZILLA, Browser.FIREFOX, 100, "Firefox 19", new String[] { "Firefox/19" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX18( Manufacturer.MOZILLA, Browser.FIREFOX, 99, "Firefox 18", new String[] { "Firefox/18" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX17( Manufacturer.MOZILLA, Browser.FIREFOX, 98, "Firefox 17", new String[] { "Firefox/17" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX16( Manufacturer.MOZILLA, Browser.FIREFOX, 97, "Firefox 16", new String[] { "Firefox/16" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX15( Manufacturer.MOZILLA, Browser.FIREFOX, 96, "Firefox 15", new String[] { "Firefox/15" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX14( Manufacturer.MOZILLA, Browser.FIREFOX, 95, "Firefox 14", new String[] { "Firefox/14" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX13( Manufacturer.MOZILLA, Browser.FIREFOX, 94, "Firefox 13", new String[] { "Firefox/13" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX12( Manufacturer.MOZILLA, Browser.FIREFOX, 93, "Firefox 12", new String[] { "Firefox/12" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX11( Manufacturer.MOZILLA, Browser.FIREFOX, 92, "Firefox 11", new String[] { "Firefox/11" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX10( Manufacturer.MOZILLA, Browser.FIREFOX, 91, "Firefox 10", new String[] { "Firefox/10" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX9( Manufacturer.MOZILLA, Browser.FIREFOX, 90, "Firefox 9", new String[] { "Firefox/9" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX8( Manufacturer.MOZILLA, Browser.FIREFOX, 80, "Firefox 8", new String[] { "Firefox/8" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX7( Manufacturer.MOZILLA, Browser.FIREFOX, 70, "Firefox 7", new String[] { "Firefox/7" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX6( Manufacturer.MOZILLA, Browser.FIREFOX, 60, "Firefox 6", new String[] { "Firefox/6" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX5( Manufacturer.MOZILLA, Browser.FIREFOX, 50, "Firefox 5", new String[] { "Firefox/5" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- FIREFOX4( Manufacturer.MOZILLA, Browser.FIREFOX, 40, "Firefox 4", new String[] { "Firefox/4" }, null, BrowserType.WEB_BROWSER, RenderingEngine.GECKO, null ), // using Gecko Engine
- 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.
*/
@@ -273,7 +286,7 @@ public enum Browser {
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( 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"}, 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
diff --git a/src/main/java/eu/bitwalker/useragentutils/BrowserType.java b/src/main/java/eu/bitwalker/useragentutils/BrowserType.java
index 497b2749..8009e978 100644
--- a/src/main/java/eu/bitwalker/useragentutils/BrowserType.java
+++ b/src/main/java/eu/bitwalker/useragentutils/BrowserType.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/main/java/eu/bitwalker/useragentutils/DeviceType.java b/src/main/java/eu/bitwalker/useragentutils/DeviceType.java
index f8f87c94..b212cc25 100644
--- a/src/main/java/eu/bitwalker/useragentutils/DeviceType.java
+++ b/src/main/java/eu/bitwalker/useragentutils/DeviceType.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/main/java/eu/bitwalker/useragentutils/Manufacturer.java b/src/main/java/eu/bitwalker/useragentutils/Manufacturer.java
index c82ff626..39d86a8f 100644
--- a/src/main/java/eu/bitwalker/useragentutils/Manufacturer.java
+++ b/src/main/java/eu/bitwalker/useragentutils/Manufacturer.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/main/java/eu/bitwalker/useragentutils/OperatingSystem.java b/src/main/java/eu/bitwalker/useragentutils/OperatingSystem.java
index a9626004..f8990129 100644
--- a/src/main/java/eu/bitwalker/useragentutils/OperatingSystem.java
+++ b/src/main/java/eu/bitwalker/useragentutils/OperatingSystem.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
@@ -68,8 +68,10 @@ public enum OperatingSystem {
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" }, 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 ),
+ ANDROID6( Manufacturer.GOOGLE,OperatingSystem.ANDROID, 6, "Android 6.x", new String[] { "Android 6", "Android-6" }, new String[] { "glass" }, DeviceType.MOBILE, null ),
+ ANDROID6_TABLET(Manufacturer.GOOGLE,OperatingSystem.ANDROID6, 60, "Android 6.x Tablet", new String[] { "Android 6", "Android-6"}, new String[] { "mobile", "glass"}, DeviceType.TABLET, 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", "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 ),
@@ -261,7 +263,7 @@ public String getName() {
/*
* Shortcut to check of an operating system is a mobile device.
- * Left in here for backwards compatibility. Use .getDeciceType() instead.
+ * Left in here for backwards compatibility. Use .getDeviceType() instead.
*/
@Deprecated
public boolean isMobileDevice() {
diff --git a/src/main/java/eu/bitwalker/useragentutils/RenderingEngine.java b/src/main/java/eu/bitwalker/useragentutils/RenderingEngine.java
index 845e4f3a..d9bb43ec 100644
--- a/src/main/java/eu/bitwalker/useragentutils/RenderingEngine.java
+++ b/src/main/java/eu/bitwalker/useragentutils/RenderingEngine.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/main/java/eu/bitwalker/useragentutils/UserAgent.java b/src/main/java/eu/bitwalker/useragentutils/UserAgent.java
index 9a683e09..a3699b25 100644
--- a/src/main/java/eu/bitwalker/useragentutils/UserAgent.java
+++ b/src/main/java/eu/bitwalker/useragentutils/UserAgent.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/main/java/eu/bitwalker/useragentutils/Version.java b/src/main/java/eu/bitwalker/useragentutils/Version.java
index 9e4bb7ac..6d5b695c 100644
--- a/src/main/java/eu/bitwalker/useragentutils/Version.java
+++ b/src/main/java/eu/bitwalker/useragentutils/Version.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/test/java/eu/bitwalker/useragentutils/ApplicationTest.java b/src/test/java/eu/bitwalker/useragentutils/ApplicationTest.java
index c3989d61..21e97b42 100644
--- a/src/test/java/eu/bitwalker/useragentutils/ApplicationTest.java
+++ b/src/test/java/eu/bitwalker/useragentutils/ApplicationTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+ * Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
diff --git a/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java b/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java
index 78ce0a46..751bbe50 100644
--- a/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java
+++ b/src/test/java/eu/bitwalker/useragentutils/BrowserTest.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
@@ -87,11 +87,15 @@ public class BrowserTest {
"Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; ASU2JS; rv:11.0) like Gecko", //64bit Win8
};
- String[] edgeClients = new String[] {
+ String[] edge12Clients = 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",
"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10532"
};
+
+ String [] edge13Clients = new String[] {
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586"
+ };
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"
@@ -275,7 +279,7 @@ public class BrowserTest {
String[] firefox6 = new String[] {
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0a2) Gecko/20110612 Firefox/6.0a2"
};
-
+
String[] firefox19 = new String[] {
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0"
};
@@ -297,13 +301,21 @@ public class BrowserTest {
};
String[] firefoxMobile = {
- "Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0"
+ "Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0",
};
+ String[] firefoxMobileForIos = {
+ "Mozilla/5.0 (iPad; CPU OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.2 Mobile/13C75 Safari/601.1.46"
+ };
+
String[] firefoxMobile23 = {
"Mozilla/5.0 (Android; Mobile; rv:23.0) Gecko/23.0 Firefox/23.0"
};
+ String[] futureFirefoxVersion = new String[] {
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:28.0) Gecko/20100101 Firefox/60.0"
+ };
+
String[] safari = {
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3",
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-gb) AppleWebKit/523.10.6 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6"
@@ -612,7 +624,8 @@ public void testParseUserAgentString() {
testAgents(ie9clients, Browser.IE9);
testAgents(ie10clients, Browser.IE10);
testAgents(ie11clients, Browser.IE11);
- testAgents(edgeClients, Browser.EDGE12);
+ testAgents(edge12Clients, Browser.EDGE12);
+ testAgents(edge13Clients, Browser.EDGE13);
testAgents(edgeMobileClients, Browser.EDGE_MOBILE12);
testAgents(ieTooOld, Browser.IE);
testAgents(outlook2007, Browser.OUTLOOK2007);
@@ -654,7 +667,9 @@ public void testParseUserAgentString() {
testAgents(firefox25, Browser.FIREFOX25);
testAgents(firefox3mobile, Browser.FIREFOX3MOBILE);
testAgents(firefoxMobile, Browser.FIREFOX_MOBILE);
+ testAgents(firefoxMobileForIos, Browser.FIREFOX_MOBILE_IOS);
testAgents(firefoxMobile23, Browser.FIREFOX_MOBILE23);
+ testAgents(futureFirefoxVersion, Browser.FIREFOX);
testAgents(safari, Browser.SAFARI);
testAgents(dolfin, Browser.DOLFIN2);
testAgents(safari8, Browser.SAFARI8);
@@ -704,7 +719,7 @@ public void testParseUserAgentString() {
@Test
public void testCustomUserAgentParsing() {
// Test limited to the big browser families. As Camino can not be detected any longer, the second best match is Firefox3 (a child of Firefox).
- for (String agentString : camino2) {
+ for (String agentString : firefox3) {
assertEquals(Browser.FIREFOX3, Browser.parseUserAgentString(agentString,Arrays.asList(Browser.IE,Browser.CHROME, Browser.APPLE_WEB_KIT, Browser.FIREFOX)));
}
// When there is no match in the given set, return UNKNOWN
diff --git a/src/test/java/eu/bitwalker/useragentutils/ManufacturerTest.java b/src/test/java/eu/bitwalker/useragentutils/ManufacturerTest.java
index 1d1ccacd..c39f418a 100644
--- a/src/test/java/eu/bitwalker/useragentutils/ManufacturerTest.java
+++ b/src/test/java/eu/bitwalker/useragentutils/ManufacturerTest.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
@@ -44,8 +44,6 @@
import org.junit.Test;
-import eu.bitwalker.useragentutils.Application;
-
/**
* Test class for application detection.
* @author harald
diff --git a/src/test/java/eu/bitwalker/useragentutils/OperatingSystemTest.java b/src/test/java/eu/bitwalker/useragentutils/OperatingSystemTest.java
index 2554061d..c7c1f3fb 100644
--- a/src/test/java/eu/bitwalker/useragentutils/OperatingSystemTest.java
+++ b/src/test/java/eu/bitwalker/useragentutils/OperatingSystemTest.java
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2014, Harald Walker (bitwalker.eu) and contributing developers
+* Copyright (c) 2008-2016, Harald Walker (bitwalker.eu) and contributing developers
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
@@ -255,9 +255,14 @@ public class OperatingSystemTest {
//"Dalvik/2.0.0 (Linux; U; Android 4.4.4; Nexus 5 Build/KTU84P) evme/2.0.2533" // disabled as it is not clear yet, which client sends this incomplete user-agent
};
- String[] android5g = {
- "Mozilla/5.0 (Linux; Android 5.0; Nexus 4 Build/LRX21L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36"
- };
+ String[] android5g = {
+ "Mozilla/5.0 (Linux; Android 5.0; Nexus 4 Build/LRX21L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36"
+ };
+
+ String[] android6g = {
+ "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36", // Nexus 5 WebView
+ "Mozilla/5.0 (Linux; Android 6.0; Nexus 5X Build/MDB08L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36" // Nexus 5x
+ };
String[] android2_tablet= {
"Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
@@ -288,6 +293,10 @@ public class OperatingSystemTest {
String[] android5_tablet = {
"Mozilla/5.0 (Linux; Android 5.0; Nexus 9 Build/LRX21L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Safari/537.36" // Nexus 9
};
+
+ String[] android6_tablet = {
+ "Mozilla/5.0 (Linux; Android 6.0; Nexus 9 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Safari/537.36" // Nexus 9
+ };
String[] androidMobile = {
"Mozilla/5.0 (Android; Mobile; rv:23.0) Gecko/23.0 Firefox/23.0" // no OS version information in UA-string
@@ -447,12 +456,14 @@ public void testParseUserAgentString() {
testAgents(android1g, OperatingSystem.ANDROID1);
testAgents(android2g, OperatingSystem.ANDROID2);
testAgents(android4g, OperatingSystem.ANDROID4);
- testAgents(android5g, OperatingSystem.ANDROID5);
+ testAgents(android5g, OperatingSystem.ANDROID5);
+ testAgents(android6g, OperatingSystem.ANDROID6);
testAgents(android2_tablet, OperatingSystem.ANDROID2_TABLET);
testAgents(android3_tablet, OperatingSystem.ANDROID3_TABLET);
testAgents(android4_tablet, OperatingSystem.ANDROID4_TABLET);
testAgents(android4_wearable, OperatingSystem.ANDROID4_WEARABLE);
testAgents(android5_tablet, OperatingSystem.ANDROID5_TABLET);
+ testAgents(android6_tablet, OperatingSystem.ANDROID6_TABLET);
testAgents(androidMobile, OperatingSystem.ANDROID_MOBILE);
testAgents(androidTablet, OperatingSystem.ANDROID_TABLET);
testAgents(chromeOS, OperatingSystem.CHROME_OS);
diff --git a/src/test/java/eu/bitwalker/useragentutils/browser/BotParameterizedTest.java b/src/test/java/eu/bitwalker/useragentutils/browser/BotParameterizedTest.java
index ef6861ac..25e55c41 100644
--- a/src/test/java/eu/bitwalker/useragentutils/browser/BotParameterizedTest.java
+++ b/src/test/java/eu/bitwalker/useragentutils/browser/BotParameterizedTest.java
@@ -76,6 +76,8 @@ public static Collection testData() {
Browser.BOT, null, OperatingSystem.UNKNOWN },
{ "Phantom.js bot",
Browser.BOT, null, OperatingSystem.UNKNOWN },
+ { "Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.0.1-development Safari/538.1",
+ Browser.BOT, null, OperatingSystem.UNKNOWN }
});
}
-}
\ No newline at end of file
+}
diff --git a/src/test/java/eu/bitwalker/useragentutils/browser/ChromeParameterizedTest.java b/src/test/java/eu/bitwalker/useragentutils/browser/ChromeParameterizedTest.java
index 05fd4579..aaa0337f 100644
--- a/src/test/java/eu/bitwalker/useragentutils/browser/ChromeParameterizedTest.java
+++ b/src/test/java/eu/bitwalker/useragentutils/browser/ChromeParameterizedTest.java
@@ -21,57 +21,49 @@ public ChromeParameterizedTest(String userAgentValue,
@Parameters
public static Collection testData() {
return asList(new Object[][] {
- // chrome
{
"Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.310.0 Safari/532.9",
Browser.CHROME, "5.0.310.0", OperatingSystem.WINDOWS_XP },
{
"Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.309.0 Safari/532.9",
Browser.CHROME, "5.0.309.0", OperatingSystem.LINUX },
- // chrome8
{
"Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.558.0 Safari/534.10",
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.UBUNTU },
- // chrome9
-
{
"Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML,like Gecko) Chrome/9.1.0.0 Safari/540.0",
Browser.CHROME9, "9.1.0.0", OperatingSystem.LINUX },
{
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.600.0 Safari/534.14",
Browser.CHROME9, "9.0.600.0", OperatingSystem.WINDOWS_XP },
- // 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.UBUNTU },
- // chrome11
{
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.697.0 Safari/534.24",
Browser.CHROME11, "11.0.697.0", OperatingSystem.WINDOWS_7 },
- // chrome12
{
"Mozilla/5.0 (X11; CrOS i686 12.0.742.91) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.93 Safari/534.30",
Browser.CHROME12, "12.0.742.93", OperatingSystem.CHROME_OS },
- // chrome13
{
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1",
Browser.CHROME13, "13.0.782.41", OperatingSystem.MAC_OS_X },
- // chrome14
{
"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.815.0 Safari/535.1",
Browser.CHROME14, "14.0.815.0", OperatingSystem.WINDOWS_XP },
- // chrome29
{
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36",
Browser.CHROME29, "29.0.1547.65", OperatingSystem.MAC_OS_X },
{
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36",
- Browser.CHROME43, "43.0.2357.124", OperatingSystem.MAC_OS_X
- }
-
+ Browser.CHROME43, "43.0.2357.124", OperatingSystem.MAC_OS_X },
+ {
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36",
+ Browser.CHROME47, "47.0.2526.73", OperatingSystem.MAC_OS_X
+ }
});
}
}
diff --git a/src/test/java/eu/bitwalker/useragentutils/browser/FirefoxParameterizedTest.java b/src/test/java/eu/bitwalker/useragentutils/browser/FirefoxParameterizedTest.java
index 6c3ae531..1a1fd726 100644
--- a/src/test/java/eu/bitwalker/useragentutils/browser/FirefoxParameterizedTest.java
+++ b/src/test/java/eu/bitwalker/useragentutils/browser/FirefoxParameterizedTest.java
@@ -56,6 +56,9 @@ public static Collection testData() {
{
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:25.0) Gecko/20100101 Firefox/25.0",
Browser.FIREFOX25, "25.0", OperatingSystem.MAC_OS_X },
+ {
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0",
+ Browser.FIREFOX43, "43.0", OperatingSystem.MAC_OS_X },
// firefox3mobile
{
"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",