Reviewers: jat,


Please review this at http://gwt-code-reviews.appspot.com/106802

Affected files:
   user/src/com/google/gwt/json/client/JSONObject.java


Index: user/src/com/google/gwt/json/client/JSONObject.java
===================================================================
--- user/src/com/google/gwt/json/client/JSONObject.java (revision 7030)
+++ user/src/com/google/gwt/json/client/JSONObject.java (working copy)
@@ -195,7 +195,9 @@
    private native void addAllKeys(Collection<String> s) /*-{
      var jsObject = th...@com.google.gwt.json.client.jsonobject::jsObject;
      for (var key in jsObject) {
-      s...@java.util.collection::add(Ljava/lang/Object;)(key);
+      if (jsObject.hasOwnProperty(key)) {
+        s...@java.util.collection::add(Ljava/lang/Object;)(key);
+      }
      }
    }-*/;

@@ -213,7 +215,9 @@
      var jsObject = th...@com.google.gwt.json.client.jsonobject::jsObject;
      var i = 0;
      for (var key in jsObject) {
-      result[i++] = key;
+      if (jsObject.hasOwnProperty(key)) {
+        result[i++] = key;
+      }
      }
      return result;
    }-*/;
@@ -222,15 +226,27 @@
      var jsObject = th...@com.google.gwt.json.client.jsonobject::jsObject;
      var size = 0;
      for (var key in jsObject) {
-      ++size;
+      if (jsObject.hasOwnProperty(key)) {
+        ++size;
+      }
      }
      return size;
    }-*/;

    private native JSONValue get0(String key) /*-{
-    var v = th...@com.google.gwt.json.client.jsonobject::jsObject[key];
+    var jsObject = th...@com.google.gwt.json.client.jsonobject::jsObject;
+    var v;
+    // In Firefox, jsObject.hasOwnProperty(key) == true does not imply
+    //   jsObject.hasOwnProperty(new String(key)) == true
+    if ((typeof key == 'object') && (key.constructor == String)) {
+      key = key.toString();
+    }
+    if (jsObject.hasOwnProperty(key)) {
+      v = jsObject[key];
+    }
      var func = @com.google.gwt.json.client.JSONParser::typeMap[typeof v];
-    return func ? func(v) :  
@com.google.gwt.json.client.JSONParser::throwUnknownTypeException(Ljava/lang/String;)(typeof
  
v);
+    var ret = func ? func(v) :  
@com.google.gwt.json.client.JSONParser::throwUnknownTypeException(Ljava/lang/String;)(typeof
  
v);
+    return ret;
    }-*/;

    private native void put0(String key, JSONValue value) /*-{


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to