diff --git a/user/test/com/google/gwt/user/client/ui/ElementWrappingTest.java b/user/test/com/google/gwt/user/client/ui/ElementWrappingTest.java index c20221a782..6bb932e246 100644 --- a/user/test/com/google/gwt/user/client/ui/ElementWrappingTest.java +++ b/user/test/com/google/gwt/user/client/ui/ElementWrappingTest.java @@ -64,13 +64,13 @@ public void testButton() { public void testDetachNowTwiceFails() { // Testing hosted-mode-only assertion. if (!GWT.isScript()) { + // Trying to pass the same widget to RootPanel.detachNow() twice + // should fail an assertion. + ensureDiv().setInnerHTML( + "myAnchor"); + Anchor a = Anchor.wrap(Document.get().getElementById("foo")); + RootPanel.detachNow(a); // pass try { - // Trying to pass the same widget to RootPanel.detachNow() twice - // should fail an assertion. - ensureDiv().setInnerHTML( - "myAnchor"); - Anchor a = Anchor.wrap(Document.get().getElementById("foo")); - RootPanel.detachNow(a); // pass RootPanel.detachNow(a); // fail throw new Error("Expected assertion failure calling detachNow() twice"); } catch (AssertionError e) { diff --git a/user/test/com/google/gwt/user/client/ui/ImageTest.java b/user/test/com/google/gwt/user/client/ui/ImageTest.java index 15189f39b7..4123ff715d 100644 --- a/user/test/com/google/gwt/user/client/ui/ImageTest.java +++ b/user/test/com/google/gwt/user/client/ui/ImageTest.java @@ -790,11 +790,28 @@ public void testWrapOfSubclass() { assertNotNull(image); // Cleanup. + Document.get().getBody().removeChild(div); RootPanel.detachNow(image); } /** - * Same test, but with removeFromParent + * Same test, but don't remove from the dom first + */ + public void testWrapOfSubclassWithoutRemove() { + String uid = Document.get().createUniqueId(); + DivElement div = Document.get().createDivElement(); + div.setInnerHTML(""); + Document.get().getBody().appendChild(div); + + final TestImage image = TestImage.wrap(Document.get().getElementById(uid)); + assertNotNull(image); + + // Cleanup. + RootPanel.detachNow(image); + } + + /** + * Same test, but with removeFromParent instead of detachNow */ public void testRemoveFromParent() { String uid = Document.get().createUniqueId(); @@ -805,6 +822,24 @@ public void testRemoveFromParent() { final TestImage image = TestImage.wrap(Document.get().getElementById(uid)); assertNotNull(image); + // Cleanup. + Document.get().getBody().removeChild(div); + image.removeFromParent(); + } + + /** + * Same test, but with removeFromParent isntead of detachNow, and don't remove the dom manually + * first. + */ + public void testRemoveFromParentWithoutRemove() { + String uid = Document.get().createUniqueId(); + DivElement div = Document.get().createDivElement(); + div.setInnerHTML(""); + Document.get().getBody().appendChild(div); + + final TestImage image = TestImage.wrap(Document.get().getElementById(uid)); + assertNotNull(image); + // Cleanup. image.removeFromParent(); }