Remove coercion to null in Element#getPropertyObject

Now that Boolean and Doubles are never boxed, the coercion to null
meant that getPropertyObject will actually coerce a boolean false or
number 0 or NaN to null rather than returning a java.lang.Boolean or
java.lang.Double respectively.
There's a small breaking change for empty-string values that would
no longer be coerced to null.

Bug: #9455
Change-Id: I1afd13443845e7509989c4d44f6858cb709ca92d
Bug-Link: https://github.com/gwtproject/gwt/issues/9455
diff --git a/user/src/com/google/gwt/dom/client/Element.java b/user/src/com/google/gwt/dom/client/Element.java
index 55a3899..ef8bf34 100644
--- a/user/src/com/google/gwt/dom/client/Element.java
+++ b/user/src/com/google/gwt/dom/client/Element.java
@@ -401,7 +401,7 @@
    * @return the property value
    */
   public final native Object getPropertyObject(String name) /*-{
-    return this[name] || null;
+    return this[name];
   }-*/;
 
   /**
diff --git a/user/test/com/google/gwt/dom/client/ElementTest.java b/user/test/com/google/gwt/dom/client/ElementTest.java
index db8ba28..0b4fafa 100644
--- a/user/test/com/google/gwt/dom/client/ElementTest.java
+++ b/user/test/com/google/gwt/dom/client/ElementTest.java
@@ -521,6 +521,22 @@
     JavaScriptObject jso = createTrivialJSO();
     div.setPropertyJSO("tintin", jso);
     assertEquals(jso, div.getPropertyJSO("tintin"));
+
+    assertNull(div.getPropertyObject("inexistant_property_at_least_we_hope_so"));
+    div.setPropertyObject("baz", Boolean.TRUE);
+    assertEquals(Boolean.TRUE, div.getPropertyObject("baz"));
+    div.setPropertyObject("baz", Boolean.FALSE);
+    assertEquals(Boolean.FALSE, div.getPropertyObject("baz"));
+    div.setPropertyObject("baz", 42.0);
+    assertEquals(42.0, div.getPropertyObject("baz"));
+    div.setPropertyObject("baz", 0.0);
+    assertEquals(0.0, div.getPropertyObject("baz"));
+    div.setPropertyObject("baz", Double.NaN);
+    assertTrue(Double.isNaN((Double) div.getPropertyObject("baz")));
+    div.setPropertyObject("baz", "tintin");
+    assertEquals("tintin", div.getPropertyObject("baz"));
+    div.setPropertyObject("baz", "");
+    assertEquals("", div.getPropertyObject("baz"));
   }
 
   /**