package com.baselet.gwt.client.base;
public enum Browser {
INTERNET_EXPLORER("MSIE"),
FIREFOX("Firefox"),
CHROME("Chrome"), // also includes CHROME_ANDROID which would have browserFilters=["Android", "Chrome"]
OPERA("Opera"),
ANDROID_STOCK_BROWSER("Android"), // android chrome also have "Android" in its useragent but matches CHROME before coming here
UNKNOWN("######");
private String[] browserFilters;
private Browser(String... browserFilters) {
this.browserFilters = browserFilters;
}
public static Browser get() {
String currentAgent = getUserAgent();
for (Browser b : Browser.values()) {
if (browserFiltersMatch(currentAgent, b)) {
return b;
}
}
return UNKNOWN;
}
private static boolean browserFiltersMatch(String currentAgent, Browser b) {
for (String filterString : b.browserFilters) {
if (!currentAgent.contains(filterString)) {
return false;
}
}
return true;
}
private final native static String getUserAgent() /*-{
return navigator.userAgent;
}-*/;
}