summaryrefslogtreecommitdiffstats
path: root/WebCore/rendering/RenderLayerCompositor.cpp
diff options
context:
space:
mode:
authorPatrick Scott <phanna@android.com>2010-12-13 11:20:07 -0500
committerPatrick Scott <phanna@android.com>2010-12-13 12:52:59 -0500
commit27dd9e051d0960e985cb677bfc1ce20531ac0456 (patch)
treeae3906b16661429d4e19396cde0349dfca01e13f /WebCore/rendering/RenderLayerCompositor.cpp
parentc5a7eaffa9be6afd209020f1ffdc6278c284e7a3 (diff)
downloadexternal_webkit-27dd9e051d0960e985cb677bfc1ce20531ac0456.zip
external_webkit-27dd9e051d0960e985cb677bfc1ce20531ac0456.tar.gz
external_webkit-27dd9e051d0960e985cb677bfc1ce20531ac0456.tar.bz2
Enable iframe scrolling.
Turn off iframe expansion and record iframes in a composited layer. Fix navigation by tracking iframe layers if needed. Remove the logic to add focused nodes to the last tracked layer as it is not needed and might add nodes to the wrong layer. Bug: 3219076, 3211666, 3201077, 3194321 Change-Id: Ifc0b83102438255db7e4b62ad260f50ebbdb0e50
Diffstat (limited to 'WebCore/rendering/RenderLayerCompositor.cpp')
-rw-r--r--WebCore/rendering/RenderLayerCompositor.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/WebCore/rendering/RenderLayerCompositor.cpp b/WebCore/rendering/RenderLayerCompositor.cpp
index ce80e5a..00e596b 100644
--- a/WebCore/rendering/RenderLayerCompositor.cpp
+++ b/WebCore/rendering/RenderLayerCompositor.cpp
@@ -1178,9 +1178,20 @@ bool RenderLayerCompositor::requiresCompositingForMobileSites(const RenderLayer*
return true;
HTMLFrameOwnerElement* ownerElement = enclosingIFrameElement();
RenderObject* renderer = ownerElement ? ownerElement->renderer() : 0;
- // FIXME: Disabled for now until navigation is fixed.
- if (false && layer->isRootLayer() && renderer && renderer->isRenderIFrame())
- return true;
+ if (layer->isRootLayer() && renderer && renderer->isRenderIFrame()) {
+ if (layer->renderer()->frame()) {
+ FrameView* view = layer->renderer()->frame()->view();
+ if (view) {
+ // Enable compositing if the frame can scroll and the contents
+ // are larger than the layout dimensions.
+ ScrollbarMode h,v;
+ view->scrollbarModes(h, v);
+ if ((h != ScrollbarAlwaysOff && view->layoutWidth() < view->contentsWidth()) ||
+ (v != ScrollbarAlwaysOff && view->layoutHeight() < view->contentsHeight()))
+ return true;
+ }
+ }
+ }
#endif
#if ENABLE(COMPOSITED_FIXED_ELEMENTS)
// First, check if we are in an iframe, and if so bail out