Author: j...@google.com Date: Mon May 11 08:10:30 2009 New Revision: 5332 Modified: releases/1.6/user/src/com/google/gwt/dom/client/Element.java releases/1.6/user/src/com/google/gwt/dom/client/Node.java releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java releases/1.6/user/test/com/google/gwt/dom/client/NodeTest.java
Log: Fixes issue 3644. Code review: http://gwt-code-reviews.appspot.com/34801 Modified: releases/1.6/user/src/com/google/gwt/dom/client/Element.java ============================================================================== --- releases/1.6/user/src/com/google/gwt/dom/client/Element.java (original) +++ releases/1.6/user/src/com/google/gwt/dom/client/Element.java Mon May 11 08:10:30 2009 @@ -42,7 +42,8 @@ /** * Determines whether the given {...@link JavaScriptObject} can be cast to an - * {...@link Element}. + * {...@link Element}. A <code>null</code> object will cause this method to + * return <code>false</code>. */ public static boolean is(JavaScriptObject o) { if (Node.is(o)) { @@ -53,9 +54,11 @@ /** * Determine whether the given {...@link Node} can be cast to an {...@link Element}. + * A <code>null</code> node will cause this method to return + * <code>false</code>. */ public static boolean is(Node node) { - return node.getNodeType() == Node.ELEMENT_NODE; + return (node != null) && (node.getNodeType() == Node.ELEMENT_NODE); } protected Element() { Modified: releases/1.6/user/src/com/google/gwt/dom/client/Node.java ============================================================================== --- releases/1.6/user/src/com/google/gwt/dom/client/Node.java (original) +++ releases/1.6/user/src/com/google/gwt/dom/client/Node.java Mon May 11 08:10:30 2009 @@ -50,10 +50,12 @@ } /** - * Determines whether the given {...@link JavaScriptObject} is a DOM node. + * Determines whether the given {...@link JavaScriptObject} is a DOM node. A + * <code>null</code> object will cause this method to return + * <code>false</code>. */ public static native boolean is(JavaScriptObject o) /*-{ - return !!o.nodeType; + return (!!o) && (!!o.nodeType); }-*/; protected Node() { Modified: releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java ============================================================================== --- releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java (original) +++ releases/1.6/user/test/com/google/gwt/dom/client/ElementTest.java Mon May 11 08:10:30 2009 @@ -377,4 +377,18 @@ } } } + + /** + * Tests Element.is() and Element.as(). + */ + public void testIsAndAs() { + assertFalse(Element.is(Document.get())); + + Node div = Document.get().createDivElement(); + assertTrue(Element.is(div)); + assertEquals("div", Element.as(div).getTagName().toLowerCase()); + + // Element.is(null) is allowed and should return false. + assertFalse(Element.is(null)); + } } Modified: releases/1.6/user/test/com/google/gwt/dom/client/NodeTest.java ============================================================================== --- releases/1.6/user/test/com/google/gwt/dom/client/NodeTest.java (original) +++ releases/1.6/user/test/com/google/gwt/dom/client/NodeTest.java Mon May 11 08:10:30 2009 @@ -15,6 +15,7 @@ */ package com.google.gwt.dom.client; +import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.junit.client.GWTTestCase; /** @@ -184,5 +185,18 @@ div.replaceChild(btn1, btn0); assertEquals(btn1, txt0.getNextSibling()); assertEquals(btn1, txt1.getPreviousSibling()); + } + + /** + * Tests Element.is() and Element.as(). + */ + public void testIsAndAs() { + assertTrue(Node.is(Document.get())); + + JavaScriptObject text = Document.get().createTextNode("foo"); + assertTrue(Node.is(text)); + + // Node.is(null) is allowed and should return false. + assertFalse(Node.is(null)); } } --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---