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);