Changeset 106730 in webkit


Ignore:
Timestamp:
Feb 4, 2012 1:19:57 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Source/WebCore: Patch by Swapna P <spottabathini@innominds.com> on 2012-02-04
Reviewed by Antonio Gomes.

Bug: iframe with scrolling=no incorrectly autoscrollable
https://bugs.webkit.org/show_bug.cgi?id=61558

Added check for frame scrolling mode just before applying scroll on frame content in function RenderLayer::scrollRect

Testcase: LayoutTests/fast/events/autoscroll-with-non-scrollable-parent.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollRectToVisible):

LayoutTests: Patch by Swapna P <spottabathini@innominds.com> on 2012-02-04
Reviewed by Antonio Gomes.

Bug: iframe with scrolling=no incorrectly autoscrollable
https://bugs.webkit.org/show_bug.cgi?id=61558

Did change inorder to print correct log as per the description provided in test case.

  • fast/events/autoscroll-with-non-scrollable-parent.html:
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r106728 r106730  
     12012-02-04  Swapna P  <spottabathini@innominds.com>
     2
     3        Reviewed by Antonio Gomes.
     4       
     5        Bug: iframe with scrolling=no incorrectly autoscrollable
     6        https://bugs.webkit.org/show_bug.cgi?id=61558
     7       
     8        Did change inorder to print correct log as per the description provided in test case.
     9       
     10        * fast/events/autoscroll-with-non-scrollable-parent.html:
     11
    1122012-02-03  Adam Barth  <abarth@webkit.org>
    213
  • trunk/LayoutTests/fast/events/autoscroll-with-non-scrollable-parent.html

    r60186 r106730  
    4040           var iframe = document.getElementById('NoScrolliFrame');
    4141           var iframeDocument = iframe.contentDocument;
    42            if (iframeDocument.body.scrollLeft != 0)
     42           if (iframeDocument.body.scrollLeft == 0)
    4343               log("PASSED");
    4444           else
  • trunk/Source/WebCore/ChangeLog

    r106729 r106730  
     12012-02-04  Swapna P  <spottabathini@innominds.com>
     2
     3        Reviewed by Antonio Gomes.
     4       
     5        Bug: iframe with scrolling=no incorrectly autoscrollable
     6        https://bugs.webkit.org/show_bug.cgi?id=61558
     7       
     8        Added check for frame scrolling mode just before applying scroll on frame content in function RenderLayer::scrollRect
     9       
     10        Testcase: LayoutTests/fast/events/autoscroll-with-non-scrollable-parent.html
     11       
     12        * rendering/RenderLayer.cpp:
     13        (WebCore::RenderLayer::scrollRectToVisible):
     14
    1152012-02-03  Tim Horton  <timothy_horton@apple.com>
    216
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r106695 r106730  
    6767#include "Gradient.h"
    6868#include "GraphicsContext.h"
     69#include "HTMLFrameElement.h"
    6970#include "HTMLFrameOwnerElement.h"
    7071#include "HTMLNames.h"
     
    15431544    } else if (!parentLayer && renderer()->isBox() && renderBox()->canBeProgramaticallyScrolled()) {
    15441545        if (frameView) {
    1545             if (renderer()->document() && renderer()->document()->ownerElement() && renderer()->document()->ownerElement()->renderer()) {
    1546                 LayoutRect viewRect = frameView->visibleContentRect();
    1547                 LayoutRect r = getRectToExpose(viewRect, rect, alignX, alignY);
    1548                
    1549                 LayoutUnit xOffset = r.x();
    1550                 LayoutUnit yOffset = r.y();
    1551                 // Adjust offsets if they're outside of the allowable range.
    1552                 xOffset = max<LayoutUnit>(0, min(frameView->contentsWidth(), xOffset));
    1553                 yOffset = max<LayoutUnit>(0, min(frameView->contentsHeight(), yOffset));
    1554 
    1555                 frameView->setScrollPosition(IntPoint(xOffset, yOffset));
    1556                 parentLayer = renderer()->document()->ownerElement()->renderer()->enclosingLayer();
    1557                 newRect.setX(rect.x() - frameView->scrollX() + frameView->x());
    1558                 newRect.setY(rect.y() - frameView->scrollY() + frameView->y());
     1546            Element* ownerElement = 0;
     1547            if (renderer()->document())
     1548                ownerElement = renderer()->document()->ownerElement();
     1549
     1550            if (ownerElement && ownerElement->renderer()) {
     1551                HTMLFrameElement* frameElement = 0;
     1552
     1553                if (ownerElement->hasTagName(frameTag) || ownerElement->hasTagName(iframeTag))
     1554                    frameElement = static_cast<HTMLFrameElement*>(ownerElement);
     1555
     1556                if (frameElement && frameElement->scrollingMode() != ScrollbarAlwaysOff) {
     1557                    LayoutRect viewRect = frameView->visibleContentRect();
     1558                    LayoutRect exposeRect = getRectToExpose(viewRect, rect, alignX, alignY);
     1559
     1560                    LayoutUnit xOffset = exposeRect.x();
     1561                    LayoutUnit yOffset = exposeRect.y();
     1562                    // Adjust offsets if they're outside of the allowable range.
     1563                    xOffset = max<LayoutUnit>(0, min(frameView->contentsWidth(), xOffset));
     1564                    yOffset = max<LayoutUnit>(0, min(frameView->contentsHeight(), yOffset));
     1565
     1566                    frameView->setScrollPosition(IntPoint(xOffset, yOffset));
     1567                    parentLayer = ownerElement->renderer()->enclosingLayer();
     1568                    newRect.setX(rect.x() - frameView->scrollX() + frameView->x());
     1569                    newRect.setY(rect.y() - frameView->scrollY() + frameView->y());
     1570                }
    15591571            } else {
    15601572                LayoutRect viewRect = frameView->visibleContentRect();
Note: See TracChangeset for help on using the changeset viewer.