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

Side by Side Diff: Source/core/page/scrolling/ScrollingCoordinator.cpp

Issue 899163003: Move rendering/RenderObject to layout/LayoutObject. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/page/scrolling/ScrollingCoordinator.h ('k') | Source/core/paint/BlockPainter.h » ('j') | 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) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple 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 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 { 208 {
209 if (layer && layer != except && toWebLayer(layer)) 209 if (layer && layer != except && toWebLayer(layer))
210 toWebLayer(layer)->setPositionConstraint(WebLayerPositionConstraint()); 210 toWebLayer(layer)->setPositionConstraint(WebLayerPositionConstraint());
211 } 211 }
212 212
213 static WebLayerPositionConstraint computePositionConstraint(const Layer* layer) 213 static WebLayerPositionConstraint computePositionConstraint(const Layer* layer)
214 { 214 {
215 ASSERT(layer->hasCompositedLayerMapping()); 215 ASSERT(layer->hasCompositedLayerMapping());
216 do { 216 do {
217 if (layer->renderer()->style()->position() == FixedPosition) { 217 if (layer->renderer()->style()->position() == FixedPosition) {
218 const RenderObject* fixedPositionObject = layer->renderer(); 218 const LayoutObject* fixedPositionObject = layer->renderer();
219 bool fixedToRight = !fixedPositionObject->style()->right().isAuto(); 219 bool fixedToRight = !fixedPositionObject->style()->right().isAuto();
220 bool fixedToBottom = !fixedPositionObject->style()->bottom().isAuto( ); 220 bool fixedToBottom = !fixedPositionObject->style()->bottom().isAuto( );
221 return WebLayerPositionConstraint::fixedPosition(fixedToRight, fixed ToBottom); 221 return WebLayerPositionConstraint::fixedPosition(fixedToRight, fixed ToBottom);
222 } 222 }
223 223
224 layer = layer->parent(); 224 layer = layer->parent();
225 225
226 // Composited layers that inherit a fixed position state will be positio ned with respect to the nearest compositedLayerMapping's GraphicsLayer. 226 // Composited layers that inherit a fixed position state will be positio ned with respect to the nearest compositedLayerMapping's GraphicsLayer.
227 // So, once we find a layer that has its own compositedLayerMapping, we can stop searching for a fixed position RenderObject. 227 // So, once we find a layer that has its own compositedLayerMapping, we can stop searching for a fixed position LayoutObject.
228 } while (layer && !layer->hasCompositedLayerMapping()); 228 } while (layer && !layer->hasCompositedLayerMapping());
229 return WebLayerPositionConstraint(); 229 return WebLayerPositionConstraint();
230 } 230 }
231 231
232 void ScrollingCoordinator::updateLayerPositionConstraint(Layer* layer) 232 void ScrollingCoordinator::updateLayerPositionConstraint(Layer* layer)
233 { 233 {
234 ASSERT(layer->hasCompositedLayerMapping()); 234 ASSERT(layer->hasCompositedLayerMapping());
235 CompositedLayerMapping* compositedLayerMapping = layer->compositedLayerMappi ng(); 235 CompositedLayerMapping* compositedLayerMapping = layer->compositedLayerMappi ng();
236 GraphicsLayer* mainLayer = compositedLayerMapping->childForSuperlayers(); 236 GraphicsLayer* mainLayer = compositedLayerMapping->childForSuperlayers();
237 237
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 // current frame which we can consult while walking the layers of that frame. 435 // current frame which we can consult while walking the layers of that frame.
436 // Whenever we descend into a new frame, a new map will be created. 436 // Whenever we descend into a new frame, a new map will be created.
437 using LayerFrameMap = HashMap<const Layer*, Vector<const LocalFrame*>>; 437 using LayerFrameMap = HashMap<const Layer*, Vector<const LocalFrame*>>;
438 static void makeLayerChildFrameMap(const LocalFrame* currentFrame, LayerFrameMap * map) 438 static void makeLayerChildFrameMap(const LocalFrame* currentFrame, LayerFrameMap * map)
439 { 439 {
440 map->clear(); 440 map->clear();
441 const FrameTree& tree = currentFrame->tree(); 441 const FrameTree& tree = currentFrame->tree();
442 for (const Frame* child = tree.firstChild(); child; child = child->tree().ne xtSibling()) { 442 for (const Frame* child = tree.firstChild(); child; child = child->tree().ne xtSibling()) {
443 if (!child->isLocalFrame()) 443 if (!child->isLocalFrame())
444 continue; 444 continue;
445 const RenderObject* ownerRenderer = toLocalFrame(child)->ownerRenderer() ; 445 const LayoutObject* ownerRenderer = toLocalFrame(child)->ownerRenderer() ;
446 if (!ownerRenderer) 446 if (!ownerRenderer)
447 continue; 447 continue;
448 const Layer* containingLayer = ownerRenderer->enclosingLayer(); 448 const Layer* containingLayer = ownerRenderer->enclosingLayer();
449 LayerFrameMap::iterator iter = map->find(containingLayer); 449 LayerFrameMap::iterator iter = map->find(containingLayer);
450 if (iter == map->end()) 450 if (iter == map->end())
451 map->add(containingLayer, Vector<const LocalFrame*>()).storedValue-> value.append(toLocalFrame(child)); 451 map->add(containingLayer, Vector<const LocalFrame*>()).storedValue-> value.append(toLocalFrame(child));
452 else 452 else
453 iter->value.append(toLocalFrame(child)); 453 iter->value.append(toLocalFrame(child));
454 } 454 }
455 } 455 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 // all documents on the page). 533 // all documents on the page).
534 HashSet<const Layer*> layersWithRects; 534 HashSet<const Layer*> layersWithRects;
535 for (const auto& layerRect : layerRects) { 535 for (const auto& layerRect : layerRects) {
536 const Layer* layer = layerRect.key; 536 const Layer* layer = layerRect.key;
537 do { 537 do {
538 if (!layersWithRects.add(layer).isNewEntry) 538 if (!layersWithRects.add(layer).isNewEntry)
539 break; 539 break;
540 540
541 if (layer->parent()) { 541 if (layer->parent()) {
542 layer = layer->parent(); 542 layer = layer->parent();
543 } else if (RenderObject* parentDocRenderer = layer->renderer()->fram e()->ownerRenderer()) { 543 } else if (LayoutObject* parentDocRenderer = layer->renderer()->fram e()->ownerRenderer()) {
544 layer = parentDocRenderer->enclosingLayer(); 544 layer = parentDocRenderer->enclosingLayer();
545 touchHandlerInChildFrame = true; 545 touchHandlerInChildFrame = true;
546 } 546 }
547 } while (layer); 547 } while (layer);
548 } 548 }
549 549
550 // Now walk the layer projecting rects while maintaining a RenderGeometryMap 550 // Now walk the layer projecting rects while maintaining a RenderGeometryMap
551 MapCoordinatesFlags flags = UseTransforms; 551 MapCoordinatesFlags flags = UseTransforms;
552 if (touchHandlerInChildFrame) 552 if (touchHandlerInChildFrame)
553 flags |= TraverseDocumentBoundaries; 553 flags |= TraverseDocumentBoundaries;
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 if (!node || !node->inDocument()) 824 if (!node || !node->inDocument())
825 continue; 825 continue;
826 826
827 // If the document belongs to an invisible subframe it does not have a c omposited layer 827 // If the document belongs to an invisible subframe it does not have a c omposited layer
828 // and should be skipped. 828 // and should be skipped.
829 if (node->document().isInInvisibleSubframe()) 829 if (node->document().isInInvisibleSubframe())
830 continue; 830 continue;
831 831
832 if (node->isDocumentNode() && node != document) { 832 if (node->isDocumentNode() && node != document) {
833 accumulateDocumentTouchEventTargetRects(rects, toDocument(node)); 833 accumulateDocumentTouchEventTargetRects(rects, toDocument(node));
834 } else if (RenderObject* renderer = node->renderer()) { 834 } else if (LayoutObject* renderer = node->renderer()) {
835 // If the set also contains one of our ancestor nodes then processin g 835 // If the set also contains one of our ancestor nodes then processin g
836 // this node would be redundant. 836 // this node would be redundant.
837 bool hasTouchEventTargetAncestor = false; 837 bool hasTouchEventTargetAncestor = false;
838 for (Node* ancestor = node->parentNode(); ancestor && !hasTouchEvent TargetAncestor; ancestor = ancestor->parentNode()) { 838 for (Node* ancestor = node->parentNode(); ancestor && !hasTouchEvent TargetAncestor; ancestor = ancestor->parentNode()) {
839 if (targets->contains(ancestor)) 839 if (targets->contains(ancestor))
840 hasTouchEventTargetAncestor = true; 840 hasTouchEventTargetAncestor = true;
841 } 841 }
842 if (!hasTouchEventTargetAncestor) { 842 if (!hasTouchEventTargetAncestor) {
843 // Walk up the tree to the outermost non-composited scrollable l ayer. 843 // Walk up the tree to the outermost non-composited scrollable l ayer.
844 Layer* enclosingNonCompositedScrollLayer = nullptr; 844 Layer* enclosingNonCompositedScrollLayer = nullptr;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 frameView->scrollAnimator()->handleWheelEventPhase(phase); 951 frameView->scrollAnimator()->handleWheelEventPhase(phase);
952 } 952 }
953 #endif 953 #endif
954 954
955 bool ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects(Frame View* frameView) const 955 bool ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects(Frame View* frameView) const
956 { 956 {
957 const FrameView::ViewportConstrainedObjectSet* viewportConstrainedObjects = frameView->viewportConstrainedObjects(); 957 const FrameView::ViewportConstrainedObjectSet* viewportConstrainedObjects = frameView->viewportConstrainedObjects();
958 if (!viewportConstrainedObjects) 958 if (!viewportConstrainedObjects)
959 return false; 959 return false;
960 960
961 for (const RenderObject* renderer : *viewportConstrainedObjects) { 961 for (const LayoutObject* renderer : *viewportConstrainedObjects) {
962 ASSERT(renderer->isBoxModelObject() && renderer->hasLayer()); 962 ASSERT(renderer->isBoxModelObject() && renderer->hasLayer());
963 ASSERT(renderer->style()->position() == FixedPosition); 963 ASSERT(renderer->style()->position() == FixedPosition);
964 Layer* layer = toRenderBoxModelObject(renderer)->layer(); 964 Layer* layer = toRenderBoxModelObject(renderer)->layer();
965 965
966 // Whether the Layer scrolls with the viewport is a tree-depenent 966 // Whether the Layer scrolls with the viewport is a tree-depenent
967 // property and our viewportConstrainedObjects collection is maintained 967 // property and our viewportConstrainedObjects collection is maintained
968 // with only RenderObject-level information. 968 // with only LayoutObject-level information.
969 if (!layer->scrollsWithViewport()) 969 if (!layer->scrollsWithViewport())
970 continue; 970 continue;
971 971
972 // If the whole subtree is invisible, there's no reason to scroll on 972 // If the whole subtree is invisible, there's no reason to scroll on
973 // the main thread because we don't need to generate invalidations 973 // the main thread because we don't need to generate invalidations
974 // for invisible content. 974 // for invisible content.
975 if (layer->subtreeIsInvisible()) 975 if (layer->subtreeIsInvisible())
976 continue; 976 continue;
977 977
978 // We're only smart enough to scroll viewport-constrainted objects 978 // We're only smart enough to scroll viewport-constrainted objects
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 bool frameIsScrollable = frameView && frameView->isScrollable(); 1045 bool frameIsScrollable = frameView && frameView->isScrollable();
1046 if (frameIsScrollable != m_wasFrameScrollable) 1046 if (frameIsScrollable != m_wasFrameScrollable)
1047 return true; 1047 return true;
1048 1048
1049 if (WebLayer* scrollLayer = frameView ? toWebLayer(frameView->layerForScroll ing()) : nullptr) 1049 if (WebLayer* scrollLayer = frameView ? toWebLayer(frameView->layerForScroll ing()) : nullptr)
1050 return blink::WebSize(frameView->contentsSize()) != scrollLayer->bounds( ); 1050 return blink::WebSize(frameView->contentsSize()) != scrollLayer->bounds( );
1051 return false; 1051 return false;
1052 } 1052 }
1053 1053
1054 } // namespace blink 1054 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/page/scrolling/ScrollingCoordinator.h ('k') | Source/core/paint/BlockPainter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698