+2012-02-22 Anders Carlsson <andersca@apple.com>
+
+ Subframes with scrollable areas must be added to the non-fast scrollable region
+ https://bugs.webkit.org/show_bug.cgi?id=79306
+ <rdar://problem/10915564>
+
+ Reviewed by Andreas Kling.
+
+ When computing the non-fast scrollable region, add subframes with scrollable regions to the region.
+
+ * page/scrolling/ScrollingCoordinator.cpp:
+ (WebCore::computeNonFastScrollableRegion):
+
2012-02-22 Nate Chapin <japhet@chromium.org>
CachedResourceLoader ignores the Range header
{
Region nonFastScrollableRegion;
- if (const FrameView::ScrollableAreaSet* scrollableAreas = frameView->scrollableAreas()) {
+ HashSet<FrameView*> childFrameViews;
+ for (HashSet<RefPtr<Widget> >::const_iterator it = frameView->children()->begin(), end = frameView->children()->end(); it != end; ++it) {
+ if ((*it)->isFrameView())
+ childFrameViews.add(static_cast<FrameView*>(it->get()));
+ }
+
+ if (const FrameView::ScrollableAreaSet* scrollableAreas = frameView->scrollableAreas()) {
for (FrameView::ScrollableAreaSet::const_iterator it = scrollableAreas->begin(), end = scrollableAreas->end(); it != end; ++it) {
ScrollableArea* scrollableArea = *it;
// Check if this area can be scrolled at all.
+ // If this scrollable area is a frame view that itself has scrollable areas, then we need to add it to the region.
if ((!scrollableArea->horizontalScrollbar() || !scrollableArea->horizontalScrollbar()->enabled())
- && (!scrollableArea->verticalScrollbar() || !scrollableArea->verticalScrollbar()->enabled()))
- continue;
+ && (!scrollableArea->verticalScrollbar() || !scrollableArea->verticalScrollbar()->enabled())
+ && (!childFrameViews.contains(static_cast<FrameView*>(scrollableArea)) || !static_cast<FrameView*>(scrollableArea)->scrollableAreas()))
+ continue;
nonFastScrollableRegion.unite(scrollableArea->scrollableAreaBoundingBox());
}