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

Reply via email to