You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TestVBrowserDetailsUserAgentParser.java 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. package com.vaadin.terminal.gwt.client;
  2. import junit.framework.TestCase;
  3. public class TestVBrowserDetailsUserAgentParser extends TestCase {
  4. private static final String FIREFOX30_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6";
  5. private static final String FIREFOX30_LINUX = "Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.0.12) Gecko/2009070811 Ubuntu/9.04 (jaunty) Firefox/3.0.12";
  6. private static final String FIREFOX35_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 (.NET CLR 3.5.30729) FirePHP/0.4";
  7. private static final String FIREFOX36_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)";
  8. private static final String FIREFOX36B_MAC = "UAString mozilla/5.0 (macintosh; u; intel mac os x 10.6; en-us; rv:1.9.2) gecko/20100115 firefox/3.6";
  9. private static final String FIREFOX_30B5_MAC = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9b5) Gecko/2008032619 Firefox/3.0b5";
  10. private static final String FIREFOX_40B7_WIN = "Mozilla/5.0 (Windows NT 5.1; rv:2.0b7) Gecko/20100101 Firefox/4.0b7";
  11. private static final String FIREFOX_40B11_WIN = "Mozilla/5.0 (Windows NT 5.1; rv:2.0b11) Gecko/20100101 Firefox/4.0b11";
  12. private static final String KONQUEROR_LINUX = "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Exabot-Thumbnails)";
  13. private static final String IE6_WINDOWS = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
  14. private static final String IE7_WINDOWS = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
  15. private static final String IE8_WINDOWS = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)";
  16. private static final String IE8_IN_IE7_MODE_WINDOWS = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)";
  17. private static final String IE9_BETA_IN_IE7_MODE_WINDOWS_7 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)";
  18. private static final String IE9_BETA_IN_IE8_MODE_WINDOWS_7 = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)";
  19. private static final String IE9_BETA_WINDOWS_7 = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
  20. // "Version/" was added in 10.00
  21. private static final String OPERA964_WINDOWS = "Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1";
  22. private static final String OPERA1010_WINDOWS = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.10";
  23. private static final String OPERA1050_WINDOWS = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.5.22 Version/10.50";
  24. private static final String CHROME3_MAC = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.198 Safari/532.0";
  25. private static final String CHROME4_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.89 Safari/532.5";
  26. private static final String SAFARI3_WINDOWS = "Mozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.29";
  27. private static final String SAFARI4_MAC = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7";
  28. private static final String IPHONE_IOS_5_1 = "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3";
  29. private static final String IPAD_IOS_4_3_1 = "Mozilla/5.0 (iPad; U; CPU OS 4_3_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5";
  30. public void testSafari3() {
  31. VBrowserDetails bd = new VBrowserDetails(SAFARI3_WINDOWS);
  32. assertWebKit(bd);
  33. assertSafari(bd);
  34. assertBrowserMajorVersion(bd, 3);
  35. assertBrowserMinorVersion(bd, 2);
  36. assertEngineVersion(bd, 525.0f);
  37. assertWindows(bd);
  38. }
  39. public void testSafari4() {
  40. VBrowserDetails bd = new VBrowserDetails(SAFARI4_MAC);
  41. assertWebKit(bd);
  42. assertSafari(bd);
  43. assertBrowserMajorVersion(bd, 4);
  44. assertBrowserMinorVersion(bd, 0);
  45. assertEngineVersion(bd, 531f);
  46. assertMacOSX(bd);
  47. }
  48. public void testIPhoneIOS5() {
  49. VBrowserDetails bd = new VBrowserDetails(IPHONE_IOS_5_1);
  50. assertWebKit(bd);
  51. assertSafari(bd);
  52. assertBrowserMajorVersion(bd, 5);
  53. assertBrowserMinorVersion(bd, 1);
  54. assertEngineVersion(bd, 534f);
  55. assertMacOSX(bd);
  56. assertIOS(bd);
  57. }
  58. public void testIPadIOS4() {
  59. VBrowserDetails bd = new VBrowserDetails(IPAD_IOS_4_3_1);
  60. assertWebKit(bd);
  61. assertSafari(bd);
  62. assertBrowserMajorVersion(bd, 5);
  63. assertBrowserMinorVersion(bd, 0);
  64. assertEngineVersion(bd, 533f);
  65. assertMacOSX(bd);
  66. assertIOS(bd);
  67. }
  68. public void testChrome3() {
  69. VBrowserDetails bd = new VBrowserDetails(CHROME3_MAC);
  70. assertWebKit(bd);
  71. assertChrome(bd);
  72. assertBrowserMajorVersion(bd, 3);
  73. assertBrowserMinorVersion(bd, 0);
  74. assertEngineVersion(bd, 532.0f);
  75. assertMacOSX(bd);
  76. }
  77. public void testChrome4() {
  78. VBrowserDetails bd = new VBrowserDetails(CHROME4_WINDOWS);
  79. assertWebKit(bd);
  80. assertChrome(bd);
  81. assertBrowserMajorVersion(bd, 4);
  82. assertBrowserMinorVersion(bd, 0);
  83. assertEngineVersion(bd, 532f);
  84. assertWindows(bd);
  85. }
  86. public void testFirefox3() {
  87. VBrowserDetails bd = new VBrowserDetails(FIREFOX30_WINDOWS);
  88. assertGecko(bd);
  89. assertFirefox(bd);
  90. assertBrowserMajorVersion(bd, 3);
  91. assertBrowserMinorVersion(bd, 0);
  92. assertEngineVersion(bd, 1.9f);
  93. assertWindows(bd);
  94. bd = new VBrowserDetails(FIREFOX30_LINUX);
  95. assertGecko(bd);
  96. assertFirefox(bd);
  97. assertBrowserMajorVersion(bd, 3);
  98. assertBrowserMinorVersion(bd, 0);
  99. assertEngineVersion(bd, 1.9f);
  100. assertLinux(bd);
  101. }
  102. public void testFirefox35() {
  103. VBrowserDetails bd = new VBrowserDetails(FIREFOX35_WINDOWS);
  104. assertGecko(bd);
  105. assertFirefox(bd);
  106. assertBrowserMajorVersion(bd, 3);
  107. assertBrowserMinorVersion(bd, 5);
  108. assertEngineVersion(bd, 1.9f);
  109. assertWindows(bd);
  110. }
  111. public void testFirefox36() {
  112. VBrowserDetails bd = new VBrowserDetails(FIREFOX36_WINDOWS);
  113. assertGecko(bd);
  114. assertFirefox(bd);
  115. assertBrowserMajorVersion(bd, 3);
  116. assertBrowserMinorVersion(bd, 6);
  117. assertEngineVersion(bd, 1.9f);
  118. assertWindows(bd);
  119. }
  120. public void testFirefox30b5() {
  121. VBrowserDetails bd = new VBrowserDetails(FIREFOX_30B5_MAC);
  122. assertGecko(bd);
  123. assertFirefox(bd);
  124. assertBrowserMajorVersion(bd, 3);
  125. assertBrowserMinorVersion(bd, 0);
  126. assertEngineVersion(bd, 1.9f);
  127. assertMacOSX(bd);
  128. }
  129. public void testFirefox40b11() {
  130. VBrowserDetails bd = new VBrowserDetails(FIREFOX_40B11_WIN);
  131. assertGecko(bd);
  132. assertFirefox(bd);
  133. assertBrowserMajorVersion(bd, 4);
  134. assertBrowserMinorVersion(bd, 0);
  135. assertEngineVersion(bd, 2.0f);
  136. assertWindows(bd);
  137. }
  138. public void testFirefox40b7() {
  139. VBrowserDetails bd = new VBrowserDetails(FIREFOX_40B7_WIN);
  140. assertGecko(bd);
  141. assertFirefox(bd);
  142. assertBrowserMajorVersion(bd, 4);
  143. assertBrowserMinorVersion(bd, 0);
  144. assertEngineVersion(bd, 2.0f);
  145. assertWindows(bd);
  146. }
  147. public void testKonquerorLinux() {
  148. // Just ensure detection does not crash
  149. VBrowserDetails bd = new VBrowserDetails(KONQUEROR_LINUX);
  150. assertLinux(bd);
  151. }
  152. public void testFirefox36b() {
  153. VBrowserDetails bd = new VBrowserDetails(FIREFOX36B_MAC);
  154. assertGecko(bd);
  155. assertFirefox(bd);
  156. assertBrowserMajorVersion(bd, 3);
  157. assertBrowserMinorVersion(bd, 6);
  158. assertEngineVersion(bd, 1.9f);
  159. assertMacOSX(bd);
  160. }
  161. public void testOpera964() {
  162. VBrowserDetails bd = new VBrowserDetails(OPERA964_WINDOWS);
  163. assertPresto(bd);
  164. assertOpera(bd);
  165. assertBrowserMajorVersion(bd, 9);
  166. assertBrowserMinorVersion(bd, 64);
  167. assertWindows(bd);
  168. }
  169. public void testOpera1010() {
  170. VBrowserDetails bd = new VBrowserDetails(OPERA1010_WINDOWS);
  171. assertPresto(bd);
  172. assertOpera(bd);
  173. assertBrowserMajorVersion(bd, 10);
  174. assertBrowserMinorVersion(bd, 10);
  175. assertWindows(bd);
  176. }
  177. public void testOpera1050() {
  178. VBrowserDetails bd = new VBrowserDetails(OPERA1050_WINDOWS);
  179. assertPresto(bd);
  180. assertOpera(bd);
  181. assertBrowserMajorVersion(bd, 10);
  182. assertBrowserMinorVersion(bd, 50);
  183. assertWindows(bd);
  184. }
  185. public void testIE6() {
  186. VBrowserDetails bd = new VBrowserDetails(IE6_WINDOWS);
  187. // assertTrident(bd);
  188. assertIE(bd);
  189. assertBrowserMajorVersion(bd, 6);
  190. assertBrowserMinorVersion(bd, 0);
  191. assertWindows(bd);
  192. }
  193. public void testIE7() {
  194. VBrowserDetails bd = new VBrowserDetails(IE7_WINDOWS);
  195. // assertTrident(bd);
  196. assertIE(bd);
  197. assertBrowserMajorVersion(bd, 7);
  198. assertBrowserMinorVersion(bd, 0);
  199. assertWindows(bd);
  200. }
  201. public void testIE8() {
  202. VBrowserDetails bd = new VBrowserDetails(IE8_WINDOWS);
  203. // assertTrident(bd);
  204. assertIE(bd);
  205. assertBrowserMajorVersion(bd, 8);
  206. assertBrowserMinorVersion(bd, 0);
  207. assertWindows(bd);
  208. }
  209. public void testIE8CompatibilityMode() {
  210. VBrowserDetails bd = new VBrowserDetails(IE8_IN_IE7_MODE_WINDOWS);
  211. bd.setIEMode(7);
  212. // assertTrident(bd);
  213. assertIE(bd);
  214. assertBrowserMajorVersion(bd, 7);
  215. assertBrowserMinorVersion(bd, 0);
  216. assertWindows(bd);
  217. }
  218. public void testIE9() {
  219. VBrowserDetails bd = new VBrowserDetails(IE9_BETA_WINDOWS_7);
  220. // assertTrident(bd);
  221. assertIE(bd);
  222. assertBrowserMajorVersion(bd, 9);
  223. assertBrowserMinorVersion(bd, 0);
  224. assertWindows(bd);
  225. }
  226. public void testIE9InIE7CompatibilityMode() {
  227. VBrowserDetails bd = new VBrowserDetails(IE9_BETA_IN_IE7_MODE_WINDOWS_7);
  228. // bd.setIE8InCompatibilityMode();
  229. // assertTrident(bd);
  230. assertIE(bd);
  231. assertBrowserMajorVersion(bd, 7);
  232. assertBrowserMinorVersion(bd, 0);
  233. assertWindows(bd);
  234. }
  235. public void testIE9InIE8CompatibilityMode() {
  236. VBrowserDetails bd = new VBrowserDetails(IE9_BETA_IN_IE8_MODE_WINDOWS_7);
  237. // bd.setIE8InCompatibilityMode();
  238. // assertTrident(bd);
  239. assertIE(bd);
  240. assertBrowserMajorVersion(bd, 8);
  241. assertBrowserMinorVersion(bd, 0);
  242. assertWindows(bd);
  243. }
  244. /*
  245. * Helper methods below
  246. */
  247. private void assertEngineVersion(VBrowserDetails browserDetails,
  248. float version) {
  249. assertEquals(version, browserDetails.getBrowserEngineVersion());
  250. }
  251. private void assertBrowserMajorVersion(VBrowserDetails browserDetails,
  252. int version) {
  253. assertEquals(version, browserDetails.getBrowserMajorVersion());
  254. }
  255. private void assertBrowserMinorVersion(VBrowserDetails browserDetails,
  256. int version) {
  257. assertEquals(version, browserDetails.getBrowserMinorVersion());
  258. }
  259. private void assertGecko(VBrowserDetails browserDetails) {
  260. // Engine
  261. assertTrue(browserDetails.isGecko());
  262. assertFalse(browserDetails.isWebKit());
  263. assertFalse(browserDetails.isPresto());
  264. }
  265. private void assertPresto(VBrowserDetails browserDetails) {
  266. // Engine
  267. assertFalse(browserDetails.isGecko());
  268. assertFalse(browserDetails.isWebKit());
  269. assertTrue(browserDetails.isPresto());
  270. }
  271. private void assertWebKit(VBrowserDetails browserDetails) {
  272. // Engine
  273. assertFalse(browserDetails.isGecko());
  274. assertTrue(browserDetails.isWebKit());
  275. assertFalse(browserDetails.isPresto());
  276. }
  277. private void assertFirefox(VBrowserDetails browserDetails) {
  278. // Browser
  279. assertTrue(browserDetails.isFirefox());
  280. assertFalse(browserDetails.isChrome());
  281. assertFalse(browserDetails.isIE());
  282. assertFalse(browserDetails.isOpera());
  283. assertFalse(browserDetails.isSafari());
  284. }
  285. private void assertChrome(VBrowserDetails browserDetails) {
  286. // Browser
  287. assertFalse(browserDetails.isFirefox());
  288. assertTrue(browserDetails.isChrome());
  289. assertFalse(browserDetails.isIE());
  290. assertFalse(browserDetails.isOpera());
  291. assertFalse(browserDetails.isSafari());
  292. }
  293. private void assertIE(VBrowserDetails browserDetails) {
  294. // Browser
  295. assertFalse(browserDetails.isFirefox());
  296. assertFalse(browserDetails.isChrome());
  297. assertTrue(browserDetails.isIE());
  298. assertFalse(browserDetails.isOpera());
  299. assertFalse(browserDetails.isSafari());
  300. }
  301. private void assertOpera(VBrowserDetails browserDetails) {
  302. // Browser
  303. assertFalse(browserDetails.isFirefox());
  304. assertFalse(browserDetails.isChrome());
  305. assertFalse(browserDetails.isIE());
  306. assertTrue(browserDetails.isOpera());
  307. assertFalse(browserDetails.isSafari());
  308. }
  309. private void assertSafari(VBrowserDetails browserDetails) {
  310. // Browser
  311. assertFalse(browserDetails.isFirefox());
  312. assertFalse(browserDetails.isChrome());
  313. assertFalse(browserDetails.isIE());
  314. assertFalse(browserDetails.isOpera());
  315. assertTrue(browserDetails.isSafari());
  316. }
  317. private void assertMacOSX(VBrowserDetails browserDetails) {
  318. assertFalse(browserDetails.isLinux());
  319. assertFalse(browserDetails.isWindows());
  320. assertTrue(browserDetails.isMacOSX());
  321. assertFalse(browserDetails.isAndroid());
  322. }
  323. private void assertIOS(VBrowserDetails browserDetails) {
  324. assertFalse(browserDetails.isLinux());
  325. assertFalse(browserDetails.isWindows());
  326. assertTrue(browserDetails.isMacOSX());
  327. assertTrue(browserDetails.isIOS());
  328. assertFalse(browserDetails.isAndroid());
  329. }
  330. private void assertWindows(VBrowserDetails browserDetails) {
  331. assertFalse(browserDetails.isLinux());
  332. assertTrue(browserDetails.isWindows());
  333. assertFalse(browserDetails.isMacOSX());
  334. assertFalse(browserDetails.isIOS());
  335. assertFalse(browserDetails.isAndroid());
  336. }
  337. private void assertLinux(VBrowserDetails browserDetails) {
  338. assertTrue(browserDetails.isLinux());
  339. assertFalse(browserDetails.isWindows());
  340. assertFalse(browserDetails.isMacOSX());
  341. assertFalse(browserDetails.isIOS());
  342. }
  343. }