[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.15.1-1414-gc69ee75

eric at webkit.org eric at webkit.org
Thu Oct 29 20:43:37 UTC 2009


The following commit has been merged in the webkit-1.1 branch:
commit 5d6c8a7e41184b9ef76f4a22f430e81d75193add
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Oct 13 04:59:36 2009 +0000

    2009-10-12  Xiaomei Ji  <xji at chromium.org>
    
            Reviewed by Sam Weinig.
    
            Fix issue caretRangeFromPoint() returns wrong result for a zoomed and
            scrolled page.
            https://bugs.webkit.org/show_bug.cgi?id=30034
    
            * fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt:
            * fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html:
            * fast/dom/elementFromPoint-relative-to-viewport-expected.txt:
            * fast/dom/elementFromPoint-relative-to-viewport.html:
    2009-10-12  Xiaomei Ji  <xji at chromium.org>
    
            Reviewed by Sam Weinig.
    
            Fix issue caretRangeFromPoint() returns wrong result for a zoomed and
            scrolled page.
            https://bugs.webkit.org/show_bug.cgi?id=30034
    
            * dom/Document.cpp:
            (WebCore::Document::elementFromPoint): calculate the correct point
            relative to document when the page is zoomed and scrolled.
            (WebCore::Document::caretRangeFromPoint): calculate the correct point
            relative to document when the page is zoomed and scrolled.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@49490 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index a21bd6a..8ac11d3 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,16 @@
+2009-10-12  Xiaomei Ji  <xji at chromium.org>
+
+        Reviewed by Sam Weinig.
+
+        Fix issue caretRangeFromPoint() returns wrong result for a zoomed and 
+        scrolled page.
+        https://bugs.webkit.org/show_bug.cgi?id=30034
+
+        * fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt:
+        * fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html:
+        * fast/dom/elementFromPoint-relative-to-viewport-expected.txt:
+        * fast/dom/elementFromPoint-relative-to-viewport.html:
+
 2009-10-12  Fumitoshi Ukai  <ukai at chromium.org>
 
         Unreviewed.  Fix 4 layout test failures by webkit r49488
diff --git a/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt b/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt
index b41c625..efdd5dc 100644
--- a/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt
+++ b/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport-expected.txt
@@ -21,6 +21,15 @@ PASS Range.startOffset check (got 2, expected 2)
 PASS Range.startContainer check (got [object Text], expected [object Text])
 PASS Range.startOffset check (got 14, expected 14)
  
+PASS Range.startContainer check (got [object Text], expected [object Text])
+PASS Range.startOffset check (got 1, expected 1)
+PASS Range.startContainer check (got [object Text], expected [object Text])
+PASS Range.startOffset check (got 7, expected 7)
+PASS Range.startContainer check (got [object Text], expected [object Text])
+PASS Range.startOffset check (got 3, expected 3)
+PASS Range.startContainer check (got [object Text], expected [object Text])
+PASS Range.startOffset check (got 9, expected 9)
+ 
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html b/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html
index 0d0cd1f..fb21659 100644
--- a/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html
+++ b/LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport.html
@@ -31,7 +31,7 @@
     var elementTop = document.getElementById('test-top'),
         elementBottom = document.getElementById('test-bottom');
 
-    function testsWithBaseline(baselinePos, expectedContainer) {
+    function testsWithBaseline(baselinePos, expectedContainer, zoomOrNot) {
         function test(expectedOffset, scrollByX, scrollByY) {
             var hitPosition = { x: 15, y: 15 },
                 range,
@@ -64,10 +64,18 @@
             window.scrollTo(baselinePos.x + x, baselinePos.y + y);
         }
 
-        test(0, 0, 0);
-        test(12, 0, 25);
-        test(2, 25, 0);
-        test(14, 25, 25);
+        if (zoomOrNot == "zoom") {
+            test(1, 0, 0);
+            test(7, 0, 25);
+            test(3, 50, 0);
+            test(9, 50, 25);
+        } else {
+            test(0, 0, 0);
+            test(12, 0, 25);
+            test(2, 25, 0);
+            test(14, 25, 25);
+        }
+
         debug(" ");
     }
 
@@ -78,10 +86,13 @@
         bottomBaseline = { x: rectBottom.left - 8, y: rectBottom.top - 8 };
 
      // Testing inside initial containing block (top left)
-    testsWithBaseline(topBaseline, elementTop.firstChild);
+    testsWithBaseline(topBaseline, elementTop.firstChild, "none");
 
     // Testing outside initial containing block (mid-page)
-    testsWithBaseline(bottomBaseline, elementBottom.firstChild);
+    testsWithBaseline(bottomBaseline, elementBottom.firstChild, "none");
+
+    eventSender.zoomPageOut();
+    testsWithBaseline(topBaseline, elementTop.firstChild, "zoom");
 
     if (window.layoutTestController) {
         var area = document.getElementById('testArea');
diff --git a/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport-expected.txt b/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport-expected.txt
index c88a511..add9c17 100644
--- a/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport-expected.txt
+++ b/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport-expected.txt
@@ -4,13 +4,17 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS unscrolledBoxInitial is '0'
-PASS scrolledDownBoxInitial is '15'
+PASS scrolledDownBoxInitial is '5'
 PASS scrolledRightBoxInitial is '3'
-PASS scrolledDownAndRightBoxInitial is '18'
+PASS scrolledDownAndRightBoxInitial is '8'
 PASS unscrolledBoxOffscreen is '0'
-PASS scrolledDownBoxOffscreen is '15'
+PASS scrolledDownBoxOffscreen is '5'
 PASS scrolledRightBoxOffscreen is '3'
-PASS scrolledDownAndRightBoxOffscreen is '18'
+PASS scrolledDownAndRightBoxOffscreen is '8'
+PASS unscrolledBoxInitial is '0'
+PASS scrolledDownBoxInitial is '5'
+PASS scrolledRightBoxInitial is '2'
+PASS scrolledDownAndRightBoxInitial is '7'
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport.html b/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport.html
index 4ae3841..c173699 100644
--- a/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport.html
+++ b/LayoutTests/fast/dom/elementFromPoint-relative-to-viewport.html
@@ -39,7 +39,7 @@
 
     description('This test document.elementFromPoint is evaluated in with respect to the viewport, not the document.');
 
-    function testElement(element, label, offsetX, offsetY) {
+    function testElement(element, label, offsetX, offsetY, zoomOrNot) {
         for (var i = 0; i < 25; ++i) {
             var item = document.createElement("div");
             item.className = "testItem";
@@ -71,25 +71,34 @@
         window[unscrolledBox] = getFromPoint(0, 0);
 
         // Test scrolling down
-        window[scrolledDownBox] = getFromPoint(0, 50);
+        window[scrolledDownBox] = getFromPoint(0, 20);
 
         // Test scrolling right
         window[scrolledRightBox] = getFromPoint(50, 0);
 
         // Test scrolling down and right
-        window[scrolledDownAndRightBox] = getFromPoint(50, 50);
+        window[scrolledDownAndRightBox] = getFromPoint(50, 20);
 
         shouldBe(unscrolledBox, "'0'");
-        shouldBe(scrolledDownBox, "'15'");
-        shouldBe(scrolledRightBox, "'3'");
-        shouldBe(scrolledDownAndRightBox, "'18'");
+        shouldBe(scrolledDownBox, "'5'");
+        if (zoomOrNot == "zoom") {
+            shouldBe(scrolledRightBox, "'2'");
+            shouldBe(scrolledDownAndRightBox, "'7'");
+        } else {
+            shouldBe(scrolledRightBox, "'3'");
+            shouldBe(scrolledDownAndRightBox, "'8'");
+        }
     }
 
     var elementInitial = document.getElementById('test-initial');
     var elementOffscreen = document.getElementById('test-offscreen');
     var offset = elementInitial.getBoundingClientRect();
-    testElement(elementInitial, "Initial", offset.left, offset.top);
-    testElement(elementOffscreen, "Offscreen", offset.left, offset.top + 1100);
+    testElement(elementInitial, "Initial", offset.left, offset.top, "none");
+    testElement(elementOffscreen, "Offscreen", offset.left, offset.top + 1100, "none");
+    
+    eventSender.zoomPageOut();
+    testElement(elementInitial, "Initial", offset.left, offset.top, "zoom");
+    
     
     if (window.layoutTestController) {
         var area = document.getElementById('testArea');
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index bffe3b4..2889dff 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,17 @@
+2009-10-12  Xiaomei Ji  <xji at chromium.org>
+
+        Reviewed by Sam Weinig.
+
+        Fix issue caretRangeFromPoint() returns wrong result for a zoomed and 
+        scrolled page.
+        https://bugs.webkit.org/show_bug.cgi?id=30034
+
+        * dom/Document.cpp:
+        (WebCore::Document::elementFromPoint): calculate the correct point 
+        relative to document when the page is zoomed and scrolled.
+        (WebCore::Document::caretRangeFromPoint): calculate the correct point 
+        relative to document when the page is zoomed and scrolled.
+
 2009-10-12  Fumitoshi Ukai  <ukai at chromium.org>
 
         Reviewed by Sam Weinig.
diff --git a/WebCore/dom/Document.cpp b/WebCore/dom/Document.cpp
index 82f5bee..ef23007 100644
--- a/WebCore/dom/Document.cpp
+++ b/WebCore/dom/Document.cpp
@@ -943,7 +943,7 @@ Element* Document::elementFromPoint(int x, int y) const
         return 0;
 
     float zoomFactor = frame->pageZoomFactor();
-    IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor, y * zoomFactor)) + view()->scrollOffset();
+    IntPoint point = roundedIntPoint(FloatPoint((x + view()->scrollX()) * zoomFactor, (y + view()->scrollY()) * zoomFactor));
 
     if (!frameView->visibleContentRect().contains(point))
         return 0;
@@ -973,7 +973,7 @@ PassRefPtr<Range> Document::caretRangeFromPoint(int x, int y)
         return 0;
 
     float zoomFactor = frame->pageZoomFactor();
-    IntPoint point = roundedIntPoint(FloatPoint(x * zoomFactor, y * zoomFactor)) + view()->scrollOffset();
+    IntPoint point = roundedIntPoint(FloatPoint((x + view()->scrollX()) * zoomFactor, (y + view()->scrollY()) * zoomFactor));
 
     if (!frameView->visibleContentRect().contains(point))
         return 0;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list