if (isIE) {\r
String ieVersionString = userAgent.substring(userAgent\r
.indexOf("msie ") + 5);\r
- ieVersionString = ieVersionString.substring(0, ieVersionString\r
+ ieVersionString = safeSubstring(ieVersionString, 0, ieVersionString\r
.indexOf(";"));\r
parseVersionString(ieVersionString);\r
} else if (isFirefox) {\r
int i = userAgent.indexOf(" firefox/") + 9;\r
- parseVersionString(userAgent.substring(i, i + 5));\r
+ parseVersionString(safeSubstring(userAgent, i, i + 5));\r
} else if (isChrome) {\r
int i = userAgent.indexOf(" chrome/") + 8;\r
- parseVersionString(userAgent.substring(i, i + 5));\r
+ parseVersionString(safeSubstring(userAgent, i, i + 5));\r
} else if (isSafari) {\r
int i = userAgent.indexOf(" version/") + 9;\r
- parseVersionString(userAgent.substring(i, i + 5));\r
+ parseVersionString(safeSubstring(userAgent, i, i + 5));\r
} else if (isOpera) {\r
int i = userAgent.indexOf(" version/");\r
if (i != -1) {\r
} else {\r
i = userAgent.indexOf("opera/") + 6;\r
}\r
- parseVersionString(userAgent.substring(i, i + 5));\r
+ parseVersionString(safeSubstring(userAgent, i, i + 5));\r
}\r
\r
}\r
\r
private void parseVersionString(String versionString) {\r
int idx = versionString.indexOf('.');\r
+ if (idx < 0) {\r
+ idx = versionString.length();\r
+ }\r
+ browserMajorVersion = Integer.parseInt(safeSubstring(versionString, 0,\r
+ idx));\r
+\r
int idx2 = versionString.indexOf('.', idx + 1);\r
if (idx2 < 0) {\r
idx2 = versionString.length();\r
}\r
- browserMajorVersion = Integer.parseInt(versionString.substring(0, idx));\r
try {\r
- browserMinorVersion = Integer.parseInt(versionString.substring(\r
+ browserMinorVersion = Integer.parseInt(safeSubstring(versionString,\r
idx + 1, idx2).replaceAll("[^0-9].*", ""));\r
} catch (NumberFormatException e) {\r
// leave the minor version unmodified (-1 = unknown)\r
}\r
}\r
\r
+ private String safeSubstring(String string, int beginIndex, int endIndex) {\r
+ if (beginIndex < 0) {\r
+ beginIndex = 0;\r
+ }\r
+ if (endIndex < 0) {\r
+ endIndex = string.length();\r
+ }\r
+ return string.substring(beginIndex, endIndex);\r
+ }\r
+\r
/**\r
* Tests if the browser is Firefox.\r
* \r