Index: Source/WebKit/chromium/src/LinkHighlight.cpp |
diff --git a/Source/WebKit/chromium/src/LinkHighlight.cpp b/Source/WebKit/chromium/src/LinkHighlight.cpp |
index 465b0f213838b8e72b9cd7b7ca3d31d41a35f115..d8ac3fa7c77d28794ad475c17ac37817e5977d95 100644 |
--- a/Source/WebKit/chromium/src/LinkHighlight.cpp |
+++ b/Source/WebKit/chromium/src/LinkHighlight.cpp |
@@ -27,7 +27,6 @@ |
#include "LinkHighlight.h" |
-#include "NonCompositedContentHost.h" |
#include "SkMatrix44.h" |
#include "WebFrameImpl.h" |
#include "WebKit.h" |
@@ -66,7 +65,6 @@ LinkHighlight::LinkHighlight(Node* node, WebViewImpl* owningWebViewImpl) |
: m_node(node) |
, m_owningWebViewImpl(owningWebViewImpl) |
, m_currentGraphicsLayer(0) |
- , m_usingNonCompositedContentHost(false) |
, m_geometryNeedsUpdate(false) |
, m_isAnimating(false) |
, m_startTime(monotonicallyIncreasingTime()) |
@@ -129,13 +127,6 @@ RenderLayer* LinkHighlight::computeEnclosingCompositingLayer() |
return 0; |
GraphicsLayerChromium* newGraphicsLayer = static_cast<GraphicsLayerChromium*>(renderLayer->backing()->graphicsLayer()); |
- m_clipLayer->setSublayerTransform(SkMatrix44()); |
- m_usingNonCompositedContentHost = !newGraphicsLayer->drawsContent(); |
- if (m_usingNonCompositedContentHost ) { |
- m_clipLayer->setSublayerTransform(newGraphicsLayer->platformLayer()->transform()); |
- newGraphicsLayer = static_cast<GraphicsLayerChromium*>(m_owningWebViewImpl->nonCompositedContentHost()->topLevelRootLayer()); |
- } |
- |
if (m_currentGraphicsLayer != newGraphicsLayer) { |
if (m_currentGraphicsLayer) |
clearGraphicsLayerLinkHighlightPointer(); |
@@ -147,10 +138,11 @@ RenderLayer* LinkHighlight::computeEnclosingCompositingLayer() |
return renderLayer; |
} |
-static void convertTargetSpaceQuadToCompositedLayer(const FloatQuad& targetSpaceQuad, RenderObject* targetRenderer, RenderObject* compositedRenderer, FloatQuad& compositedSpaceQuad) |
+static void convertTargetSpaceQuadToCompositedLayer(const FloatQuad& targetSpaceQuad, RenderObject* targetRenderer, RenderLayer* compositedLayer, FloatQuad& compositedSpaceQuad) |
{ |
ASSERT(targetRenderer); |
- ASSERT(compositedRenderer); |
+ ASSERT(compositedLayer); |
+ RenderLayerModelObject* compositedRenderer = compositedLayer->renderer(); |
for (unsigned i = 0; i < 4; ++i) { |
IntPoint point; |
@@ -164,6 +156,7 @@ static void convertTargetSpaceQuadToCompositedLayer(const FloatQuad& targetSpace |
point = targetRenderer->frame()->view()->contentsToWindow(point); |
point = compositedRenderer->frame()->view()->windowToContents(point); |
FloatPoint floatPoint = compositedRenderer->absoluteToLocal(point, UseTransforms); |
+ floatPoint.moveBy(-compositedLayer->backing()->compositedBounds().location()); |
switch (i) { |
case 0: compositedSpaceQuad.setP1(floatPoint); break; |
@@ -196,35 +189,11 @@ bool LinkHighlight::computeHighlightLayerPathAndPosition(RenderLayer* compositin |
m_node->renderer()->absoluteQuads(quads); |
ASSERT(quads.size()); |
- FloatRect positionAdjust; |
- if (!m_usingNonCompositedContentHost) { |
- const RenderStyle* style = m_node->renderer()->style(); |
- // If we have a box shadow, and are non-relative, then must manually adjust |
- // for its size. |
- if (const ShadowData* shadow = style->boxShadow()) { |
- int outlineSize = m_node->renderer()->outlineStyleForRepaint()->outlineSize(); |
- shadow->adjustRectForShadow(positionAdjust, outlineSize); |
- } |
- |
- // If absolute or fixed, need to subtract out our fixed positioning. |
- // FIXME: should we use RenderLayer::staticBlockPosition() here instead? |
- // Perhaps consider this if out-of-flow elements cause further problems. |
- if (m_node->renderer()->isOutOfFlowPositioned()) { |
- FloatPoint delta(style->left().getFloatValue(), style->top().getFloatValue()); |
- positionAdjust.moveBy(delta); |
- } |
- } |
- |
Path newPath; |
for (unsigned quadIndex = 0; quadIndex < quads.size(); ++quadIndex) { |
- |
- FloatQuad localQuad = m_node->renderer()->absoluteToLocalQuad(quads[quadIndex], UseTransforms); |
- localQuad.move(-positionAdjust.location().x(), -positionAdjust.location().y()); |
- FloatQuad absoluteQuad = m_node->renderer()->localToAbsoluteQuad(localQuad, UseTransforms); |
- |
// Transform node quads in target absolute coords to local coordinates in the compositor layer. |
FloatQuad transformedQuad; |
- convertTargetSpaceQuadToCompositedLayer(absoluteQuad, m_node->renderer(), compositingLayer->renderer(), transformedQuad); |
+ convertTargetSpaceQuadToCompositedLayer(quads[quadIndex], m_node->renderer(), compositingLayer, transformedQuad); |
// FIXME: for now, we'll only use rounded paths if we have a single node quad. The reason for this is that |
// we may sometimes get a chain of adjacent boxes (e.g. for text nodes) which end up looking like sausage |