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
-~----------~----~----~----~------~----~------~--~---

Reply via email to