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

Side by Side Diff: third_party/WebKit/Source/web/LinkHighlightImpl.cpp

Issue 2046233002: Revert of Don't include scroll offset in offsetFromLayoutObject for scrolling contents layers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/web/LinkHighlightImpl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 64
65 PassOwnPtr<LinkHighlightImpl> LinkHighlightImpl::create(Node* node, WebViewImpl* owningWebViewImpl) 65 PassOwnPtr<LinkHighlightImpl> LinkHighlightImpl::create(Node* node, WebViewImpl* owningWebViewImpl)
66 { 66 {
67 return adoptPtr(new LinkHighlightImpl(node, owningWebViewImpl)); 67 return adoptPtr(new LinkHighlightImpl(node, owningWebViewImpl));
68 } 68 }
69 69
70 LinkHighlightImpl::LinkHighlightImpl(Node* node, WebViewImpl* owningWebViewImpl) 70 LinkHighlightImpl::LinkHighlightImpl(Node* node, WebViewImpl* owningWebViewImpl)
71 : m_node(node) 71 : m_node(node)
72 , m_owningWebViewImpl(owningWebViewImpl) 72 , m_owningWebViewImpl(owningWebViewImpl)
73 , m_currentGraphicsLayer(0) 73 , m_currentGraphicsLayer(0)
74 , m_isScrollingGraphicsLayer(false)
75 , m_geometryNeedsUpdate(false) 74 , m_geometryNeedsUpdate(false)
76 , m_isAnimating(false) 75 , m_isAnimating(false)
77 , m_startTime(monotonicallyIncreasingTime()) 76 , m_startTime(monotonicallyIncreasingTime())
78 { 77 {
79 DCHECK(m_node); 78 DCHECK(m_node);
80 DCHECK(owningWebViewImpl); 79 DCHECK(owningWebViewImpl);
81 WebCompositorSupport* compositorSupport = Platform::current()->compositorSup port(); 80 WebCompositorSupport* compositorSupport = Platform::current()->compositorSup port();
82 DCHECK(compositorSupport); 81 DCHECK(compositorSupport);
83 m_contentLayer = adoptPtr(compositorSupport->createContentLayer(this)); 82 m_contentLayer = adoptPtr(compositorSupport->createContentLayer(this));
84 m_clipLayer = adoptPtr(compositorSupport->createLayer()); 83 m_clipLayer = adoptPtr(compositorSupport->createLayer());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 } 120 }
122 121
123 void LinkHighlightImpl::releaseResources() 122 void LinkHighlightImpl::releaseResources()
124 { 123 {
125 m_node.clear(); 124 m_node.clear();
126 } 125 }
127 126
128 void LinkHighlightImpl::attachLinkHighlightToCompositingLayer(const LayoutBoxMod elObject& paintInvalidationContainer) 127 void LinkHighlightImpl::attachLinkHighlightToCompositingLayer(const LayoutBoxMod elObject& paintInvalidationContainer)
129 { 128 {
130 GraphicsLayer* newGraphicsLayer = paintInvalidationContainer.layer()->graphi csLayerBacking(); 129 GraphicsLayer* newGraphicsLayer = paintInvalidationContainer.layer()->graphi csLayerBacking();
131 m_isScrollingGraphicsLayer = false;
132 // FIXME: There should always be a GraphicsLayer. See crbug.com/431961. 130 // FIXME: There should always be a GraphicsLayer. See crbug.com/431961.
133 if (paintInvalidationContainer.layer()->needsCompositedScrolling() && m_node ->layoutObject() != &paintInvalidationContainer) { 131 if (newGraphicsLayer && !newGraphicsLayer->drawsContent())
134 newGraphicsLayer = paintInvalidationContainer.layer()->graphicsLayerBack ingForScrolling(); 132 newGraphicsLayer = paintInvalidationContainer.layer()->graphicsLayerBack ingForScrolling();
135 m_isScrollingGraphicsLayer = true;
136 }
137 if (!newGraphicsLayer) 133 if (!newGraphicsLayer)
138 return; 134 return;
139 135
140 m_clipLayer->setTransform(SkMatrix44(SkMatrix44::kIdentity_Constructor)); 136 m_clipLayer->setTransform(SkMatrix44(SkMatrix44::kIdentity_Constructor));
141 137
142 if (m_currentGraphicsLayer != newGraphicsLayer) { 138 if (m_currentGraphicsLayer != newGraphicsLayer) {
143 if (m_currentGraphicsLayer) 139 if (m_currentGraphicsLayer)
144 clearGraphicsLayerLinkHighlightPointer(); 140 clearGraphicsLayerLinkHighlightPointer();
145 141
146 m_currentGraphicsLayer = newGraphicsLayer; 142 m_currentGraphicsLayer = newGraphicsLayer;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 215
220 // Get quads for node in absolute coordinates. 216 // Get quads for node in absolute coordinates.
221 Vector<FloatQuad> quads; 217 Vector<FloatQuad> quads;
222 computeQuads(*m_node, quads); 218 computeQuads(*m_node, quads);
223 DCHECK(quads.size()); 219 DCHECK(quads.size());
224 Path newPath; 220 Path newPath;
225 221
226 for (size_t quadIndex = 0; quadIndex < quads.size(); ++quadIndex) { 222 for (size_t quadIndex = 0; quadIndex < quads.size(); ++quadIndex) {
227 FloatQuad absoluteQuad = quads[quadIndex]; 223 FloatQuad absoluteQuad = quads[quadIndex];
228 224
229 // Scrolling content layers have the same offset from layout object as t he non-scrolling layers. Thus we need
230 // to adjust for their scroll offset.
231 if (m_isScrollingGraphicsLayer) {
232 DoubleSize adjustedScrollOffset = paintInvalidationContainer.layer() ->getScrollableArea()->adjustedScrollOffset();
233 absoluteQuad.move(adjustedScrollOffset.width(), adjustedScrollOffset .height());
234 }
235
236 // Transform node quads in target absolute coords to local coordinates i n the compositor layer. 225 // Transform node quads in target absolute coords to local coordinates i n the compositor layer.
237 FloatQuad transformedQuad; 226 FloatQuad transformedQuad;
238 convertTargetSpaceQuadToCompositedLayer(absoluteQuad, m_node->layoutObje ct(), paintInvalidationContainer, transformedQuad); 227 convertTargetSpaceQuadToCompositedLayer(absoluteQuad, m_node->layoutObje ct(), paintInvalidationContainer, transformedQuad);
239 228
240 // FIXME: for now, we'll only use rounded paths if we have a single node quad. The reason for this is that 229 // FIXME: for now, we'll only use rounded paths if we have a single node quad. The reason for this is that
241 // we may sometimes get a chain of adjacent boxes (e.g. for text nodes) which end up looking like sausage 230 // we may sometimes get a chain of adjacent boxes (e.g. for text nodes) which end up looking like sausage
242 // links: these should ideally be merged into a single rect before creat ing the path, but that's 231 // links: these should ideally be merged into a single rect before creat ing the path, but that's
243 // another CL. 232 // another CL.
244 if (quads.size() == 1 && transformedQuad.isRectilinear() 233 if (quads.size() == 1 && transformedQuad.isRectilinear()
245 && !m_owningWebViewImpl->settingsImpl()->mockGestureTapHighlightsEna bled()) { 234 && !m_owningWebViewImpl->settingsImpl()->mockGestureTapHighlightsEna bled()) {
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 { 380 {
392 return clipLayer(); 381 return clipLayer();
393 } 382 }
394 383
395 CompositorAnimationPlayer* LinkHighlightImpl::compositorPlayer() const 384 CompositorAnimationPlayer* LinkHighlightImpl::compositorPlayer() const
396 { 385 {
397 return m_compositorPlayer.get(); 386 return m_compositorPlayer.get();
398 } 387 }
399 388
400 } // namespace blink 389 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/LinkHighlightImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698