svn changeset:11911/svn branch:6.3tags/6.7.0.beta1
@@ -37,54 +37,30 @@ public class BrowserInfo { | |||
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, | |||
@@ -107,36 +83,24 @@ public class BrowserInfo { | |||
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; | |||
} | |||
@@ -144,64 +108,84 @@ public class BrowserInfo { | |||
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() | |||
@@ -209,23 +193,6 @@ public class BrowserInfo { | |||
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; |
@@ -0,0 +1,202 @@ | |||
package com.vaadin.terminal.gwt.client; | |||
/** | |||
* Class that parses the user agent string from the browser and provides | |||
* information about the browser. | |||
* | |||
* @author IT Mill Ltd. | |||
* @version @VERSION@ | |||
* @since 6.3 | |||
*/ | |||
public class VBrowserDetails { | |||
private boolean isGecko; | |||
private boolean isWebKit; | |||
private boolean isPresto; | |||
private boolean isSafari; | |||
private boolean isChrome; | |||
private boolean isFirefox; | |||
private boolean isOpera; | |||
private boolean isIE; | |||
private float browserEngineVersion = -1; | |||
private int browserMajorVersion = -1; | |||
/** | |||
* Create an instance based on the given user agent. | |||
* | |||
* @param userAgent | |||
* User agent as provided by the browser. | |||
*/ | |||
public VBrowserDetails(String userAgent) { | |||
userAgent = userAgent.toLowerCase(); | |||
// browser engine name | |||
isGecko = userAgent.indexOf("gecko") != -1 | |||
&& userAgent.indexOf("webkit") == -1; | |||
isWebKit = userAgent.indexOf("applewebkit") != -1; | |||
isPresto = userAgent.indexOf(" presto/") != -1; | |||
// browser name | |||
isChrome = userAgent.indexOf(" chrome/") != -1; | |||
isSafari = !isChrome && userAgent.indexOf("safari") != -1; | |||
isOpera = userAgent.indexOf("opera") != -1; | |||
isIE = userAgent.indexOf("msie") != -1 && !isOpera | |||
&& (userAgent.indexOf("webtv") == -1); | |||
isFirefox = userAgent.indexOf(" firefox/") != -1; | |||
// Rendering engine version | |||
if (isGecko) { | |||
String tmp = userAgent.substring(userAgent.indexOf("rv:") + 3); | |||
tmp = tmp.replaceFirst("(\\.[0-9]+).+", "$1"); | |||
browserEngineVersion = Float.parseFloat(tmp); | |||
} else if (isWebKit) { | |||
String tmp = userAgent.substring(userAgent.indexOf("webkit/") + 7); | |||
tmp = tmp.replaceFirst("([0-9]+)[^0-9].+", "$1"); | |||
browserEngineVersion = Float.parseFloat(tmp); | |||
} | |||
// Browser version | |||
if (isIE) { | |||
String ieVersionString = userAgent.substring(userAgent | |||
.indexOf("msie ") + 5); | |||
ieVersionString = ieVersionString.substring(0, ieVersionString | |||
.indexOf(";")); | |||
// FIXME parseInt | |||
browserMajorVersion = (int) Float.parseFloat(ieVersionString); | |||
} else if (isFirefox) { | |||
int i = userAgent.indexOf(" firefox/") + 9; | |||
browserMajorVersion = Integer.parseInt(userAgent | |||
.substring(i, i + 1)); | |||
} else if (isChrome) { | |||
int i = userAgent.indexOf(" chrome/") + 8; | |||
browserMajorVersion = Integer.parseInt(userAgent | |||
.substring(i, i + 1)); | |||
} else if (isSafari) { | |||
int i = userAgent.indexOf(" version/") + 9; | |||
browserMajorVersion = Integer.parseInt(userAgent | |||
.substring(i, i + 1)); | |||
} else if (isOpera) { | |||
int i = userAgent.indexOf(" version/"); | |||
if (i != -1) { | |||
// Version present in Opera 10 and newer | |||
i += 9; // " version/".length | |||
} else { | |||
i = userAgent.indexOf("opera/") + 6; | |||
} | |||
browserMajorVersion = Integer.parseInt(userAgent | |||
.substring(i, i + 2).replace(".", "")); | |||
} | |||
} | |||
/** | |||
* Tests if the browser is Firefox. | |||
* | |||
* @return true if it is Firefox, false otherwise | |||
*/ | |||
public boolean isFirefox() { | |||
return isFirefox; | |||
} | |||
/** | |||
* Tests if the browser is using the Gecko engine | |||
* | |||
* @return true if it is Gecko, false otherwise | |||
*/ | |||
public boolean isGecko() { | |||
return isGecko; | |||
} | |||
/** | |||
* Tests if the browser is using the WebKit engine | |||
* | |||
* @return true if it is WebKit, false otherwise | |||
*/ | |||
public boolean isWebKit() { | |||
return isWebKit; | |||
} | |||
/** | |||
* Tests if the browser is using the Presto engine | |||
* | |||
* @return true if it is Presto, false otherwise | |||
*/ | |||
public boolean isPresto() { | |||
return isPresto; | |||
} | |||
/** | |||
* Tests if the browser is Safari. | |||
* | |||
* @return true if it is Safari, false otherwise | |||
*/ | |||
public boolean isSafari() { | |||
return isSafari; | |||
} | |||
/** | |||
* Tests if the browser is Chrome. | |||
* | |||
* @return true if it is Chrome, false otherwise | |||
*/ | |||
public boolean isChrome() { | |||
return isChrome; | |||
} | |||
/** | |||
* Tests if the browser is Opera. | |||
* | |||
* @return true if it is Opera, false otherwise | |||
*/ | |||
public boolean isOpera() { | |||
return isOpera; | |||
} | |||
/** | |||
* Tests if the browser is Internet Explorer. | |||
* | |||
* @return true if it is Internet Explorer, false otherwise | |||
*/ | |||
public boolean isIE() { | |||
return isIE; | |||
} | |||
/** | |||
* Returns the version of the browser engine. For WebKit this is an integer | |||
* e.g., 532.0. For gecko it is a float e.g., 1.8 or 1.9. | |||
* | |||
* @return The version of the browser engine | |||
*/ | |||
public float getBrowserEngineVersion() { | |||
return browserEngineVersion; | |||
} | |||
/** | |||
* Returns the browser major version e.g., 3 for Firefox 3.5, 4 for Chrome | |||
* 4, 8 for Internet Explorer 8. | |||
* | |||
* <pre> | |||
* Note that Internet Explorer 8 in compatibility mode will return 7. | |||
* </pre> | |||
* | |||
* @return The major version of the browser. | |||
*/ | |||
public final int getBrowserMajorVersion() { | |||
return browserMajorVersion; | |||
} | |||
/** | |||
* Marks that IE8 is used in compatibility mode. This forces the browser | |||
* version to 7 even if it otherwise was detected as 8. | |||
* | |||
*/ | |||
public void setIE8InCompatibilityMode() { | |||
if (isIE && browserMajorVersion == 8) { | |||
browserMajorVersion = 7; | |||
} | |||
} | |||
} |
@@ -7,8 +7,16 @@ package com.vaadin.terminal.gwt.server; | |||
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; | |||
@@ -18,26 +26,30 @@ public class WebBrowser implements Terminal { | |||
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; | |||
@@ -46,7 +58,7 @@ public class WebBrowser implements Terminal { | |||
/** | |||
* Get the browser user-agent string. | |||
* | |||
* @return | |||
* @return The raw browser userAgent string | |||
*/ | |||
public String getBrowserApplication() { | |||
return browserApplication; | |||
@@ -54,7 +66,21 @@ public class WebBrowser implements Terminal { | |||
/** | |||
* 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) { | |||
@@ -63,6 +89,7 @@ public class WebBrowser implements Terminal { | |||
this.secureConnection = secureConnection; | |||
if (agent != null) { | |||
browserApplication = agent; | |||
browserDetails = new VBrowserDetails(agent); | |||
} | |||
if (sw != null) { | |||
@@ -76,7 +103,7 @@ public class WebBrowser implements Terminal { | |||
} | |||
/** | |||
* 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 | |||
@@ -95,4 +122,92 @@ public class WebBrowser implements Terminal { | |||
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(); | |||
} | |||
} |
@@ -0,0 +1,217 @@ | |||
package com.vaadin.tests.server; | |||
import junit.framework.TestCase; | |||
import com.vaadin.terminal.gwt.client.VBrowserDetails; | |||
public class BrowserUserAgentParser extends TestCase { | |||
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"; | |||
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"; | |||
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)"; | |||
private static final String IE6 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"; | |||
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)"; | |||
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)"; | |||
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)"; | |||
// "Version/" was added in 10.00 | |||
private static final String OPERA960 = "Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1"; | |||
private static final String OPERA1010 = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.10"; | |||
private static final String OPERA1050 = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.5.22 Version/10.50"; | |||
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"; | |||
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"; | |||
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"; | |||
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"; | |||
public void testSafari3() { | |||
VBrowserDetails bd = new VBrowserDetails(SAFARI3); | |||
assertWebKit(bd); | |||
assertSafari(bd); | |||
assertBrowserMajorVersion(bd, 3); | |||
assertEngineVersion(bd, 525.0f); | |||
} | |||
public void testSafari4() { | |||
VBrowserDetails bd = new VBrowserDetails(SAFARI4); | |||
assertWebKit(bd); | |||
assertSafari(bd); | |||
assertBrowserMajorVersion(bd, 4); | |||
assertEngineVersion(bd, 531f); | |||
} | |||
public void testChrome3() { | |||
VBrowserDetails bd = new VBrowserDetails(CHROME3); | |||
assertWebKit(bd); | |||
assertChrome(bd); | |||
assertBrowserMajorVersion(bd, 3); | |||
assertEngineVersion(bd, 532.0f); | |||
} | |||
public void testChrome4() { | |||
VBrowserDetails bd = new VBrowserDetails(CHROME4); | |||
assertWebKit(bd); | |||
assertChrome(bd); | |||
assertBrowserMajorVersion(bd, 4); | |||
assertEngineVersion(bd, 532f); | |||
} | |||
public void testFirefox3() { | |||
VBrowserDetails bd = new VBrowserDetails(FIREFOX30); | |||
assertGecko(bd); | |||
assertFirefox(bd); | |||
assertBrowserMajorVersion(bd, 3); | |||
assertEngineVersion(bd, 1.9f); | |||
} | |||
public void testFirefox35() { | |||
VBrowserDetails bd = new VBrowserDetails(FIREFOX35); | |||
assertGecko(bd); | |||
assertFirefox(bd); | |||
assertBrowserMajorVersion(bd, 3); | |||
assertEngineVersion(bd, 1.9f); | |||
} | |||
public void testFirefox36() { | |||
VBrowserDetails bd = new VBrowserDetails(FIREFOX36); | |||
assertGecko(bd); | |||
assertFirefox(bd); | |||
assertBrowserMajorVersion(bd, 3); | |||
assertEngineVersion(bd, 1.9f); | |||
} | |||
public void testOpera960() { | |||
VBrowserDetails bd = new VBrowserDetails(OPERA960); | |||
assertPresto(bd); | |||
assertOpera(bd); | |||
assertBrowserMajorVersion(bd, 9); | |||
} | |||
public void testOpera1010() { | |||
VBrowserDetails bd = new VBrowserDetails(OPERA1010); | |||
assertPresto(bd); | |||
assertOpera(bd); | |||
assertBrowserMajorVersion(bd, 10); | |||
} | |||
public void testOpera1050() { | |||
VBrowserDetails bd = new VBrowserDetails(OPERA1050); | |||
assertPresto(bd); | |||
assertOpera(bd); | |||
assertBrowserMajorVersion(bd, 10); | |||
} | |||
public void testIE6() { | |||
VBrowserDetails bd = new VBrowserDetails(IE6); | |||
// assertTrident(bd); | |||
assertIE(bd); | |||
assertBrowserMajorVersion(bd, 6); | |||
} | |||
public void testIE7() { | |||
VBrowserDetails bd = new VBrowserDetails(IE7); | |||
// assertTrident(bd); | |||
assertIE(bd); | |||
assertBrowserMajorVersion(bd, 7); | |||
} | |||
public void testIE8() { | |||
VBrowserDetails bd = new VBrowserDetails(IE8); | |||
// assertTrident(bd); | |||
assertIE(bd); | |||
assertBrowserMajorVersion(bd, 8); | |||
} | |||
public void testIE8CompatibilityMode() { | |||
VBrowserDetails bd = new VBrowserDetails(IE8_IN_IE7_MODE); | |||
bd.setIE8InCompatibilityMode(); | |||
// assertTrident(bd); | |||
assertIE(bd); | |||
assertBrowserMajorVersion(bd, 7); | |||
} | |||
/* | |||
* Helper methods below | |||
*/ | |||
private void assertEngineVersion(VBrowserDetails browserDetails, | |||
float version) { | |||
assertEquals(version, browserDetails.getBrowserEngineVersion()); | |||
} | |||
private void assertBrowserMajorVersion(VBrowserDetails browserDetails, | |||
int version) { | |||
assertEquals(version, browserDetails.getBrowserMajorVersion()); | |||
} | |||
private void assertGecko(VBrowserDetails browserDetails) { | |||
// Engine | |||
assertTrue(browserDetails.isGecko()); | |||
assertFalse(browserDetails.isWebKit()); | |||
assertFalse(browserDetails.isPresto()); | |||
} | |||
private void assertPresto(VBrowserDetails browserDetails) { | |||
// Engine | |||
assertFalse(browserDetails.isGecko()); | |||
assertFalse(browserDetails.isWebKit()); | |||
assertTrue(browserDetails.isPresto()); | |||
} | |||
private void assertWebKit(VBrowserDetails browserDetails) { | |||
// Engine | |||
assertFalse(browserDetails.isGecko()); | |||
assertTrue(browserDetails.isWebKit()); | |||
assertFalse(browserDetails.isPresto()); | |||
} | |||
private void assertFirefox(VBrowserDetails browserDetails) { | |||
// Browser | |||
assertTrue(browserDetails.isFirefox()); | |||
assertFalse(browserDetails.isChrome()); | |||
assertFalse(browserDetails.isIE()); | |||
assertFalse(browserDetails.isOpera()); | |||
assertFalse(browserDetails.isSafari()); | |||
} | |||
private void assertChrome(VBrowserDetails browserDetails) { | |||
// Browser | |||
assertFalse(browserDetails.isFirefox()); | |||
assertTrue(browserDetails.isChrome()); | |||
assertFalse(browserDetails.isIE()); | |||
assertFalse(browserDetails.isOpera()); | |||
assertFalse(browserDetails.isSafari()); | |||
} | |||
private void assertIE(VBrowserDetails browserDetails) { | |||
// Browser | |||
assertFalse(browserDetails.isFirefox()); | |||
assertFalse(browserDetails.isChrome()); | |||
assertTrue(browserDetails.isIE()); | |||
assertFalse(browserDetails.isOpera()); | |||
assertFalse(browserDetails.isSafari()); | |||
} | |||
private void assertOpera(VBrowserDetails browserDetails) { | |||
// Browser | |||
assertFalse(browserDetails.isFirefox()); | |||
assertFalse(browserDetails.isChrome()); | |||
assertFalse(browserDetails.isIE()); | |||
assertTrue(browserDetails.isOpera()); | |||
assertFalse(browserDetails.isSafari()); | |||
} | |||
private void assertSafari(VBrowserDetails browserDetails) { | |||
// Browser | |||
assertFalse(browserDetails.isFirefox()); | |||
assertFalse(browserDetails.isChrome()); | |||
assertFalse(browserDetails.isIE()); | |||
assertFalse(browserDetails.isOpera()); | |||
assertTrue(browserDetails.isSafari()); | |||
} | |||
} |