Reviewers: Dan Rice,
Description:
DOMImpl#eventGetTypeInt returns NULL for unknown event types instead of
an int, resulting in an exception.
Fix:
===
Added default case that returns -1 and updated JavaDoc.
Testing:
========
Added a unit test.
Please review this at http://gwt-code-reviews.appspot.com/222801
Affected files:
user/src/com/google/gwt/user/client/DOM.java
user/src/com/google/gwt/user/client/Event.java
user/src/com/google/gwt/user/client/impl/DOMImpl.java
user/test/com/google/gwt/user/client/EventTest.java
Index: user/test/com/google/gwt/user/client/EventTest.java
===================================================================
--- user/test/com/google/gwt/user/client/EventTest.java (revision 7734)
+++ user/test/com/google/gwt/user/client/EventTest.java (working copy)
@@ -381,6 +381,24 @@
assertTrue(Event.fireNativePreviewEvent(null));
}
+ public void testGetTypeInt() {
+ assertEquals(Event.ONBLUR, Event.getTypeInt("blur"));
+ assertEquals(Event.ONCHANGE, Event.getTypeInt("change"));
+ assertEquals(Event.ONCLICK, Event.getTypeInt("click"));
+ assertEquals(Event.ONERROR, Event.getTypeInt("error"));
+ assertEquals(Event.ONFOCUS, Event.getTypeInt("focus"));
+ assertEquals(Event.ONKEYDOWN, Event.getTypeInt("keydown"));
+ assertEquals(Event.ONKEYPRESS, Event.getTypeInt("keypress"));
+ assertEquals(Event.ONKEYUP, Event.getTypeInt("keyup"));
+ assertEquals(Event.ONLOAD, Event.getTypeInt("load"));
+ assertEquals(Event.ONMOUSEDOWN, Event.getTypeInt("mousedown"));
+ assertEquals(Event.ONMOUSEMOVE, Event.getTypeInt("mousemove"));
+ assertEquals(Event.ONMOUSEOUT, Event.getTypeInt("mouseout"));
+ assertEquals(Event.ONMOUSEOVER, Event.getTypeInt("mouseover"));
+ assertEquals(Event.ONMOUSEUP, Event.getTypeInt("mouseup"));
+ assertEquals(-1, Event.getTypeInt("undefined"));
+ }
+
/**
* Test that legacy EventPreview and NativePreviewHandlers can both
cancel the
* event.
Index: user/src/com/google/gwt/user/client/DOM.java
===================================================================
--- user/src/com/google/gwt/user/client/DOM.java (revision 7734)
+++ user/src/com/google/gwt/user/client/DOM.java (working copy)
@@ -585,7 +585,7 @@
* Gets the enumerated type of this event (as defined in {...@link Event}).
*
* @param evt the event to be tested
- * @return the event's enumerated type
+ * @return the event's enumerated type, or -1 if not defined
*/
public static int eventGetType(Event evt) {
return impl.eventGetTypeInt(evt);
Index: user/src/com/google/gwt/user/client/impl/DOMImpl.java
===================================================================
--- user/src/com/google/gwt/user/client/impl/DOMImpl.java (revision 7734)
+++ user/src/com/google/gwt/user/client/impl/DOMImpl.java (working copy)
@@ -84,6 +84,7 @@
case "DOMMouseScroll": return 0x20000;
case "contextmenu": return 0x40000;
case "paste": return 0x80000;
+ default: return -1;
}
}-*/;
Index: user/src/com/google/gwt/user/client/Event.java
===================================================================
--- user/src/com/google/gwt/user/client/Event.java (revision 7734)
+++ user/src/com/google/gwt/user/client/Event.java (working copy)
@@ -485,7 +485,7 @@
* Gets the enumerated type of this event given a valid event type name.
*
* @param typeName the typeName to be tested
- * @return the event's enumerated type
+ * @return the event's enumerated type, or -1 if not defined
*/
public static int getTypeInt(String typeName) {
return DOM.impl.eventGetTypeInt(typeName);
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors