Reviewers: jgw, Description: Sometimes its nice to now the user agent property at runtime to do runtime checks. This patch adds a method to GWT to get the user agent property.
I verified that the return value is correct on all browsers. Please review this at http://gwt-code-reviews.appspot.com/57804 Affected files: user/src/com/google/gwt/core/client/GWT.java user/src/com/google/gwt/core/client/impl/Impl.java user/src/com/google/gwt/user/UserAgent.gwt.xml Index: user/src/com/google/gwt/core/client/GWT.java =================================================================== --- user/src/com/google/gwt/core/client/GWT.java (revision 5913) +++ user/src/com/google/gwt/core/client/GWT.java (working copy) @@ -164,6 +164,15 @@ return sUncaughtExceptionHandler; } + /** + * Get the user agent property value as defined by GWT (eg. ie6, safari). + * + * @return the user.agent GWT property + */ + public static String getUserAgentProperty() { + return Impl.getUserAgentProperty(); + }; + public static String getVersion() { if (sGWTBridge == null) { return getVersion0(); Index: user/src/com/google/gwt/core/client/impl/Impl.java =================================================================== --- user/src/com/google/gwt/core/client/impl/Impl.java (revision 5913) +++ user/src/com/google/gwt/core/client/impl/Impl.java (working copy) @@ -95,6 +95,10 @@ return $strongName; }-*/; + public static native String getUserAgentProperty() /*-{ + return $wnd.__gwt_userAgent; + }-*/; + /** * Called from JSNI. Do not change this implementation without updating: * <ul> Index: user/src/com/google/gwt/user/UserAgent.gwt.xml =================================================================== --- user/src/com/google/gwt/user/UserAgent.gwt.xml (revision 5913) +++ user/src/com/google/gwt/user/UserAgent.gwt.xml (working copy) @@ -26,20 +26,23 @@ var makeVersion = function(result) { return (parseInt(result[1]) * 1000) + parseInt(result[2]); }; + var setUserAgent = function(userAgent) { + return $wnd.__gwt_userAgent = userAgent; + } if (ua.indexOf("opera") != -1) { - return "opera"; + return setUserAgent("opera"); } else if (ua.indexOf("webkit") != -1) { - return "safari"; + return setUserAgent("safari"); } else if (ua.indexOf("msie") != -1) { if (document.documentMode >= 8) { - return "ie8"; + return setUserAgent("ie8"); } else { var result = /msie ([0-9]+)\.([0-9]+)/.exec(ua); if (result && result.length == 3) { var v = makeVersion(result); if (v >= 6000) { - return "ie6"; + return setUserAgent("ie6"); } } } @@ -47,11 +50,11 @@ var result = /rv:([0-9]+)\.([0-9]+)/.exec(ua); if (result && result.length == 3) { if (makeVersion(result) >= 1008) - return "gecko1_8"; + return setUserAgent("gecko1_8"); } - return "gecko"; + return setUserAgent("gecko"); } - return "unknown"; + return setUserAgent("unknown"); ]]></property-provider> <!-- Deferred binding to optimize JRE classes based on user agent. --> --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---