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
-~----------~----~----~----~------~----~------~--~---

Reply via email to