Changeset 156605 in webkit


Ignore:
Timestamp:
Sep 28, 2013 9:10:34 AM (11 years ago)
Author:
commit-queue@webkit.org
Message:

REGRESSION (r154614): Setting the document scroll position isn't symmetric; can successfully set document.body.scrollTop, but can only read from document.documentElement.scrollTop
https://bugs.webkit.org/show_bug.cgi?id=121876

Patch by Gurpreet Kaur <k.gurpreet@samsung.com> on 2013-09-28
Reviewed by Darin Adler.

Source/WebCore:

Non-Quirks mode should set/get scrolltop/scrollleft through
document.documentElement.scrollTop/document.documentElement.scrollLeft
Quirks mode should set/get scrolltop/scrollleft through
document.body.scrollTop/document.body.scrollLeft.

Tests: fast/dom/Element/body-scrollLeft-Quirks.html

fast/dom/Element/body-scrollLeft.html
fast/dom/Element/body-scrollTop-Quirks.html
fast/dom/Element/body-scrollTop.html
fast/dom/Element/documentElement-scrollLeft-Quirks.html
fast/dom/Element/documentElement-scrollLeft.html
fast/dom/Element/documentElement-scrollTop-Quirks.html
fast/dom/Element/documentElement-scrollTop.html

  • dom/Element.cpp:

(WebCore::Element::setScrollLeft):
(WebCore::Element::setScrollTop):

  • html/HTMLBodyElement.cpp:

(WebCore::HTMLBodyElement::setScrollLeft):
(WebCore::HTMLBodyElement::setScrollTop):
Need to set the scrollTop and scrollLeft after checking if document
is in quirks or non-quirks mode. Incase it is body.scrollLeft/
body.scrollTop set only if document is in quirks mode. If document is
non-quirks mode set documentElement.scrollLeft/documentElement.scrollTop.

LayoutTests:

  • fast/dom/Element/body-scrollLeft-Quirks-expected.txt: Added.
  • fast/dom/Element/body-scrollLeft-Quirks.html: Added.
  • fast/dom/Element/body-scrollLeft-expected.txt: Added.
  • fast/dom/Element/body-scrollLeft.html: Added.
  • fast/dom/Element/body-scrollTop-Quirks-expected.txt: Added.
  • fast/dom/Element/body-scrollTop-Quirks.html: Added.
  • fast/dom/Element/body-scrollTop-expected.txt: Added.
  • fast/dom/Element/body-scrollTop.html: Added.
  • fast/dom/Element/documentElement-scrollLeft-Quirks-expected.txt: Added.
  • fast/dom/Element/documentElement-scrollLeft-Quirks.html: Added.
  • fast/dom/Element/documentElement-scrollLeft-expected.txt: Added.
  • fast/dom/Element/documentElement-scrollLeft.html: Added.
  • fast/dom/Element/documentElement-scrollTop-Quirks-expected.txt: Added.
  • fast/dom/Element/documentElement-scrollTop-Quirks.html: Added.
  • fast/dom/Element/documentElement-scrollTop-expected.txt: Added.
  • fast/dom/Element/documentElement-scrollTop.html: Added.

Added test cases for verifying that Non-Quirks mode should set
scrolltop/scrollleft through document.documentElement.scrollTop/
document.documentElement.scrollLeft and Quirks mode should set/get
scrolltop/scrollleft through document.body.scrollTop/document.body.scrollLeft.

  • fast/multicol/scrolling-overflow.html:

Rebaselining existing tests as per the new behavior. To set
document.body.scrollLeft document to be in Quirks mode.

Location:
trunk
Files:
16 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r156595 r156605  
     12013-09-28  Gurpreet Kaur  <k.gurpreet@samsung.com>
     2
     3        REGRESSION (r154614): Setting the document scroll position isn't symmetric; can successfully set document.body.scrollTop, but can only read from document.documentElement.scrollTop
     4        https://bugs.webkit.org/show_bug.cgi?id=121876
     5
     6        Reviewed by Darin Adler.
     7
     8        * fast/dom/Element/body-scrollLeft-Quirks-expected.txt: Added.
     9        * fast/dom/Element/body-scrollLeft-Quirks.html: Added.
     10        * fast/dom/Element/body-scrollLeft-expected.txt: Added.
     11        * fast/dom/Element/body-scrollLeft.html: Added.
     12        * fast/dom/Element/body-scrollTop-Quirks-expected.txt: Added.
     13        * fast/dom/Element/body-scrollTop-Quirks.html: Added.
     14        * fast/dom/Element/body-scrollTop-expected.txt: Added.
     15        * fast/dom/Element/body-scrollTop.html: Added.
     16        * fast/dom/Element/documentElement-scrollLeft-Quirks-expected.txt: Added.
     17        * fast/dom/Element/documentElement-scrollLeft-Quirks.html: Added.
     18        * fast/dom/Element/documentElement-scrollLeft-expected.txt: Added.
     19        * fast/dom/Element/documentElement-scrollLeft.html: Added.
     20        * fast/dom/Element/documentElement-scrollTop-Quirks-expected.txt: Added.
     21        * fast/dom/Element/documentElement-scrollTop-Quirks.html: Added.
     22        * fast/dom/Element/documentElement-scrollTop-expected.txt: Added.
     23        * fast/dom/Element/documentElement-scrollTop.html: Added.
     24        Added test cases for verifying that Non-Quirks mode should set
     25        scrolltop/scrollleft through document.documentElement.scrollTop/
     26        document.documentElement.scrollLeft and Quirks mode should set/get
     27        scrolltop/scrollleft through document.body.scrollTop/document.body.scrollLeft.
     28
     29        * fast/multicol/scrolling-overflow.html:
     30        Rebaselining existing tests as per the new behavior. To set
     31        document.body.scrollLeft document to be in Quirks mode.
     32
    1332013-09-27  Bem Jones-Bey  <bjonesbe@adobe.com>
    234
  • trunk/LayoutTests/fast/multicol/scrolling-overflow.html

    r80883 r156605  
    1212    function doTest()
    1313    {
    14         document.body.offsetLeft;
    15         document.body.scrollLeft = 100;
    16         document.body.offsetLeft;
     14        document.documentElement.offsetLeft;
     15        document.documentElement.scrollLeft = 100;
     16        document.documentElement.offsetLeft;
    1717    }
    1818    </script>
  • trunk/Source/WebCore/ChangeLog

    r156602 r156605  
     12013-09-28  Gurpreet Kaur  <k.gurpreet@samsung.com>
     2
     3        REGRESSION (r154614): Setting the document scroll position isn't symmetric; can successfully set document.body.scrollTop, but can only read from document.documentElement.scrollTop
     4        https://bugs.webkit.org/show_bug.cgi?id=121876
     5
     6        Reviewed by Darin Adler.
     7
     8        Non-Quirks mode should set/get scrolltop/scrollleft through
     9        document.documentElement.scrollTop/document.documentElement.scrollLeft
     10        Quirks mode should set/get scrolltop/scrollleft through
     11        document.body.scrollTop/document.body.scrollLeft.
     12
     13        Tests: fast/dom/Element/body-scrollLeft-Quirks.html
     14               fast/dom/Element/body-scrollLeft.html
     15               fast/dom/Element/body-scrollTop-Quirks.html
     16               fast/dom/Element/body-scrollTop.html
     17               fast/dom/Element/documentElement-scrollLeft-Quirks.html
     18               fast/dom/Element/documentElement-scrollLeft.html
     19               fast/dom/Element/documentElement-scrollTop-Quirks.html
     20               fast/dom/Element/documentElement-scrollTop.html
     21
     22        * dom/Element.cpp:
     23        (WebCore::Element::setScrollLeft):
     24        (WebCore::Element::setScrollTop):
     25        * html/HTMLBodyElement.cpp:
     26        (WebCore::HTMLBodyElement::setScrollLeft):
     27        (WebCore::HTMLBodyElement::setScrollTop):
     28        Need to set the scrollTop and scrollLeft after checking if document
     29        is in quirks or non-quirks mode. Incase it is body.scrollLeft/
     30        body.scrollTop set only if document is in quirks mode. If document is
     31        non-quirks mode set documentElement.scrollLeft/documentElement.scrollTop.
     32
    1332013-09-28  Andreas Kling  <akling@apple.com>
    234
  • trunk/Source/WebCore/dom/Element.cpp

    r156550 r156605  
    804804void Element::setScrollLeft(int newLeft)
    805805{
     806    if (document().documentElement() == this && document().inQuirksMode())
     807        return;
     808
    806809    document().updateLayoutIgnorePendingStylesheets();
     810
     811    if (!document().hasLivingRenderTree())
     812        return;
     813
     814    if (document().documentElement() == this) {
     815        RenderView& renderView = *document().renderView();
     816        int zoom = renderView.style()->effectiveZoom();
     817        renderView.frameView().setScrollPosition(IntPoint(newLeft * zoom, renderView.frameView().scrollY() * zoom));
     818        return;
     819    }
     820
    807821    if (RenderBox* rend = renderBox())
    808822        rend->setScrollLeft(static_cast<int>(newLeft * rend->style()->effectiveZoom()));
     
    811825void Element::setScrollTop(int newTop)
    812826{
     827    if (document().documentElement() == this && document().inQuirksMode())
     828        return;
     829
    813830    document().updateLayoutIgnorePendingStylesheets();
     831
     832    if (!document().hasLivingRenderTree())
     833        return;
     834
     835    if (document().documentElement() == this) {
     836        RenderView& renderView = *document().renderView();
     837        int zoom = renderView.style()->effectiveZoom();
     838        renderView.frameView().setScrollPosition(IntPoint(renderView.frameView().scrollX() * zoom, newTop * zoom));
     839        return;
     840    }
     841
    814842    if (RenderBox* rend = renderBox())
    815843        rend->setScrollTop(static_cast<int>(newTop * rend->style()->effectiveZoom()));
  • trunk/Source/WebCore/html/HTMLBodyElement.cpp

    r156550 r156605  
    266266void HTMLBodyElement::setScrollLeft(int scrollLeft)
    267267{
     268    if (!document().inQuirksMode())
     269        return;
     270
    268271    document().updateLayoutIgnorePendingStylesheets();
    269272    Frame* frame = document().frame();
     
    292295void HTMLBodyElement::setScrollTop(int scrollTop)
    293296{
     297    if (!document().inQuirksMode())
     298        return;
     299
    294300    document().updateLayoutIgnorePendingStylesheets();
    295301    Frame* frame = document().frame();
Note: See TracChangeset for help on using the changeset viewer.