Fixes web mode ordering issue with type checks. Foreign event handlers were tripping an exception by type-checking EventHandler first; the foriegn object would be seen to have a typeId, and that typeId would be outside the legal range for the current module. This would trip an exception. Review by: rjrjr git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@3933 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/impl/DOMImpl.java b/user/src/com/google/gwt/user/client/impl/DOMImpl.java index b9d1a5b..30da21c 100644 --- a/user/src/com/google/gwt/user/client/impl/DOMImpl.java +++ b/user/src/com/google/gwt/user/client/impl/DOMImpl.java
@@ -33,16 +33,16 @@ */ protected static boolean isMyListener(Object object) { /* - * The first test ensures the Object belongs to this module in hosted mode, - * because this hosted mode class loader will have a different copy of the - * EventListener class than some other module would have. + * The first test ensures the Object belongs to this module in web mode by + * ensuring this is not a JavaScriptObject. In web mode, foreign Java + * objects appear to be JavaScriptObject. See Cast.isJavaScriptObject(). * - * However, in web mode we could still get a collision where another module - * happens to use the same typeId. The second test ensures the Object is not - * "foreign". See Cast.isJavaScriptObject(). + * The second test then checks the exact type. + * + * TODO: make the generated code smaller! */ - return object instanceof com.google.gwt.user.client.EventListener - && !(object instanceof JavaScriptObject); + return !(object instanceof JavaScriptObject) + && (object instanceof com.google.gwt.user.client.EventListener); } public native void eventCancelBubble(Event evt, boolean cancel) /*-{