browser-sniffing tool (session or request scope requested, session scope advised).
BrowserSniffer defines properties that are used to test the client browser, operating system, device...
Apart from properties related to versioning, all properties are booleans.
Thanks to Lee Semel (lee@semel.net), the author of the HTTP::BrowserDetect Perl module.
See also http://www.zytrax.com/tech/web/browser_ids.htm and http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
| Method from org.apache.velocity.tools.view.tools.BrowserSnifferTool Detail: |
public boolean get(String key) {
return test(key);
}
|
public boolean getAix() {
return test("aix");
}
|
public boolean getAix1() {
return test("aix 1");
}
|
public boolean getAix2() {
return test("aix 2");
}
|
public boolean getAix3() {
return test("aix 3");
}
|
public boolean getAix4() {
return test("aix 4");
}
|
public boolean getAltavista() {
return test("altavista");
}
|
public boolean getAmaya() {
return test("amaya");
}
|
public boolean getAmiga() {
return test("amiga");
}
|
public boolean getAol() {
return test("aol");
}
|
public boolean getAol3() {
return test("aol 3.0") || getAol() && getIe3();
}
|
public boolean getAol4() {
return test("aol 4.0") || getAol() && getIe4();
}
|
public boolean getAol5() {
return test("aol 5.0");
}
|
public boolean getAol6() {
return test("aol 6.0");
}
|
public boolean getAolTV() {
return test("navio") || test("navio_aoltv");
}
|
public boolean getAudrey() {
return test("audrey");
}
|
public boolean getAvantgo() {
return test("avantgo");
}
|
public boolean getBlackberry() {
return test("blackberry");
}
|
public boolean getBsd() {
return test("bsd");
}
|
public boolean getCss() {
return (getIe() && getMajorVersion() >= 4) ||
(getNetscape() && getMajorVersion() >= 4) ||
getGecko() ||
getKonqueror() ||
(getOpera() && getMajorVersion() >= 3) ||
getSafari() ||
getLinks();
}
|
public boolean getCss1() {
return getCss();
}
|
public boolean getCss2() {
return getIe() &&
(getMac() && getMajorVersion() >= 5) ||
(getWin32() && getMajorVersion() >= 6) ||
getGecko() || // && version >= ?
(getOpera() && getMajorVersion() >= 4) ||
(getSafari() && getMajorVersion() >= 2) ||
(getKonqueror() && getMajorVersion() >= 2);
}
|
public boolean getCurl() {
return test("libcurl");
}
|
public boolean getDec() {
return test("dec") || test("osf1") || test("delalpha") ||
test("alphaserver") || test("ultrix") || test("alphastation");
}
|
public boolean getDom0() {
return (getIe() && getMajorVersion() >= 3) ||
(getNetscape() && getMajorVersion() >= 2) ||
(getOpera() && getMajorVersion() >= 3) ||
getGecko() ||
getSafari() ||
getKonqueror();
}
|
public boolean getDom1() {
return (getIe() && getMajorVersion() >= 5) ||
getGecko() ||
(getSafari() && getMajorVersion() >= 2) ||
(getOpera() && getMajorVersion() >= 4) ||
(getKonqueror() && getMajorVersion() >= 2);
}
|
public boolean getDom2() {
return (getIe() && getMajorVersion() >= 6) ||
(getMozilla() && getMajorVersion() >= 5.0) ||
(getOpera() && getMajorVersion() >= 7) ||
getFirefox();
}
|
public boolean getDotnet() {
return test(".net clr");
}
|
public boolean getEmacs() {
return test("emacs");
}
|
public boolean getFirefox() {
return test("firefox") || test("firebird") || test("phoenix");
}
|
public boolean getFreebsd() {
return test("freebsd");
}
|
public boolean getGecko() {
return test("gecko");
}
|
public String getGeckoVersion() {
parseVersion();
return geckoVersion;
}
|
public boolean getGetright() {
return test("getright");
}
|
public boolean getGoogle() {
return test("google");
}
|
public boolean getHotjava() {
return test("hotjava");
}
|
public boolean getHotjava3() {
return getHotjava() && getMajorVersion() == 3;
}
|
public boolean getHotjava3up() {
return getHotjava() && getMajorVersion() >= 3;
}
|
public boolean getHpux() {
return test("hp-ux");
}
|
public boolean getHpux10() {
return getHpux() && test("10.");
}
|
public boolean getHpux9() {
return getHpux() && test("09.");
}
|
public boolean getIcab() {
return test("icab");
}
|
public boolean getIe() {
return test("msie") && !test("opera") ||
test("microsoft internet explorer");
}
|
public boolean getIe3() {
return getIe() && getMajorVersion() < 4;
}
|
public boolean getIe4() {
return getIe() && getMajorVersion() == 4;
}
|
public boolean getIe4up() {
return getIe() && getMajorVersion() >= 4;
}
|
public boolean getIe5() {
return getIe() && getMajorVersion() == 5;
}
|
public boolean getIe55() {
return getIe() && getMajorVersion() == 5 && getMinorVersion() >= 5;
}
|
public boolean getIe55up() {
return (getIe5() && getMinorVersion() >= 5) ||
(getIe() && getMajorVersion() >= 6);
}
|
public boolean getIe5up() {
return getIe() && getMajorVersion() >= 5;
}
|
public boolean getIe6() {
return getIe() && getMajorVersion() == 6;
}
|
public boolean getIe6up() {
return getIe() && getMajorVersion() >= 6;
}
|
public boolean getInfoseek() {
return test("infoseek");
}
|
public boolean getIopener() {
return test("i-opener");
}
|
public boolean getIrix() {
return test("irix");
}
|
public boolean getIrix5() {
return test("irix5");
}
|
public boolean getIrix6() {
return test("irix6");
}
|
public boolean getJava() {
return test("java") || test("jdk");
}
|
public boolean getJavascript() {
return getDom0(); // good approximation
}
|
public boolean getKonqueror() {
return test("konqueror");
}
|
public boolean getLinkexchange() {
return test("lecodechecker");
}
|
public boolean getLinks() {
return test("links");
}
|
public boolean getLinux() {
return test("linux");
}
|
public boolean getLotusnotes() {
return test("lotus-notes");
}
|
public boolean getLwp() {
return test("libwww-perl") || test("lwp-");
}
|
public boolean getLycos() {
return test("lycos");
}
|
public boolean getLynx() {
return test("lynx");
}
|
public boolean getMac() {
return test("macintosh") || test("mac_");
}
|
public boolean getMac68k() {
return getMac() && (test("68k") || test("68000"));
}
|
public boolean getMacosx() {
return test("macintosh") || test("mac os x");
}
|
public boolean getMacppc() {
return getMac() && (test("ppc") || test("powerpc"));
}
|
public int getMajorVersion() {
parseVersion();
return majorVersion;
}
|
public int getMinorVersion() {
parseVersion();
return minorVersion;
}
|
public boolean getMosaic() {
return test("mosaic");
}
|
public boolean getMozilla() {
return getNetscape() && getGecko();
}
|
public boolean getMpras() {
return test("ncr");
}
|
public boolean getNav2() {
return getNetscape() && getMajorVersion() == 2;
}
|
public boolean getNav3() {
return getNetscape() && getMajorVersion() == 3;
}
|
public boolean getNav4() {
return getNetscape() && getMajorVersion() == 4;
}
|
public boolean getNav45() {
return getNetscape() && getMajorVersion() == 4 &&
getMinorVersion() == 5;
}
|
public boolean getNav45up() {
return getNetscape() && getMajorVersion() >= 5 ||
getNav4() && getMinorVersion() >= 5;
}
|
public boolean getNav4up() {
return getNetscape() && getMajorVersion() >= 4;
}
|
public boolean getNav6() {
return getNetscape() && getMajorVersion() == 5; /* sic */
}
|
public boolean getNav6up() {
return getNetscape() && getMajorVersion() >= 5;
}
|
public boolean getNavgold() {
return test("gold");
}
|
public boolean getNeoplanet() {
return test("neoplanet");
}
|
public boolean getNeoplanet2() {
return getNeoplanet() && test("2.");
}
|
public boolean getNetscape() {
return !getFirefox() && !getSafari() && test("mozilla") &&
!test("spoofer") && !test("compatible") && !test("opera") &&
!test("webtv") && !test("hotjava");
}
|
public boolean getOpera() {
return test("opera");
}
|
public boolean getOpera3() {
return test("opera 3") || test("opera/3");
}
|
public boolean getOpera4() {
return test("opera 4") || test("opera/4");
}
|
public boolean getOpera5() {
return test("opera 5") || test("opera/5");
}
|
public boolean getOpera6() {
return test("opera 6") || test("opera/6");
}
|
public boolean getOpera7() {
return test("opera 7") || test("opera/7");
}
|
public boolean getOs2() {
return test("os/2");
}
|
public boolean getPalm() {
return getAvantgo() || test("palmos");
}
|
public boolean getReliant() {
return test("reliantunix");
}
|
public boolean getRobot() {
return getWget() || getGetright() || getLwp() || getYahoo() ||
getGoogle() || getAltavista() || getScooter() || getLycos() ||
getInfoseek() || getWebcrawler() || getLinkexchange() ||
test("bot") || test("spider") || test("crawl") ||
test("agent") || test("seek") || test("search") ||
test("reap") || test("worm") || test("find") || test("index") ||
test("copy") || test("fetch") || test("ia_archive") ||
test("zyborg");
}
|
public boolean getSafari() {
return test("safari") || test("applewebkit");
}
|
public boolean getSco() {
return test("sco") || test("unix_sv");
}
|
public boolean getScooter() {
return test("scooter");
}
|
public boolean getSinix() {
return test("sinix");
}
|
public boolean getSlurp() {
return test("slurp");
}
|
public boolean getStaroffice() {
return test("staroffice");
}
|
public boolean getSun() {
return test("sun");
}
|
public boolean getSun4() {
return test("sunos 4");
}
|
public boolean getSun5() {
return test("sunos 5");
}
|
public boolean getSuni86() {
return getSun() && test("i86");
}
|
public boolean getUnix() {
return getX11() || getSun() || getIrix() || getHpux() || getSco() ||
getUnixware() || getMpras() || getReliant() || getDec() ||
getLinux() || getBsd() || test("unix");
}
|
public boolean getUnixware() {
return test("unix_system_v");
}
|
public boolean getVMS() {
return test("vax") || test("openvms");
}
|
public String getVersion() {
parseVersion();
return version;
}
|
public boolean getWap() {
return test("up.browser") || test("nokia") || test("alcatel") ||
test("ericsson") || userAgent.indexOf("sie-") == 0 ||
test("wmlib") || test(" wap") || test("wap ") ||
test("wap/") || test("-wap") || test("wap-") ||
userAgent.indexOf("wap") == 0 ||
test("wapper") || test("zetor");
}
|
public boolean getWebTV() {
return test("webtv");
}
|
public boolean getWebcrawler() {
return test("webcrawler");
}
|
public boolean getWget() {
return test("wget");
}
|
public boolean getWin16() {
return test("win16") || test("16bit") || test("windows 3") ||
test("windows 16-bit");
}
|
public boolean getWin2k() {
return test("nt 5.0") || test("nt5");
}
|
public boolean getWin31() {
return test("win16") || test("windows 3.1") || test("windows 16-bit");
}
|
public boolean getWin32() {
return getWin95() || getWin98() || getWinnt() || getWin2k() ||
getWinxp() || getWinme() || test("win32");
}
|
public boolean getWin3x() {
return test("win16") || test("windows 3") || test("windows 16-bit");
}
|
public boolean getWin95() {
return test("win95") || test("windows 95");
}
|
public boolean getWin98() {
return test("win98") || test("windows 98");
}
|
public boolean getWindows() {
return getWin16() || getWin31() || getWin95() || getWin98() ||
getWinnt() || getWin32() || getWin2k() || getWinme() ||
test("win");
}
|
public boolean getWinme() {
return test("win 9x 4.90");
}
|
public boolean getWinnt() {
return test("winnt") || test("windows nt") || test("nt4") || test("nt3");
}
|
public boolean getWinxp() {
return test("nt 5.1");
}
|
public boolean getX11() {
return test("x11");
}
|
public boolean getYahoo() {
return test("yahoo");
}
|
public void init(Object initData) {
HttpServletRequest req;
if(initData instanceof ViewContext)
{
req = ((ViewContext)initData).getRequest();
}
else if(initData instanceof HttpServletRequest)
{
req = (HttpServletRequest)initData;
}
else
{
throw new IllegalArgumentException("Was expecting " + ViewContext.class +
" or " + HttpServletRequest.class);
}
userAgent = req.getHeader("User-Agent").toLowerCase();
}
|