1 16 package com.google.gwt.junit.viewer.client; 17 18 33 public class BrowserInfo { 34 35 42 public static String getBrowser(String userAgent) { 43 44 userAgent = userAgent.toLowerCase(); 45 46 boolean isGecko = userAgent.indexOf("gecko") != -1 48 && userAgent.indexOf("safari") == -1; 49 boolean isAppleWebKit = userAgent.indexOf("applewebkit") != -1; 50 51 boolean isKonqueror = userAgent.indexOf("konqueror") != -1; 53 boolean isSafari = userAgent.indexOf("safari") != -1; 54 boolean isOmniweb = userAgent.indexOf("omniweb") != -1; 55 boolean isOpera = userAgent.indexOf("opera") != -1; 56 boolean isIcab = userAgent.indexOf("icab") != -1; 57 boolean isAol = userAgent.indexOf("aol") != -1; 58 boolean isIE = userAgent.indexOf("msie") != -1 && !isOpera 59 && (userAgent.indexOf("webtv") == -1); 60 boolean isMozilla = isGecko 61 && userAgent.indexOf("gecko/") + 14 == userAgent.length(); 62 boolean isFirefox = userAgent.indexOf("firefox/") != -1 63 || userAgent.indexOf("firebird/") != -1; 64 boolean isNS = isGecko ? userAgent.indexOf("netscape") != -1 65 : userAgent.indexOf("mozilla") != -1 && !isOpera && !isSafari 66 && userAgent.indexOf("spoofer") == -1 67 && userAgent.indexOf("compatible") == -1 68 && userAgent.indexOf("webtv") == -1 69 && userAgent.indexOf("hotjava") == -1; 70 71 boolean isIECompatible = userAgent.indexOf("msie") != -1 && !isIE; 73 boolean isNSCompatible = userAgent.indexOf("mozilla") != -1 && !isNS 74 && !isMozilla; 75 76 String geckoVersion = isGecko ? userAgent.substring( 78 userAgent.lastIndexOf("gecko/") + 6, 79 userAgent.lastIndexOf("gecko/") + 14) : "-1"; 80 String equivalentMozilla = isGecko 81 ? userAgent.substring(userAgent.indexOf("rv:") + 3) : "-1"; 82 String appleWebKitVersion = isAppleWebKit 83 ? userAgent.substring(userAgent.indexOf("applewebkit/") + 12) : "-1"; 84 85 String versionMinor = ""; 87 88 if (isGecko && !isMozilla) { 90 versionMinor = userAgent.substring(userAgent.indexOf("/", 91 userAgent.indexOf("gecko/") + 6) + 1); 92 } else if (isMozilla) { 93 versionMinor = userAgent.substring(userAgent.indexOf("rv:") + 3); 94 } else if (isIE) { 95 versionMinor = userAgent.substring(userAgent.indexOf("msie ") + 5); 96 } else if (isKonqueror) { 97 versionMinor = userAgent.substring(userAgent.indexOf("konqueror/") + 10); 98 } else if (isSafari) { 99 versionMinor = userAgent.substring(userAgent.lastIndexOf("safari/") + 7); 100 } else if (isOmniweb) { 101 versionMinor = userAgent.substring(userAgent.lastIndexOf("omniweb/") + 8); 102 } else if (isOpera) { 103 versionMinor = userAgent.substring(userAgent.indexOf("opera") + 6); 104 } else if (isIcab) { 105 versionMinor = userAgent.substring(userAgent.indexOf("icab") + 5); 106 } 107 108 String version = getVersion(versionMinor); 109 110 115 118 boolean isWin = userAgent.indexOf("win") != -1; 120 boolean isWin32 = isWin && userAgent.indexOf("95") != -1 121 || userAgent.indexOf("98") != -1 || userAgent.indexOf("nt") != -1 122 || userAgent.indexOf("win32") != -1 || userAgent.indexOf("32bit") != -1 123 || userAgent.indexOf("xp") != -1; 124 125 boolean isMac = userAgent.indexOf("mac") != -1; 126 boolean isUnix = userAgent.indexOf("unix") != -1 127 || userAgent.indexOf("sunos") != -1 || userAgent.indexOf("bsd") != -1 128 || userAgent.indexOf("x11") != -1; 129 130 boolean isLinux = userAgent.indexOf("linux") != -1; 131 132 151 152 String name = isGecko ? "Gecko" : isAppleWebKit ? "Apple WebKit" 153 : isKonqueror ? "Konqueror" : isSafari ? "Safari" : isOpera ? "Opera" 154 : isIE ? "IE" : isMozilla ? "Mozilla" : isFirefox ? "Firefox" 155 : isNS ? "Netscape" : ""; 156 157 name += " " 158 + version 159 + " on " 160 + (isWin ? "Windows" : isMac ? "Mac" : isUnix ? "Unix" : isLinux 161 ? "Linux" : "Unknown"); 162 163 return name; 164 } 165 166 private static String getVersion(String versionPlusCruft) { 169 for (int index = 0; index < versionPlusCruft.length(); ++index) { 170 char c = versionPlusCruft.charAt(index); 171 if (c != '.' && !Character.isDigit(c)) { 172 return versionPlusCruft.substring(0, index); 173 } 174 } 175 return versionPlusCruft; 176 } 177 } 178 | Popular Tags |