| Index: Source/core/frame/FrameView.cpp
|
| diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp
|
| index 0de05a9afddf16597794d73fd931bbfc17820627..3e49c1af9ece8218f444c86d6cff3d3c2d69fe38 100644
|
| --- a/Source/core/frame/FrameView.cpp
|
| +++ b/Source/core/frame/FrameView.cpp
|
| @@ -2266,8 +2266,14 @@ IntRect FrameView::scrollableAreaBoundingBox() const
|
| return ownerRenderer->absoluteContentQuad().enclosingBoundingBox();
|
| }
|
|
|
| +
|
| bool FrameView::isScrollable()
|
| {
|
| + return scrollingReasons() == Scrollable;
|
| +}
|
| +
|
| +FrameView::ScrollingReasons FrameView::scrollingReasons()
|
| +{
|
| // Check for:
|
| // 1) If there an actual overflow.
|
| // 2) display:none or visibility:hidden set to self or inherited.
|
| @@ -2278,22 +2284,22 @@ bool FrameView::isScrollable()
|
| IntSize contentsSize = this->contentsSize();
|
| IntSize visibleContentSize = visibleContentRect().size();
|
| if ((contentsSize.height() <= visibleContentSize.height() && contentsSize.width() <= visibleContentSize.width()))
|
| - return false;
|
| + return NotScrollableNoOverflow;
|
|
|
| // Covers #2.
|
| // FIXME: Do we need to fix this for OOPI?
|
| HTMLFrameOwnerElement* owner = m_frame->deprecatedLocalOwner();
|
| if (owner && (!owner->renderer() || !owner->renderer()->visibleToHitTesting()))
|
| - return false;
|
| + return NotScrollableNotVisible;
|
|
|
| // Cover #3 and #4.
|
| ScrollbarMode horizontalMode;
|
| ScrollbarMode verticalMode;
|
| calculateScrollbarModesForLayoutAndSetViewportRenderer(horizontalMode, verticalMode, RulesFromWebContentOnly);
|
| if (horizontalMode == ScrollbarAlwaysOff && verticalMode == ScrollbarAlwaysOff)
|
| - return false;
|
| + return NotScrollableExplicitlyDisabled;
|
|
|
| - return true;
|
| + return Scrollable;
|
| }
|
|
|
| void FrameView::updateScrollableAreaSet()
|
|
|