Reviewers: rjrjr, Description: See http://gwt-code-reviews.appspot.com/25801/show
Please review this at http://gwt-code-reviews.appspot.com/25803 Affected files: user/src/com/google/gwt/event/shared/HandlerManager.java user/test/com/google/gwt/event/shared/HandlerManagerTest.java Index: user/src/com/google/gwt/event/shared/HandlerManager.java =================================================================== --- user/src/com/google/gwt/event/shared/HandlerManager.java (revision 5265) +++ user/src/com/google/gwt/event/shared/HandlerManager.java (working copy) @@ -32,7 +32,7 @@ * Interface for queued add/remove operations. */ private interface AddOrRemoveCommand { - public void execute(); + void execute(); } /** @@ -90,8 +90,8 @@ private <H> void removeHandler(GwtEvent.Type<H> eventKey, H handler) { ArrayList<H> l = get(eventKey); - boolean result = l.remove(handler); - if (l.size() == 0) { + boolean result = (l == null) ? false : l.remove(handler); + if (result && l.size() == 0) { map.remove(eventKey); } assert result : "Tried to remove unknown handler: " + handler + " from " Index: user/test/com/google/gwt/event/shared/HandlerManagerTest.java =================================================================== --- user/test/com/google/gwt/event/shared/HandlerManagerTest.java (revision 5265) +++ user/test/com/google/gwt/event/shared/HandlerManagerTest.java (working copy) @@ -260,6 +260,25 @@ assertFired(mouse1, adaptor1, mouse3); } + public void testRemoveUnhandledType() { + final HandlerManager manager = new HandlerManager("bogus source"); + HandlerRegistration reg = manager.addHandler(MouseDownEvent.getType(), + mouse1); + reg.removeHandler(); + + if (!GWT.isScript()) { + try { + reg.removeHandler(); + fail("Should have thrown assertion error"); + } catch (AssertionError e) { + /* pass */ + } + } else { + reg.removeHandler(); + /* pass, we didn't hit an NPE */ + } + } + public void testReverseOrder() { // Add some handlers to a manager final HandlerManager manager = new HandlerManager("source1", true); --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---