| Index: third_party/WebKit/Source/web/LinkHighlightImpl.cpp
|
| diff --git a/third_party/WebKit/Source/web/LinkHighlightImpl.cpp b/third_party/WebKit/Source/web/LinkHighlightImpl.cpp
|
| index 9d0d5e8bf405f804404c633c163c1c1eefb76f06..c9879e52efb017c713f375183076466965515fc9 100644
|
| --- a/third_party/WebKit/Source/web/LinkHighlightImpl.cpp
|
| +++ b/third_party/WebKit/Source/web/LinkHighlightImpl.cpp
|
| @@ -157,56 +157,6 @@ void LinkHighlightImpl::attachLinkHighlightToCompositingLayer(
|
| }
|
| }
|
|
|
| -static void convertTargetSpaceQuadToCompositedLayer(
|
| - const FloatQuad& targetSpaceQuad,
|
| - LayoutObject* targetLayoutObject,
|
| - const LayoutBoxModelObject& paintInvalidationContainer,
|
| - FloatQuad& compositedSpaceQuad) {
|
| - DCHECK(targetLayoutObject);
|
| - for (unsigned i = 0; i < 4; ++i) {
|
| - IntPoint point;
|
| - switch (i) {
|
| - case 0:
|
| - point = roundedIntPoint(targetSpaceQuad.p1());
|
| - break;
|
| - case 1:
|
| - point = roundedIntPoint(targetSpaceQuad.p2());
|
| - break;
|
| - case 2:
|
| - point = roundedIntPoint(targetSpaceQuad.p3());
|
| - break;
|
| - case 3:
|
| - point = roundedIntPoint(targetSpaceQuad.p4());
|
| - break;
|
| - }
|
| -
|
| - // FIXME: this does not need to be absolute, just in the paint invalidation
|
| - // container's space.
|
| - point = targetLayoutObject->frame()->view()->contentsToRootFrame(point);
|
| - point =
|
| - paintInvalidationContainer.frame()->view()->rootFrameToContents(point);
|
| - FloatPoint floatPoint =
|
| - paintInvalidationContainer.absoluteToLocal(point, UseTransforms);
|
| - PaintLayer::mapPointInPaintInvalidationContainerToBacking(
|
| - paintInvalidationContainer, floatPoint);
|
| -
|
| - switch (i) {
|
| - case 0:
|
| - compositedSpaceQuad.setP1(floatPoint);
|
| - break;
|
| - case 1:
|
| - compositedSpaceQuad.setP2(floatPoint);
|
| - break;
|
| - case 2:
|
| - compositedSpaceQuad.setP3(floatPoint);
|
| - break;
|
| - case 3:
|
| - compositedSpaceQuad.setP4(floatPoint);
|
| - break;
|
| - }
|
| - }
|
| -}
|
| -
|
| static void addQuadToPath(const FloatQuad& quad, Path& path) {
|
| // FIXME: Make this create rounded quad-paths, just like the axis-aligned
|
| // case.
|
| @@ -236,7 +186,7 @@ void LinkHighlightImpl::computeQuads(const Node& node,
|
| } else {
|
| // FIXME: this does not need to be absolute, just in the paint invalidation
|
| // container's space.
|
| - layoutObject->absoluteQuads(outQuads);
|
| + layoutObject->absoluteQuads(outQuads, TraverseDocumentBoundaries);
|
| }
|
| }
|
|
|
| @@ -270,12 +220,24 @@ bool LinkHighlightImpl::computeHighlightLayerPathAndPosition(
|
| absoluteQuad.move(toScrollOffset(scrollPosition));
|
| }
|
|
|
| - // Transform node quads in target absolute coords to local coordinates in
|
| - // the compositor layer.
|
| - FloatQuad transformedQuad;
|
| - convertTargetSpaceQuadToCompositedLayer(
|
| - absoluteQuad, m_node->layoutObject(), paintInvalidationContainer,
|
| - transformedQuad);
|
| + absoluteQuad.setP1(roundedIntPoint(absoluteQuad.p1()));
|
| + absoluteQuad.setP2(roundedIntPoint(absoluteQuad.p2()));
|
| + absoluteQuad.setP3(roundedIntPoint(absoluteQuad.p3()));
|
| + absoluteQuad.setP4(roundedIntPoint(absoluteQuad.p4()));
|
| + FloatQuad transformedQuad = paintInvalidationContainer.absoluteToLocalQuad(
|
| + absoluteQuad, UseTransforms | TraverseDocumentBoundaries);
|
| + FloatPoint offsetToBacking;
|
| +
|
| + // Adjust for squashing.
|
| + if (paintInvalidationContainer.layer()->groupedMapping()) {
|
| + PaintLayer::mapPointInPaintInvalidationContainerToBacking(
|
| + paintInvalidationContainer, offsetToBacking);
|
| + }
|
| +
|
| + // Adjust for offset from LayoutObject.
|
| + offsetToBacking.move(-m_currentGraphicsLayer->offsetFromLayoutObject());
|
| +
|
| + transformedQuad.move(toFloatSize(offsetToBacking));
|
|
|
| // 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
|
|
|