@@ -85,6 +85,7 @@ public class BrowserDetailsTest extends TestCase {
85
85
private static final String ANDROID_GOOGLE_NEXUS_2_2 = "Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" ;
86
86
private static final String ANDROID_MOTOROLA_3_0 = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13" ;
87
87
private static final String ANDROID_GALAXY_NEXUS_4_0_4_CHROME = "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19" ;
88
+ private static final String ANDROID_CALLPOD_KEEPER = "callpod keeper for android 1.0 (10.1.1/240) dalvik/2.1.0 (linux; u; android 6.0; lg-v495 build/mra58k)" ;
88
89
89
90
private static final String EDGE_12_WINDOWS_10 = "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.10240" ;
90
91
@@ -110,6 +111,8 @@ public class BrowserDetailsTest extends TestCase {
110
111
// Web crawlers and bots
111
112
private static final String BYTE_SPIDER = "mozilla/5.0 (linux; android 5.0) applewebkit/537.36 (khtml, like gecko) mobile safari/537.36 (compatible; bytespider; spider-feedback@bytedance.com)" ;
112
113
private static final String DUCK_DUCK_BOT = "ddg_android/5.169.0 (com.duckduckgo.mobile.android; android api 33)" ;
114
+ private static final String DUCK_DUCK_BOT_2 = "Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.106 Mobile DuckDuckGo/5 Safari/537.36" ;
115
+ private static final String DUCK_DUCK_BOT_3 = "DuckDuckGo/0.26.3 CFNetwork/1331.0.7 Darwin/21.4.0" ;
113
116
114
117
public void testSafari3 () {
115
118
BrowserDetails bd = new BrowserDetails (SAFARI3_WINDOWS );
@@ -236,6 +239,14 @@ public void testAndroid40Chrome() {
236
239
237
240
}
238
241
242
+ public void testAndroidCallpodKeeper () {
243
+ BrowserDetails bd = new BrowserDetails (ANDROID_CALLPOD_KEEPER );
244
+ assertOSMajorVersion (bd , 6 );
245
+ assertOSMinorVersion (bd , 0 );
246
+ assertEngineVersion (bd , -1 );
247
+
248
+ }
249
+
239
250
private void assertOSMajorVersion (BrowserDetails bd , int i ) {
240
251
assertEquals (i , bd .getOperatingSystemMajorVersion ());
241
252
}
@@ -740,7 +751,7 @@ public void testByteSpiderWebCrawler() {
740
751
assertAndroid (bd , 5 , 0 );
741
752
}
742
753
743
- public void testDuckDuckBot () {
754
+ public void testDuckDuckBot1 () {
744
755
BrowserDetails bd = new BrowserDetails (DUCK_DUCK_BOT );
745
756
assertUnspecifiedBrowser (bd );
746
757
assertBrowserMajorVersion (bd , -1 );
@@ -749,6 +760,34 @@ public void testDuckDuckBot() {
749
760
assertAndroid (bd , 5 , 169 );
750
761
}
751
762
763
+ public void testDuckDuckBot2 () {
764
+ BrowserDetails bd = new BrowserDetails (DUCK_DUCK_BOT_2 );
765
+ assertBrowserMajorVersion (bd , 130 );
766
+ assertBrowserMinorVersion (bd , 0 );
767
+ assertEngineVersion (bd , 537.36f );
768
+ assertAndroid (bd , 14 , -1 );
769
+ }
770
+
771
+ public void testDuckDuckBot3 () {
772
+ BrowserDetails bd = new BrowserDetails (DUCK_DUCK_BOT_3 );
773
+ assertUnspecifiedBrowser (bd );
774
+ assertBrowserMajorVersion (bd , -1 );
775
+ assertBrowserMinorVersion (bd , -1 );
776
+ assertEngineVersion (bd , -1 );
777
+
778
+ bd = new BrowserDetails ("DuckDuckGo" );
779
+ assertUnspecifiedBrowser (bd );
780
+ assertBrowserMajorVersion (bd , -1 );
781
+ assertBrowserMinorVersion (bd , -1 );
782
+ assertEngineVersion (bd , -1 );
783
+
784
+ bd = new BrowserDetails ("DuckDuckGo/5" );
785
+ assertUnspecifiedBrowser (bd );
786
+ assertBrowserMajorVersion (bd , -1 );
787
+ assertBrowserMinorVersion (bd , -1 );
788
+ assertEngineVersion (bd , -1 );
789
+ }
790
+
752
791
private static UserAgent [] getUserAgentDetails (String agentFile )
753
792
throws IOException {
754
793
String userAgents = IOUtils .toString (
0 commit comments