Fixed DOMRtlTest.testGetAbsolutePositionWhenScrolled(). We now allow the return value of getAbsoluteLeft to be off by 1px, which is possible in FF2 if the element is in a scrollable div. Patch by: jlabanca Review by: ecc (desk) git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4796 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/dom/client/DOMImplMozilla.java b/user/src/com/google/gwt/dom/client/DOMImplMozilla.java index 1ff4cc3..48b9c77 100644 --- a/user/src/com/google/gwt/dom/client/DOMImplMozilla.java +++ b/user/src/com/google/gwt/dom/client/DOMImplMozilla.java
@@ -51,6 +51,8 @@ // here due to a change in getBoxObjectFor which causes inconsistencies // on whether the calculations are inside or outside of the element's // border. + // If the element is in a scrollable div, getBoxObjectFor(elem) can return + // a value that varies by 1 pixel. return $doc.getBoxObjectFor(elem).screenX - $doc.getBoxObjectFor($doc.documentElement).screenX; }
diff --git a/user/test/com/google/gwt/user/client/ui/DOMRtlTest.java b/user/test/com/google/gwt/user/client/ui/DOMRtlTest.java index 5537c7e..025034d 100644 --- a/user/test/com/google/gwt/user/client/ui/DOMRtlTest.java +++ b/user/test/com/google/gwt/user/client/ui/DOMRtlTest.java
@@ -33,10 +33,8 @@ /** * Tests {@link DOM#getAbsoluteLeft(Element)} for consistency when the element * contains children and has scrollbars. - * - * TODO(jlabanca): Activate this test (deactivated on 2/18/09) */ - public void disabledTestGetAbsolutePositionWhenScrolled() { + public void testGetAbsolutePositionWhenScrolled() { assertTrue(LocaleInfo.getCurrentLocale().isRTL()); final Element outer = DOM.createDiv(); final Element inner = DOM.createDiv(); @@ -45,7 +43,7 @@ outer.getStyle().setProperty("position", "absolute"); outer.getStyle().setProperty("overflow", "auto"); outer.getStyle().setPropertyPx("top", 0); - outer.getStyle().setPropertyPx("left", 0); + outer.getStyle().setPropertyPx("left", 100); outer.getStyle().setPropertyPx("width", 200); outer.getStyle().setPropertyPx("height", 200); RootPanel.getBodyElement().appendChild(outer); @@ -58,9 +56,11 @@ // Check the position when scrolled outer.setScrollLeft(50); - assertTrue(outer.getScrollLeft() > 0); - assertEquals(-50, inner.getAbsoluteLeft() - - Document.get().getBodyOffsetLeft()); + assertEquals(outer.getScrollLeft(), 50); + int absLeft = inner.getAbsoluteLeft() - Document.get().getBodyOffsetLeft(); + // TODO (jlabanca): FF2 incorrectly reports the absolute left as 49. When + // we drop FF2 support, the only valid return value is 50. + assertTrue(50 == absLeft || 49 == absLeft); // Cleanup test RootPanel.getBodyElement().removeChild(outer);