Changeset 57225 in webkit


Ignore:
Timestamp:
Apr 7, 2010 1:22:43 PM (14 years ago)
Author:
eric@webkit.org
Message:

2010-04-07 Kenneth Rohde Christiansen <kenneth@webkit.org>

Reviewed by Darin Adler.

Poor rendering on lala.com with frame flattening
https://bugs.webkit.org/show_bug.cgi?id=37164

Do not flatten offscreen iframes.

Test: fast/frames/flattening/iframe-flattening-offscreen.html

  • rendering/RenderPartObject.cpp: (WebCore::RenderPartObject::flattenFrame):
  • rendering/RenderPartObject.h:
Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r57224 r57225  
     12010-04-07  Kenneth Rohde Christiansen  <kenneth@webkit.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Poor rendering on lala.com with frame flattening
     6        https://bugs.webkit.org/show_bug.cgi?id=37164
     7
     8        Do not flatten offscreen iframes.
     9
     10        Test: fast/frames/flattening/iframe-flattening-offscreen.html
     11
     12        * rendering/RenderPartObject.cpp:
     13        (WebCore::RenderPartObject::flattenFrame):
     14        * rendering/RenderPartObject.h:
     15
    1162010-04-07  Abhishek Arya  <inferno@chromium.org>
    217
  • trunk/WebCore/rendering/RenderPartObject.cpp

    r57080 r57225  
    5252}
    5353
    54 bool RenderPartObject::flattenFrame() const
     54bool RenderPartObject::flattenFrame()
    5555{
    5656    if (!node() || !node()->hasTagName(iframeTag))
    5757        return false;
    5858
    59     HTMLIFrameElement* frame = static_cast<HTMLIFrameElement*>(node());
    60     bool isScrollable = frame->scrollingMode() != ScrollbarAlwaysOff;
     59    HTMLIFrameElement* element = static_cast<HTMLIFrameElement*>(node());
     60    bool isScrollable = element->scrollingMode() != ScrollbarAlwaysOff;
    6161
    6262    if (!isScrollable && style()->width().isFixed()
     
    6464        return false;
    6565
    66     return frame->document()->frame() && frame->document()->frame()->settings()->frameFlatteningEnabled();
     66    Frame* frame = element->document()->frame();
     67    bool enabled = frame && frame->settings()->frameFlatteningEnabled();
     68
     69    if (!enabled || !frame->page())
     70        return false;
     71
     72    FrameView* view = frame->page()->mainFrame()->view();
     73    if (!view)
     74        return false;
     75
     76    // Do not flatten offscreen inner frames during frame flattening.
     77    return absoluteBoundingBoxRect().intersects(IntRect(IntPoint(0, 0), view->contentsSize()));
    6778}
    6879
  • trunk/WebCore/rendering/RenderPartObject.h

    r56718 r57225  
    4343    virtual void viewCleared();
    4444
    45     bool flattenFrame() const;
     45    bool flattenFrame();
    4646};
    4747
Note: See TracChangeset for help on using the changeset viewer.