Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1340)

Unified Diff: Source/core/rendering/compositing/RenderLayerCompositor.cpp

Issue 302993003: Route selection bounds updates through WebLayerTreeView (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Factor common logic to RenderLayerCompositor Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/compositing/RenderLayerCompositor.cpp
diff --git a/Source/core/rendering/compositing/RenderLayerCompositor.cpp b/Source/core/rendering/compositing/RenderLayerCompositor.cpp
index 81603f801f981f1f2d05c5322fefc8b5cb3b13c7..3e7ec048e4b1b8aa73a9a4c2d296a3d52b7aa3c9 100644
--- a/Source/core/rendering/compositing/RenderLayerCompositor.cpp
+++ b/Source/core/rendering/compositing/RenderLayerCompositor.cpp
@@ -366,6 +366,8 @@ void RenderLayerCompositor::updateIfNeeded()
m_needsUpdateFixedBackground = false;
}
+
+
abarth-chromium 2014/06/13 21:38:14 This change is spurious.
// The scrolling coordinator may realize that it needs updating while compositing was being updated in this function.
needsToUpdateScrollingCoordinator |= scrollingCoordinator() && scrollingCoordinator()->needsToUpdateAfterCompositingChange();
if (needsToUpdateScrollingCoordinator && m_renderView.frame()->isMainFrame() && scrollingCoordinator() && inCompositingMode())
@@ -667,6 +669,56 @@ bool RenderLayerCompositor::parentFrameContentLayers(RenderPart* renderer)
return true;
}
+bool RenderLayerCompositor::computeEnclosingCompositingLayer(Node* node, RenderLayer*& renderLayer, GraphicsLayer*& graphicsLayer)
+{
+ if (!node || !node->renderer())
+ return false;
+
+ // Find the nearest enclosing composited layer and attach to it. We may need to cross frame boundaries
+ // to find a suitable layer.
+ RenderObject* renderer = node->renderer();
+ RenderLayer* currentRenderLayer;
+ do {
+ currentRenderLayer = renderer->enclosingLayer()->enclosingCompositingLayerForRepaint();
+ if (!currentRenderLayer) {
+ renderer = renderer->frame()->ownerRenderer();
+ if (!renderer)
+ return false;
+ }
+ } while (!currentRenderLayer);
abarth-chromium 2014/06/13 21:38:14 We shouldn't need to do this sort of search. Inst
+
+ renderLayer = currentRenderLayer;
+ CompositedLayerMappingPtr compositedLayerMapping = renderLayer->compositingState() == PaintsIntoGroupedBacking ? renderLayer->groupedMapping() : renderLayer->compositedLayerMapping();
+ graphicsLayer = renderLayer->compositingState() == PaintsIntoGroupedBacking ? compositedLayerMapping->squashingLayer() : compositedLayerMapping->mainGraphicsLayer();
+
+ if (!graphicsLayer->drawsContent()) {
+ if (renderLayer->scrollableArea() && renderLayer->scrollableArea()->usesCompositedScrolling()) {
+ ASSERT(renderLayer->hasCompositedLayerMapping() && renderLayer->compositedLayerMapping()->scrollingContentsLayer());
+ graphicsLayer = compositedLayerMapping->scrollingContentsLayer();
+ }
+ }
abarth-chromium 2014/06/13 21:38:15 Again, this search shouldn't be needed.
+
+ return true;
+}
+
+static FloatPoint convertTargetSpacePointToCompositedLayer(const FloatPoint& point, RenderObject* targetRenderer, RenderObject* compositedRenderer)
+{
+ IntPoint roundedPoint(roundedIntPoint(point));
+ roundedPoint = targetRenderer->frame()->view()->contentsToWindow(roundedPoint);
+ roundedPoint = compositedRenderer->frame()->view()->windowToContents(roundedPoint);
+ return compositedRenderer->absoluteToLocal(roundedPoint, UseTransforms);
+}
abarth-chromium 2014/06/13 21:38:14 If we do this right, we shouldn't need to do any o
+
+void RenderLayerCompositor::convertTargetSpaceQuadToCompositedLayer(const FloatQuad& targetSpaceQuad, RenderObject* targetRenderer, RenderObject* compositedRenderer, FloatQuad& compositedSpaceQuad)
+{
+ ASSERT(targetRenderer);
+ ASSERT(compositedRenderer);
+ compositedSpaceQuad.setP1(convertTargetSpacePointToCompositedLayer(targetSpaceQuad.p1(), targetRenderer, compositedRenderer));
+ compositedSpaceQuad.setP2(convertTargetSpacePointToCompositedLayer(targetSpaceQuad.p2(), targetRenderer, compositedRenderer));
+ compositedSpaceQuad.setP3(convertTargetSpacePointToCompositedLayer(targetSpaceQuad.p3(), targetRenderer, compositedRenderer));
+ compositedSpaceQuad.setP4(convertTargetSpacePointToCompositedLayer(targetSpaceQuad.p4(), targetRenderer, compositedRenderer));
+}
abarth-chromium 2014/06/13 21:38:14 Again, this sort of coordinate conversion shouldn'
+
void RenderLayerCompositor::repaintCompositedLayers()
{
recursiveRepaintLayer(rootRenderLayer());

Powered by Google App Engine
This is Rietveld 408576698