return instance;
}
- private boolean isGecko;
- private boolean isAppleWebKit;
- private boolean isSafari;
- private boolean isOpera;
- private boolean isIE;
- private float version = -1;
+ private VBrowserDetails browserDetails;
private BrowserInfo() {
try {
- String ua = getBrowserString().toLowerCase();
- // browser engine name
- isGecko = ua.indexOf("gecko") != -1 && ua.indexOf("webkit") == -1;
- isAppleWebKit = ua.indexOf("applewebkit") != -1;
-
- // browser name
- isSafari = ua.indexOf("safari") != -1;
- isOpera = ua.indexOf("opera") != -1;
- isIE = ua.indexOf("msie") != -1 && !isOpera
- && (ua.indexOf("webtv") == -1);
-
- if (isGecko) {
- String tmp = ua.substring(ua.indexOf("rv:") + 3);
- tmp = tmp.replaceFirst("(\\.[0-9]+).+", "$1");
- version = Float.parseFloat(tmp);
+ browserDetails = new VBrowserDetails(getBrowserString());
+ if (browserDetails.isIE()
+ && browserDetails.getBrowserMajorVersion() == 8
+ && isIE8InIE7CompatibilityMode()) {
+ browserDetails.setIE8InCompatibilityMode();
}
- if (isAppleWebKit) {
- String tmp = ua.substring(ua.indexOf("webkit/") + 7);
- tmp = tmp.replaceFirst("([0-9]+)[^0-9].+", "$1");
- version = Float.parseFloat(tmp);
- }
-
- if (isIE) {
- String ieVersionString = ua.substring(ua.indexOf("msie ") + 5);
- ieVersionString = ieVersionString.substring(0, ieVersionString
- .indexOf(";"));
- version = Float.parseFloat(ieVersionString);
-
- if (version == 8 && isIE8InIE7CompatibilityMode()) {
- version = 7;
- }
-
- }
} catch (Exception e) {
ClientExceptionHandler.displayError(e);
}
}
+ private native boolean isIE8InIE7CompatibilityMode()
+ /*-{
+ var mode = $wnd.document.documentMode;
+ if (!mode)
+ return false;
+ return (mode == 7);
+ }-*/;
+
/**
* Returns a string representing the browser in use, for use in CSS
* classnames. The classnames will be space separated abbrevitaions,
String prefix = "v-";
if (cssClass == null) {
- String bs = getBrowserString().toLowerCase();
String b = "";
String v = "";
- if (bs.indexOf(" firefox/") != -1) {
+ if (browserDetails.isFirefox()) {
b = "ff";
- int i = bs.indexOf(" firefox/") + 9;
- v = b + bs.substring(i, i + 1);
- } else if (bs.indexOf(" chrome/") != -1) {
+ v = "b" + browserDetails.getBrowserMajorVersion();
+ } else if (browserDetails.isChrome()) {
// TODO update when Chrome is more stable
b = "sa";
v = "ch";
- } else if (bs.indexOf(" safari") != -1) {
+ } else if (browserDetails.isSafari()) {
b = "sa";
- int i = bs.indexOf(" version/") + 9;
- v = b + bs.substring(i, i + 1);
- } else if (bs.indexOf(" msie ") != -1) {
+ v = "b" + browserDetails.getBrowserMajorVersion();
+ } else if (browserDetails.isIE()) {
b = "ie";
- int i = bs.indexOf(" msie ") + 6;
- String ieVersion = bs.substring(i, i + 1);
-
- if (ieVersion != null && ieVersion.equals("8")
- && isIE8InIE7CompatibilityMode()) {
- ieVersion = "7";
- }
-
- v = b + ieVersion;
- } else if (bs.indexOf("opera/") != -1) {
+ v = b + browserDetails.getBrowserMajorVersion();
+ } else if (browserDetails.isOpera()) {
b = "op";
- int i = bs.indexOf("opera/") + 6;
- v = b + bs.substring(i, i + 3).replace(".", "");
+ v = b + browserDetails.getBrowserMajorVersion();
}
cssClass = prefix + b + " " + prefix + v;
}
return cssClass;
}
- private native boolean isIE8InIE7CompatibilityMode()
- /*-{
- var mode = $wnd.document.documentMode;
- if (!mode)
- return false;
- return (mode == 7);
- }-*/;
-
public boolean isIE() {
- return isIE;
+ return browserDetails.isIE();
}
public boolean isSafari() {
- return isSafari;
+ return browserDetails.isSafari();
}
public boolean isIE6() {
- return isIE && version == 6;
+ return isIE() && browserDetails.getBrowserMajorVersion() == 6;
}
public boolean isIE7() {
- return isIE && version == 7;
+ return isIE() && browserDetails.getBrowserMajorVersion() == 7;
}
public boolean isIE8() {
- return isIE && version == 8;
+ return isIE() && browserDetails.getBrowserMajorVersion() == 8;
}
public boolean isGecko() {
- return isGecko;
+ return browserDetails.isGecko();
}
public boolean isWebkit() {
- return isAppleWebKit;
+ return browserDetails.isWebKit();
}
public boolean isFF2() {
- return isGecko && version == 1.8;
+ // FIXME: Should use browserVersion
+ return browserDetails.isFirefox()
+ && browserDetails.getBrowserEngineVersion() == 1.8;
}
public boolean isFF3() {
- return isGecko && version == 1.9;
+ // FIXME: Should use browserVersion
+ return browserDetails.isFirefox()
+ && browserDetails.getBrowserEngineVersion() == 1.9;
}
+ /**
+ * Returns the Gecko version if the browser is Gecko based. The Gecko
+ * version for Firefox 2 is 1.8 and 1.9 for Firefox 3.
+ *
+ * @return The Gecko version or -1 if the browser is not Gecko based
+ */
public float getGeckoVersion() {
- return (isGecko ? version : -1);
+ if (!browserDetails.isGecko()) {
+ return -1;
+ }
+
+ return browserDetails.getBrowserEngineVersion();
}
+ /**
+ * Returns the WebKit version if the browser is WebKit based. The WebKit
+ * version returned is the major version e.g., 523.
+ *
+ * @return The WebKit version or -1 if the browser is not WebKit based
+ */
public float getWebkitVersion() {
- return (isAppleWebKit ? version : -1);
+ if (!browserDetails.isWebKit()) {
+ return -1;
+ }
+
+ return browserDetails.getBrowserEngineVersion();
}
public float getIEVersion() {
- return (isIE ? version : -1);
+ if (!browserDetails.isIE()) {
+ return -1;
+ }
+
+ return browserDetails.getBrowserMajorVersion();
}
public boolean isOpera() {
- return isOpera;
+ return browserDetails.isOpera();
}
public native static String getBrowserString()
return $wnd.navigator.userAgent;
}-*/;
- public static void test() {
- Console c = ApplicationConnection.getConsole();
-
- c.log("getBrowserString() " + getBrowserString());
- c.log("isIE() " + get().isIE());
- c.log("isIE6() " + get().isIE6());
- c.log("isIE7() " + get().isIE7());
- c.log("isIE8() " + get().isIE8());
- c.log("isFF2() " + get().isFF2());
- c.log("isSafari() " + get().isSafari());
- c.log("getGeckoVersion() " + get().getGeckoVersion());
- c.log("getWebkitVersion() " + get().getWebkitVersion());
- c.log("getIEVersion() " + get().getIEVersion());
- c.log("isIE() " + get().isIE());
- c.log("isIE() " + get().isIE());
- }
-
public native int getScreenWidth()
/*-{
return $wnd.screen.width;
--- /dev/null
+package com.vaadin.terminal.gwt.client;\r
+\r
+/**\r
+ * Class that parses the user agent string from the browser and provides\r
+ * information about the browser.\r
+ * \r
+ * @author IT Mill Ltd.\r
+ * @version @VERSION@\r
+ * @since 6.3\r
+ */\r
+public class VBrowserDetails {\r
+\r
+ private boolean isGecko;\r
+ private boolean isWebKit;\r
+ private boolean isPresto;\r
+\r
+ private boolean isSafari;\r
+ private boolean isChrome;\r
+ private boolean isFirefox;\r
+ private boolean isOpera;\r
+ private boolean isIE;\r
+\r
+ private float browserEngineVersion = -1;\r
+ private int browserMajorVersion = -1;\r
+\r
+ /**\r
+ * Create an instance based on the given user agent.\r
+ * \r
+ * @param userAgent\r
+ * User agent as provided by the browser.\r
+ */\r
+ public VBrowserDetails(String userAgent) {\r
+ userAgent = userAgent.toLowerCase();\r
+\r
+ // browser engine name\r
+ isGecko = userAgent.indexOf("gecko") != -1\r
+ && userAgent.indexOf("webkit") == -1;\r
+ isWebKit = userAgent.indexOf("applewebkit") != -1;\r
+ isPresto = userAgent.indexOf(" presto/") != -1;\r
+\r
+ // browser name\r
+ isChrome = userAgent.indexOf(" chrome/") != -1;\r
+ isSafari = !isChrome && userAgent.indexOf("safari") != -1;\r
+ isOpera = userAgent.indexOf("opera") != -1;\r
+ isIE = userAgent.indexOf("msie") != -1 && !isOpera\r
+ && (userAgent.indexOf("webtv") == -1);\r
+ isFirefox = userAgent.indexOf(" firefox/") != -1;\r
+\r
+ // Rendering engine version\r
+ if (isGecko) {\r
+ String tmp = userAgent.substring(userAgent.indexOf("rv:") + 3);\r
+ tmp = tmp.replaceFirst("(\\.[0-9]+).+", "$1");\r
+ browserEngineVersion = Float.parseFloat(tmp);\r
+ } else if (isWebKit) {\r
+ String tmp = userAgent.substring(userAgent.indexOf("webkit/") + 7);\r
+ tmp = tmp.replaceFirst("([0-9]+)[^0-9].+", "$1");\r
+ browserEngineVersion = Float.parseFloat(tmp);\r
+ }\r
+\r
+ // Browser version\r
+ if (isIE) {\r
+ String ieVersionString = userAgent.substring(userAgent\r
+ .indexOf("msie ") + 5);\r
+ ieVersionString = ieVersionString.substring(0, ieVersionString\r
+ .indexOf(";"));\r
+ // FIXME parseInt\r
+ browserMajorVersion = (int) Float.parseFloat(ieVersionString);\r
+ } else if (isFirefox) {\r
+ int i = userAgent.indexOf(" firefox/") + 9;\r
+ browserMajorVersion = Integer.parseInt(userAgent\r
+ .substring(i, i + 1));\r
+ } else if (isChrome) {\r
+ int i = userAgent.indexOf(" chrome/") + 8;\r
+ browserMajorVersion = Integer.parseInt(userAgent\r
+ .substring(i, i + 1));\r
+ } else if (isSafari) {\r
+ int i = userAgent.indexOf(" version/") + 9;\r
+ browserMajorVersion = Integer.parseInt(userAgent\r
+ .substring(i, i + 1));\r
+ } else if (isOpera) {\r
+ int i = userAgent.indexOf(" version/");\r
+ if (i != -1) {\r
+ // Version present in Opera 10 and newer\r
+ i += 9; // " version/".length\r
+ } else {\r
+ i = userAgent.indexOf("opera/") + 6;\r
+ }\r
+\r
+ browserMajorVersion = Integer.parseInt(userAgent\r
+ .substring(i, i + 2).replace(".", ""));\r
+ }\r
+\r
+ }\r
+\r
+ /**\r
+ * Tests if the browser is Firefox.\r
+ * \r
+ * @return true if it is Firefox, false otherwise\r
+ */\r
+ public boolean isFirefox() {\r
+ return isFirefox;\r
+ }\r
+\r
+ /**\r
+ * Tests if the browser is using the Gecko engine\r
+ * \r
+ * @return true if it is Gecko, false otherwise\r
+ */\r
+ public boolean isGecko() {\r
+ return isGecko;\r
+ }\r
+\r
+ /**\r
+ * Tests if the browser is using the WebKit engine\r
+ * \r
+ * @return true if it is WebKit, false otherwise\r
+ */\r
+ public boolean isWebKit() {\r
+ return isWebKit;\r
+ }\r
+\r
+ /**\r
+ * Tests if the browser is using the Presto engine\r
+ * \r
+ * @return true if it is Presto, false otherwise\r
+ */\r
+ public boolean isPresto() {\r
+ return isPresto;\r
+ }\r
+\r
+ /**\r
+ * Tests if the browser is Safari.\r
+ * \r
+ * @return true if it is Safari, false otherwise\r
+ */\r
+ public boolean isSafari() {\r
+ return isSafari;\r
+ }\r
+\r
+ /**\r
+ * Tests if the browser is Chrome.\r
+ * \r
+ * @return true if it is Chrome, false otherwise\r
+ */\r
+ public boolean isChrome() {\r
+ return isChrome;\r
+ }\r
+\r
+ /**\r
+ * Tests if the browser is Opera.\r
+ * \r
+ * @return true if it is Opera, false otherwise\r
+ */\r
+ public boolean isOpera() {\r
+ return isOpera;\r
+ }\r
+\r
+ /**\r
+ * Tests if the browser is Internet Explorer.\r
+ * \r
+ * @return true if it is Internet Explorer, false otherwise\r
+ */\r
+ public boolean isIE() {\r
+ return isIE;\r
+ }\r
+\r
+ /**\r
+ * Returns the version of the browser engine. For WebKit this is an integer\r
+ * e.g., 532.0. For gecko it is a float e.g., 1.8 or 1.9.\r
+ * \r
+ * @return The version of the browser engine\r
+ */\r
+ public float getBrowserEngineVersion() {\r
+ return browserEngineVersion;\r
+ }\r
+\r
+ /**\r
+ * Returns the browser major version e.g., 3 for Firefox 3.5, 4 for Chrome\r
+ * 4, 8 for Internet Explorer 8.\r
+ * \r
+ * <pre>\r
+ * Note that Internet Explorer 8 in compatibility mode will return 7.\r
+ * </pre>\r
+ * \r
+ * @return The major version of the browser.\r
+ */\r
+ public final int getBrowserMajorVersion() {\r
+ return browserMajorVersion;\r
+ }\r
+\r
+ /**\r
+ * Marks that IE8 is used in compatibility mode. This forces the browser\r
+ * version to 7 even if it otherwise was detected as 8.\r
+ * \r
+ */\r
+ public void setIE8InCompatibilityMode() {\r
+ if (isIE && browserMajorVersion == 8) {\r
+ browserMajorVersion = 7;\r
+ }\r
+ }\r
+\r
+}\r
import java.util.Locale;
import com.vaadin.terminal.Terminal;
+import com.vaadin.terminal.gwt.client.VBrowserDetails;
-@SuppressWarnings("serial")
+/**
+ * Class that provides information about the web browser the user is using.
+ * Provides information such as browser name and version, screen resolution and
+ * IP address.
+ *
+ * @author IT Mill Ltd.
+ * @version @VERSION@
+ */
public class WebBrowser implements Terminal {
private int screenHeight = 0;
private String address;
private boolean secureConnection;
+ private VBrowserDetails browserDetails;
+
/**
* There is no default-theme for this terminal type.
*
- * @return Allways returns null.
+ * @return Always returns null.
*/
public String getDefaultTheme() {
return null;
}
- /**
- * Get the height of the users display in pixels.
+ /*
+ * (non-Javadoc)
*
+ * @see com.vaadin.terminal.Terminal#getScreenHeight()
*/
public int getScreenHeight() {
return screenHeight;
}
- /**
- * Get the width of the users display in pixels.
+ /*
+ * (non-Javadoc)
*
+ * @see com.vaadin.terminal.Terminal#getScreenWidth()
*/
public int getScreenWidth() {
return screenWidth;
/**
* Get the browser user-agent string.
*
- * @return
+ * @return The raw browser userAgent string
*/
public String getBrowserApplication() {
return browserApplication;
/**
* For internal use by AbstractApplicationServlet/AbstractApplicationPortlet
- * only.
+ * only. Updates all properties in the class according to the given
+ * information.
+ *
+ * @param locale
+ * The browser primary locale
+ * @param address
+ * The browser ip address
+ * @param secureConnection
+ * true if using an https connection
+ * @param agent
+ * Raw userAgent string from the browser
+ * @param sw
+ * Screen width
+ * @param sh
+ * Screen height
*/
void updateBrowserProperties(Locale locale, String address,
boolean secureConnection, String agent, String sw, String sh) {
this.secureConnection = secureConnection;
if (agent != null) {
browserApplication = agent;
+ browserDetails = new VBrowserDetails(agent);
}
if (sw != null) {
}
/**
- * Get the IP-address of the web browser. If the application is running
+ * Gets the IP-address of the web browser. If the application is running
* inside a portlet, this method will return null.
*
* @return IP-address in 1.12.123.123 -format
return secureConnection;
}
+ /**
+ * Tests whether the user is using Firefox.
+ *
+ * @return true if the user is using Firefox, false if the user is not using
+ * Firefox or if no information on the browser is present
+ */
+ public boolean isFirefox() {
+ if (browserDetails == null) {
+ return false;
+ }
+
+ return browserDetails.isFirefox();
+ }
+
+ /**
+ * Tests whether the user is using Internet Explorer.
+ *
+ * @return true if the user is using Internet Explorer, false if the user is
+ * not using Internet Explorer or if no information on the browser
+ * is present
+ */
+ public boolean isIE() {
+ if (browserDetails == null) {
+ return false;
+ }
+
+ return browserDetails.isIE();
+ }
+
+ /**
+ * Tests whether the user is using Safari.
+ *
+ * @return true if the user is using Safari, false if the user is not using
+ * Safari or if no information on the browser is present
+ */
+ public boolean isSafari() {
+ if (browserDetails == null) {
+ return false;
+ }
+
+ return browserDetails.isSafari();
+ }
+
+ /**
+ * Tests whether the user is using Opera.
+ *
+ * @return true if the user is using Opera, false if the user is not using
+ * Opera or if no information on the browser is present
+ */
+ public boolean isOpera() {
+ if (browserDetails == null) {
+ return false;
+ }
+
+ return browserDetails.isOpera();
+ }
+
+ /**
+ * Tests whether the user is using Chrome.
+ *
+ * @return true if the user is using Chrome, false if the user is not using
+ * Chrome or if no information on the browser is present
+ */
+ public boolean isChrome() {
+ if (browserDetails == null) {
+ return false;
+ }
+
+ return browserDetails.isChrome();
+ }
+
+ /**
+ * Gets the major version of the browser the user is using.
+ *
+ * <p>
+ * Note that Internet Explorer in IE7 compatibility mode might return 8 in
+ * some cases even though it should return 7.
+ * </p>
+ *
+ * @return The major version of the browser or -1 if not known.
+ */
+ public int getBrowserMajorVersion() {
+ if (browserDetails == null) {
+ return -1;
+ }
+
+ return browserDetails.getBrowserMajorVersion();
+ }
}
--- /dev/null
+package com.vaadin.tests.server;\r
+\r
+import junit.framework.TestCase;\r
+\r
+import com.vaadin.terminal.gwt.client.VBrowserDetails;\r
+\r
+public class BrowserUserAgentParser extends TestCase {\r
+\r
+ private static final String FIREFOX30 = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6";\r
+ private static final String FIREFOX35 = "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";\r
+ private static final String FIREFOX36 = "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)";\r
+\r
+ private static final String IE6 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";\r
+ private static final String IE7 = "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)";\r
+ private static final String IE8 = "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)";\r
+ private static final String IE8_IN_IE7_MODE = "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)";\r
+\r
+ // "Version/" was added in 10.00\r
+ private static final String OPERA960 = "Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1";\r
+ private static final String OPERA1010 = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.10";\r
+ private static final String OPERA1050 = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.5.22 Version/10.50";\r
+\r
+ private static final String CHROME3 = "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";\r
+ private static final String CHROME4 = "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";\r
+\r
+ private static final String SAFARI3 = "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";\r
+ private static final String SAFARI4 = "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";\r
+\r
+ public void testSafari3() {\r
+ VBrowserDetails bd = new VBrowserDetails(SAFARI3);\r
+ assertWebKit(bd);\r
+ assertSafari(bd);\r
+ assertBrowserMajorVersion(bd, 3);\r
+ assertEngineVersion(bd, 525.0f);\r
+ }\r
+\r
+ public void testSafari4() {\r
+ VBrowserDetails bd = new VBrowserDetails(SAFARI4);\r
+ assertWebKit(bd);\r
+ assertSafari(bd);\r
+ assertBrowserMajorVersion(bd, 4);\r
+ assertEngineVersion(bd, 531f);\r
+ }\r
+\r
+ public void testChrome3() {\r
+ VBrowserDetails bd = new VBrowserDetails(CHROME3);\r
+ assertWebKit(bd);\r
+ assertChrome(bd);\r
+ assertBrowserMajorVersion(bd, 3);\r
+ assertEngineVersion(bd, 532.0f);\r
+ }\r
+\r
+ public void testChrome4() {\r
+ VBrowserDetails bd = new VBrowserDetails(CHROME4);\r
+ assertWebKit(bd);\r
+ assertChrome(bd);\r
+ assertBrowserMajorVersion(bd, 4);\r
+ assertEngineVersion(bd, 532f);\r
+ }\r
+\r
+ public void testFirefox3() {\r
+ VBrowserDetails bd = new VBrowserDetails(FIREFOX30);\r
+ assertGecko(bd);\r
+ assertFirefox(bd);\r
+ assertBrowserMajorVersion(bd, 3);\r
+ assertEngineVersion(bd, 1.9f);\r
+ }\r
+\r
+ public void testFirefox35() {\r
+ VBrowserDetails bd = new VBrowserDetails(FIREFOX35);\r
+ assertGecko(bd);\r
+ assertFirefox(bd);\r
+ assertBrowserMajorVersion(bd, 3);\r
+ assertEngineVersion(bd, 1.9f);\r
+ }\r
+\r
+ public void testFirefox36() {\r
+ VBrowserDetails bd = new VBrowserDetails(FIREFOX36);\r
+ assertGecko(bd);\r
+ assertFirefox(bd);\r
+ assertBrowserMajorVersion(bd, 3);\r
+ assertEngineVersion(bd, 1.9f);\r
+ }\r
+\r
+ public void testOpera960() {\r
+ VBrowserDetails bd = new VBrowserDetails(OPERA960);\r
+ assertPresto(bd);\r
+ assertOpera(bd);\r
+ assertBrowserMajorVersion(bd, 9);\r
+ }\r
+\r
+ public void testOpera1010() {\r
+ VBrowserDetails bd = new VBrowserDetails(OPERA1010);\r
+ assertPresto(bd);\r
+ assertOpera(bd);\r
+ assertBrowserMajorVersion(bd, 10);\r
+ }\r
+\r
+ public void testOpera1050() {\r
+ VBrowserDetails bd = new VBrowserDetails(OPERA1050);\r
+ assertPresto(bd);\r
+ assertOpera(bd);\r
+ assertBrowserMajorVersion(bd, 10);\r
+ }\r
+\r
+ public void testIE6() {\r
+ VBrowserDetails bd = new VBrowserDetails(IE6);\r
+ // assertTrident(bd);\r
+ assertIE(bd);\r
+ assertBrowserMajorVersion(bd, 6);\r
+ }\r
+\r
+ public void testIE7() {\r
+ VBrowserDetails bd = new VBrowserDetails(IE7);\r
+ // assertTrident(bd);\r
+ assertIE(bd);\r
+ assertBrowserMajorVersion(bd, 7);\r
+ }\r
+\r
+ public void testIE8() {\r
+ VBrowserDetails bd = new VBrowserDetails(IE8);\r
+ // assertTrident(bd);\r
+ assertIE(bd);\r
+ assertBrowserMajorVersion(bd, 8);\r
+ }\r
+\r
+ public void testIE8CompatibilityMode() {\r
+ VBrowserDetails bd = new VBrowserDetails(IE8_IN_IE7_MODE);\r
+ bd.setIE8InCompatibilityMode();\r
+\r
+ // assertTrident(bd);\r
+ assertIE(bd);\r
+ assertBrowserMajorVersion(bd, 7);\r
+ }\r
+\r
+ /*\r
+ * Helper methods below\r
+ */\r
+\r
+ private void assertEngineVersion(VBrowserDetails browserDetails,\r
+ float version) {\r
+ assertEquals(version, browserDetails.getBrowserEngineVersion());\r
+\r
+ }\r
+\r
+ private void assertBrowserMajorVersion(VBrowserDetails browserDetails,\r
+ int version) {\r
+ assertEquals(version, browserDetails.getBrowserMajorVersion());\r
+\r
+ }\r
+\r
+ private void assertGecko(VBrowserDetails browserDetails) {\r
+ // Engine\r
+ assertTrue(browserDetails.isGecko());\r
+ assertFalse(browserDetails.isWebKit());\r
+ assertFalse(browserDetails.isPresto());\r
+ }\r
+\r
+ private void assertPresto(VBrowserDetails browserDetails) {\r
+ // Engine\r
+ assertFalse(browserDetails.isGecko());\r
+ assertFalse(browserDetails.isWebKit());\r
+ assertTrue(browserDetails.isPresto());\r
+ }\r
+\r
+ private void assertWebKit(VBrowserDetails browserDetails) {\r
+ // Engine\r
+ assertFalse(browserDetails.isGecko());\r
+ assertTrue(browserDetails.isWebKit());\r
+ assertFalse(browserDetails.isPresto());\r
+ }\r
+\r
+ private void assertFirefox(VBrowserDetails browserDetails) {\r
+ // Browser\r
+ assertTrue(browserDetails.isFirefox());\r
+ assertFalse(browserDetails.isChrome());\r
+ assertFalse(browserDetails.isIE());\r
+ assertFalse(browserDetails.isOpera());\r
+ assertFalse(browserDetails.isSafari());\r
+ }\r
+\r
+ private void assertChrome(VBrowserDetails browserDetails) {\r
+ // Browser\r
+ assertFalse(browserDetails.isFirefox());\r
+ assertTrue(browserDetails.isChrome());\r
+ assertFalse(browserDetails.isIE());\r
+ assertFalse(browserDetails.isOpera());\r
+ assertFalse(browserDetails.isSafari());\r
+ }\r
+\r
+ private void assertIE(VBrowserDetails browserDetails) {\r
+ // Browser\r
+ assertFalse(browserDetails.isFirefox());\r
+ assertFalse(browserDetails.isChrome());\r
+ assertTrue(browserDetails.isIE());\r
+ assertFalse(browserDetails.isOpera());\r
+ assertFalse(browserDetails.isSafari());\r
+ }\r
+\r
+ private void assertOpera(VBrowserDetails browserDetails) {\r
+ // Browser\r
+ assertFalse(browserDetails.isFirefox());\r
+ assertFalse(browserDetails.isChrome());\r
+ assertFalse(browserDetails.isIE());\r
+ assertTrue(browserDetails.isOpera());\r
+ assertFalse(browserDetails.isSafari());\r
+ }\r
+\r
+ private void assertSafari(VBrowserDetails browserDetails) {\r
+ // Browser\r
+ assertFalse(browserDetails.isFirefox());\r
+ assertFalse(browserDetails.isChrome());\r
+ assertFalse(browserDetails.isIE());\r
+ assertFalse(browserDetails.isOpera());\r
+ assertTrue(browserDetails.isSafari());\r
+ }\r
+}\r