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