diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-17 16:21:14 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-10-17 16:21:14 +0200 |
commit | 8995b83bcbfbb68245f779b64e5517627c6cc6ea (patch) | |
tree | 17985605dab9263cc2444bd4d45f189e142cca7c /Source/WebCore/page/FrameView.cpp | |
parent | b9c9652036d5e9f1e29c574f40bc73a35c81ace6 (diff) | |
download | qtwebkit-8995b83bcbfbb68245f779b64e5517627c6cc6ea.tar.gz |
Imported WebKit commit cf4f8fc6f19b0629f51860cb2d4b25e139d07e00 (http://svn.webkit.org/repository/webkit/trunk@131592)
New snapshot that includes the build fixes for Mac OS X 10.6 and earlier as well
as the previously cherry-picked changes
Diffstat (limited to 'Source/WebCore/page/FrameView.cpp')
-rw-r--r-- | Source/WebCore/page/FrameView.cpp | 84 |
1 files changed, 50 insertions, 34 deletions
diff --git a/Source/WebCore/page/FrameView.cpp b/Source/WebCore/page/FrameView.cpp index 9f7274627..1be0c54c2 100644 --- a/Source/WebCore/page/FrameView.cpp +++ b/Source/WebCore/page/FrameView.cpp @@ -97,6 +97,7 @@ using namespace HTMLNames; double FrameView::sCurrentPaintTimeStamp = 0.0; + // REPAINT_THROTTLING now chooses default values for throttling parameters. // Should be removed when applications start using runtime configuration. #if ENABLE(REPAINT_THROTTLING) @@ -334,7 +335,7 @@ void FrameView::init() // Propagate the marginwidth/height and scrolling modes to the view. Element* ownerElement = m_frame ? m_frame->ownerElement() : 0; if (ownerElement && (ownerElement->hasTagName(frameTag) || ownerElement->hasTagName(iframeTag))) { - HTMLFrameElement* frameElt = static_cast<HTMLFrameElement*>(ownerElement); + HTMLFrameElementBase* frameElt = static_cast<HTMLFrameElementBase*>(ownerElement); if (frameElt->scrollingMode() == ScrollbarAlwaysOff) setCanHaveScrollbars(false); LayoutUnit marginWidth = frameElt->marginWidth(); @@ -781,6 +782,19 @@ TiledBacking* FrameView::tiledBacking() return backing->graphicsLayer()->tiledBacking(); } +uint64_t FrameView::scrollLayerID() const +{ + RenderView* root = rootRenderer(this); + if (!root) + return 0; + + RenderLayerBacking* backing = root->layer()->backing(); + if (!backing) + return 0; + + return backing->scrollLayerID(); +} + #if ENABLE(RUBBER_BANDING) GraphicsLayer* FrameView::layerForOverhangAreas() const { @@ -791,7 +805,7 @@ GraphicsLayer* FrameView::layerForOverhangAreas() const } #endif -bool FrameView::syncCompositingStateForThisFrame(Frame* rootFrameForSync) +bool FrameView::flushCompositingStateForThisFrame(Frame* rootFrameForFlush) { RenderView* root = rootRenderer(this); if (!root) @@ -808,7 +822,7 @@ bool FrameView::syncCompositingStateForThisFrame(Frame* rootFrameForSync) // visible flash to occur. Instead, stop the deferred repaint timer and repaint immediately. flushDeferredRepaints(); - root->compositor()->flushPendingLayerChanges(rootFrameForSync == m_frame); + root->compositor()->flushPendingLayerChanges(rootFrameForFlush == m_frame); return true; } @@ -887,16 +901,16 @@ bool FrameView::isEnclosedInCompositingLayer() const return false; } -bool FrameView::syncCompositingStateIncludingSubframes() +bool FrameView::flushCompositingStateIncludingSubframes() { #if USE(ACCELERATED_COMPOSITING) - bool allFramesSynced = syncCompositingStateForThisFrame(m_frame.get()); + bool allFramesFlushed = flushCompositingStateForThisFrame(m_frame.get()); for (Frame* child = m_frame->tree()->firstChild(); child; child = child->tree()->traverseNext(m_frame.get())) { - bool synced = child->view()->syncCompositingStateForThisFrame(m_frame.get()); - allFramesSynced &= synced; + bool flushed = child->view()->flushCompositingStateForThisFrame(m_frame.get()); + allFramesFlushed &= flushed; } - return allFramesSynced; + return allFramesFlushed; #else // USE(ACCELERATED_COMPOSITING) return true; #endif @@ -1031,6 +1045,7 @@ void FrameView::layout(bool allowSubtree) ASSERT(m_frame->view() == this); Document* document = m_frame->document(); + ASSERT(!document->inPageCache()); bool subtree; RenderObject* root; @@ -1212,8 +1227,8 @@ void FrameView::layout(bool allowSubtree) if (AXObjectCache::accessibilityEnabled()) root->document()->axObjectCache()->postNotification(root, AXObjectCache::AXLayoutComplete, true); #endif -#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(WIDGET_REGION) - updateDashboardRegions(); +#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(DRAGGABLE_REGION) + updateAnnotatedRegions(); #endif ASSERT(!root->needsLayout()); @@ -2183,19 +2198,21 @@ void FrameView::scheduleRelayoutOfSubtree(RenderObject* relayoutRoot) m_layoutRoot->markContainingBlocksForLayout(false, relayoutRoot); m_layoutRoot = relayoutRoot; ASSERT(!m_layoutRoot->container() || !m_layoutRoot->container()->needsLayout()); + InspectorInstrumentation::didInvalidateLayout(m_frame.get()); } else { // Just do a full relayout if (m_layoutRoot) m_layoutRoot->markContainingBlocksForLayout(false); m_layoutRoot = 0; relayoutRoot->markContainingBlocksForLayout(false); + InspectorInstrumentation::didInvalidateLayout(m_frame.get()); } } } else if (m_layoutSchedulingEnabled) { - InspectorInstrumentation::didInvalidateLayout(m_frame.get()); int delay = m_frame->document()->minimumLayoutDelay(); m_layoutRoot = relayoutRoot; ASSERT(!m_layoutRoot->container() || !m_layoutRoot->container()->needsLayout()); + InspectorInstrumentation::didInvalidateLayout(m_frame.get()); m_delayedLayout = delay != 0; m_layoutTimer.startOneShot(delay * 0.001); } @@ -2247,7 +2264,7 @@ void FrameView::unscheduleRelayout() } #if ENABLE(REQUEST_ANIMATION_FRAME) -void FrameView::serviceScriptedAnimations(DOMTimeStamp time) +void FrameView::serviceScriptedAnimations(double monotonicAnimationStartTime) { for (Frame* frame = m_frame.get(); frame; frame = frame->tree()->traverseNext()) { frame->view()->serviceScrollAnimations(); @@ -2259,7 +2276,7 @@ void FrameView::serviceScriptedAnimations(DOMTimeStamp time) documents.append(frame->document()); for (size_t i = 0; i < documents.size(); ++i) - documents[i]->serviceScriptedAnimations(time); + documents[i]->serviceScriptedAnimations(monotonicAnimationStartTime); } #endif @@ -2484,7 +2501,7 @@ void FrameView::performPostLayoutTasks() #if USE(ACCELERATED_COMPOSITING) if (TiledBacking* tiledBacking = this->tiledBacking()) - tiledBacking->setCanHaveScrollbars(canHaveScrollbars()); + tiledBacking->setTileCoverage(canHaveScrollbars() ? TiledBacking::CoverageForScrolling : TiledBacking::CoverageForVisibleArea); #endif scrollToAnchor(); @@ -2895,21 +2912,21 @@ bool FrameView::scrollAnimatorEnabled() const return false; } -#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(WIDGET_REGION) -void FrameView::updateDashboardRegions() +#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(DRAGGABLE_REGION) +void FrameView::updateAnnotatedRegions() { Document* document = m_frame->document(); - if (!document->hasDashboardRegions()) + if (!document->hasAnnotatedRegions()) return; - Vector<DashboardRegionValue> newRegions; - document->renderBox()->collectDashboardRegions(newRegions); - if (newRegions == document->dashboardRegions()) + Vector<AnnotatedRegionValue> newRegions; + document->renderBox()->collectAnnotatedRegions(newRegions); + if (newRegions == document->annotatedRegions()) return; - document->setDashboardRegions(newRegions); + document->setAnnotatedRegions(newRegions); Page* page = m_frame->page(); if (!page) return; - page->chrome()->client()->dashboardRegionsChanged(); + page->chrome()->client()->annotatedRegionsChanged(); } #endif @@ -3048,10 +3065,9 @@ bool FrameView::hasCustomScrollbars() const FrameView* FrameView::parentFrameView() const { - if (Widget* parentView = parent()) { - if (parentView->isFrameView()) - return static_cast<FrameView*>(parentView); - } + if (Frame* parentFrame = m_frame->tree()->parent()) + return parentFrame->view(); + return 0; } @@ -3192,7 +3208,7 @@ void FrameView::paintContents(GraphicsContext* p, const IntRect& rect) #if USE(ACCELERATED_COMPOSITING) if (!p->paintingDisabled() && !document->printing()) - syncCompositingStateForThisFrame(m_frame.get()); + flushCompositingStateForThisFrame(m_frame.get()); #endif PaintBehavior oldPaintBehavior = m_paintBehavior; @@ -3233,10 +3249,10 @@ void FrameView::paintContents(GraphicsContext* p, const IntRect& rect) m_paintBehavior = oldPaintBehavior; m_lastPaintTime = currentTime(); -#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(WIDGET_REGION) // Regions may have changed as a result of the visibility/z-index of element changing. - if (document->dashboardRegionsDirty()) - updateDashboardRegions(); +#if ENABLE(DASHBOARD_SUPPORT) || ENABLE(DRAGGABLE_REGION) + if (document->annotatedRegionsDirty()) + updateAnnotatedRegions(); #endif if (isTopLevelPainter) @@ -3459,7 +3475,7 @@ void FrameView::adjustPageHeightDeprecated(float *newBottom, float oldTop, float IntRect FrameView::convertFromRenderer(const RenderObject* renderer, const IntRect& rendererRect) const { - IntRect rect = renderer->localToAbsoluteQuad(FloatRect(rendererRect)).enclosingBoundingBox(); + IntRect rect = renderer->localToAbsoluteQuad(FloatRect(rendererRect), SnapOffsetForTransforms).enclosingBoundingBox(); // Convert from page ("absolute") to FrameView coordinates. if (!delegatesScrolling()) @@ -3478,13 +3494,13 @@ IntRect FrameView::convertToRenderer(const RenderObject* renderer, const IntRect // FIXME: we don't have a way to map an absolute rect down to a local quad, so just // move the rect for now. - rect.setLocation(roundedIntPoint(renderer->absoluteToLocal(rect.location(), false, true /* use transforms */))); + rect.setLocation(roundedIntPoint(renderer->absoluteToLocal(rect.location(), UseTransforms | SnapOffsetForTransforms))); return rect; } IntPoint FrameView::convertFromRenderer(const RenderObject* renderer, const IntPoint& rendererPoint) const { - IntPoint point = roundedIntPoint(renderer->localToAbsolute(rendererPoint, false, true /* use transforms */)); + IntPoint point = roundedIntPoint(renderer->localToAbsolute(rendererPoint, UseTransforms | SnapOffsetForTransforms)); // Convert from page ("absolute") to FrameView coordinates. if (!delegatesScrolling()) @@ -3500,7 +3516,7 @@ IntPoint FrameView::convertToRenderer(const RenderObject* renderer, const IntPoi if (!delegatesScrolling()) point += IntSize(scrollX(), scrollY()); - return roundedIntPoint(renderer->absoluteToLocal(point, false, true /* use transforms */)); + return roundedIntPoint(renderer->absoluteToLocal(point, UseTransforms | SnapOffsetForTransforms)); } IntRect FrameView::convertToContainingView(const IntRect& localRect) const |