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() |