summaryrefslogtreecommitdiff
path: root/Source/WebCore/page/FrameView.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-17 16:21:14 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-17 16:21:14 +0200
commit8995b83bcbfbb68245f779b64e5517627c6cc6ea (patch)
tree17985605dab9263cc2444bd4d45f189e142cca7c /Source/WebCore/page/FrameView.cpp
parentb9c9652036d5e9f1e29c574f40bc73a35c81ace6 (diff)
downloadqtwebkit-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.cpp84
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