Index: Source/core/frame/FrameView.cpp |
diff --git a/Source/core/frame/FrameView.cpp b/Source/core/frame/FrameView.cpp |
index 91a37524021e1d8c599965b0db2654ebe5726af7..90ef138b631e8c15ec027cc4e30f7b6e73d843e4 100644 |
--- a/Source/core/frame/FrameView.cpp |
+++ b/Source/core/frame/FrameView.cpp |
@@ -2598,6 +2598,19 @@ IntRect FrameView::scrollableAreaBoundingBox() const |
return ownerRenderer->absoluteContentQuad().enclosingBoundingBox(); |
} |
+bool FrameView::hasOverflow() const |
+{ |
+ IntSize contentsSize = this->contentsSize(); |
+ IntSize visibleContentSize = visibleContentRect().size(); |
+ return contentsSize.height() > visibleContentSize.height() || contentsSize.width() > visibleContentSize.width(); |
+} |
+ |
+bool FrameView::isVisibleToHitTesting() const |
+{ |
+ HTMLFrameOwnerElement* owner = m_frame->ownerElement(); |
+ return !owner || (owner->renderer() && owner->renderer()->visibleToHitTesting()); |
+} |
+ |
bool FrameView::isScrollable() |
{ |
// Check for: |
@@ -2607,14 +2620,11 @@ bool FrameView::isScrollable() |
// 4) scrolling: no; |
// Covers #1 |
- IntSize contentsSize = this->contentsSize(); |
- IntSize visibleContentSize = visibleContentRect().size(); |
- if ((contentsSize.height() <= visibleContentSize.height() && contentsSize.width() <= visibleContentSize.width())) |
+ if (!hasOverflow()) |
return false; |
// Covers #2. |
- HTMLFrameOwnerElement* owner = m_frame->ownerElement(); |
- if (owner && (!owner->renderer() || !owner->renderer()->visibleToHitTesting())) |
+ if (!isVisibleToHitTesting()) |
return false; |
// Cover #3 and #4. |