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