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

Side by Side Diff: Source/core/rendering/RenderView.cpp

Issue 898783003: Move rendering/RenderLayer* to layout/ (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/rendering/RenderView.h ('k') | Source/core/rendering/svg/RenderSVGBlock.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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 12 matching lines...) Expand all
23 23
24 #include "core/dom/Document.h" 24 #include "core/dom/Document.h"
25 #include "core/dom/Element.h" 25 #include "core/dom/Element.h"
26 #include "core/editing/FrameSelection.h" 26 #include "core/editing/FrameSelection.h"
27 #include "core/editing/VisibleUnits.h" 27 #include "core/editing/VisibleUnits.h"
28 #include "core/frame/LocalFrame.h" 28 #include "core/frame/LocalFrame.h"
29 #include "core/html/HTMLFrameOwnerElement.h" 29 #include "core/html/HTMLFrameOwnerElement.h"
30 #include "core/html/HTMLIFrameElement.h" 30 #include "core/html/HTMLIFrameElement.h"
31 #include "core/html/HTMLTextFormControlElement.h" 31 #include "core/html/HTMLTextFormControlElement.h"
32 #include "core/layout/HitTestResult.h" 32 #include "core/layout/HitTestResult.h"
33 #include "core/layout/Layer.h"
33 #include "core/layout/compositing/CompositedLayerMapping.h" 34 #include "core/layout/compositing/CompositedLayerMapping.h"
34 #include "core/layout/compositing/RenderLayerCompositor.h" 35 #include "core/layout/compositing/LayerCompositor.h"
35 #include "core/page/Page.h" 36 #include "core/page/Page.h"
36 #include "core/paint/ViewPainter.h" 37 #include "core/paint/ViewPainter.h"
37 #include "core/rendering/ColumnInfo.h" 38 #include "core/rendering/ColumnInfo.h"
38 #include "core/rendering/RenderFlowThread.h" 39 #include "core/rendering/RenderFlowThread.h"
39 #include "core/rendering/RenderGeometryMap.h" 40 #include "core/rendering/RenderGeometryMap.h"
40 #include "core/rendering/RenderLayer.h"
41 #include "core/rendering/RenderPart.h" 41 #include "core/rendering/RenderPart.h"
42 #include "core/rendering/RenderQuote.h" 42 #include "core/rendering/RenderQuote.h"
43 #include "core/rendering/RenderScrollbarPart.h" 43 #include "core/rendering/RenderScrollbarPart.h"
44 #include "core/svg/SVGDocumentExtensions.h" 44 #include "core/svg/SVGDocumentExtensions.h"
45 #include "platform/TraceEvent.h" 45 #include "platform/TraceEvent.h"
46 #include "platform/geometry/FloatQuad.h" 46 #include "platform/geometry/FloatQuad.h"
47 #include "platform/geometry/TransformState.h" 47 #include "platform/geometry/TransformState.h"
48 #include "platform/graphics/paint/DisplayItemList.h" 48 #include "platform/graphics/paint/DisplayItemList.h"
49 49
50 namespace blink { 50 namespace blink {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 { 82 {
83 return hitTest(request, result.hitTestLocation(), result); 83 return hitTest(request, result.hitTestLocation(), result);
84 } 84 }
85 85
86 bool RenderView::hitTest(const HitTestRequest& request, const HitTestLocation& l ocation, HitTestResult& result) 86 bool RenderView::hitTest(const HitTestRequest& request, const HitTestLocation& l ocation, HitTestResult& result)
87 { 87 {
88 TRACE_EVENT0("blink", "RenderView::hitTest"); 88 TRACE_EVENT0("blink", "RenderView::hitTest");
89 m_hitTestCount++; 89 m_hitTestCount++;
90 90
91 // We have to recursively update layout/style here because otherwise, when t he hit test recurses 91 // We have to recursively update layout/style here because otherwise, when t he hit test recurses
92 // into a child document, it could trigger a layout on the parent document, which can destroy RenderLayers 92 // into a child document, it could trigger a layout on the parent document, which can destroy Layers
93 // that are higher up in the call stack, leading to crashes. 93 // that are higher up in the call stack, leading to crashes.
94 // Note that Document::updateLayout calls its parent's updateLayout. 94 // Note that Document::updateLayout calls its parent's updateLayout.
95 // FIXME: It should be the caller's responsibility to ensure an up-to-date l ayout. 95 // FIXME: It should be the caller's responsibility to ensure an up-to-date l ayout.
96 frameView()->updateLayoutAndStyleIfNeededRecursive(); 96 frameView()->updateLayoutAndStyleIfNeededRecursive();
97 commitPendingSelection(); 97 commitPendingSelection();
98 98
99 bool hitLayer = layer()->hitTest(request, location, result); 99 bool hitLayer = layer()->hitTest(request, location, result);
100 100
101 // FrameView scrollbars are not the same as RenderLayer scrollbars tested by RenderLayer::hitTestOverflowControls, 101 // FrameView scrollbars are not the same as Layer scrollbars tested by Layer ::hitTestOverflowControls,
102 // so we need to test FrameView scrollbars separately here. Note that it's i mportant we do this after 102 // so we need to test FrameView scrollbars separately here. Note that it's i mportant we do this after
103 // the hit test above, because that may overwrite the entire HitTestResult w hen it finds a hit. 103 // the hit test above, because that may overwrite the entire HitTestResult w hen it finds a hit.
104 IntPoint viewPoint = location.roundedPoint() - frameView()->scrollOffset(); 104 IntPoint viewPoint = location.roundedPoint() - frameView()->scrollOffset();
105 if (Scrollbar* frameScrollbar = frameView()->scrollbarAtViewPoint(viewPoint) ) 105 if (Scrollbar* frameScrollbar = frameView()->scrollbarAtViewPoint(viewPoint) )
106 result.setScrollbar(frameScrollbar); 106 result.setScrollbar(frameScrollbar);
107 107
108 return hitLayer; 108 return hitLayer;
109 } 109 }
110 110
111 void RenderView::computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit, Logi calExtentComputedValues& computedValues) const 111 void RenderView::computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit, Logi calExtentComputedValues& computedValues) const
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 m_pageLogicalHeightChanged = false; 219 m_pageLogicalHeightChanged = false;
220 220
221 layoutContent(); 221 layoutContent();
222 222
223 #if ENABLE(ASSERT) 223 #if ENABLE(ASSERT)
224 checkLayoutState(); 224 checkLayoutState();
225 #endif 225 #endif
226 clearNeedsLayout(); 226 clearNeedsLayout();
227 } 227 }
228 228
229 void RenderView::mapLocalToContainer(const RenderLayerModelObject* paintInvalida tionContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* w asFixed, const PaintInvalidationState* paintInvalidationState) const 229 void RenderView::mapLocalToContainer(const LayoutLayerModelObject* paintInvalida tionContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* w asFixed, const PaintInvalidationState* paintInvalidationState) const
230 { 230 {
231 ASSERT_UNUSED(wasFixed, !wasFixed || *wasFixed == static_cast<bool>(mode & I sFixed)); 231 ASSERT_UNUSED(wasFixed, !wasFixed || *wasFixed == static_cast<bool>(mode & I sFixed));
232 232
233 if (!paintInvalidationContainer && mode & UseTransforms && shouldUseTransfor mFromContainer(0)) { 233 if (!paintInvalidationContainer && mode & UseTransforms && shouldUseTransfor mFromContainer(0)) {
234 TransformationMatrix t; 234 TransformationMatrix t;
235 getTransformFromContainer(0, LayoutSize(), t); 235 getTransformFromContainer(0, LayoutSize(), t);
236 transformState.applyTransform(t); 236 transformState.applyTransform(t);
237 } 237 }
238 238
239 if ((mode & IsFixed) && m_frameView) { 239 if ((mode & IsFixed) && m_frameView) {
240 transformState.move(m_frameView->scrollOffsetForViewportConstrainedObjec ts()); 240 transformState.move(m_frameView->scrollOffsetForViewportConstrainedObjec ts());
241 // IsFixed flag is only applicable within this RenderView. 241 // IsFixed flag is only applicable within this RenderView.
242 mode &= ~IsFixed; 242 mode &= ~IsFixed;
243 } 243 }
244 244
245 if (paintInvalidationContainer == this) 245 if (paintInvalidationContainer == this)
246 return; 246 return;
247 247
248 if (mode & TraverseDocumentBoundaries) { 248 if (mode & TraverseDocumentBoundaries) {
249 if (RenderObject* parentDocRenderer = frame()->ownerRenderer()) { 249 if (RenderObject* parentDocRenderer = frame()->ownerRenderer()) {
250 transformState.move(-frame()->view()->scrollOffset()); 250 transformState.move(-frame()->view()->scrollOffset());
251 if (parentDocRenderer->isBox()) 251 if (parentDocRenderer->isBox())
252 transformState.move(toRenderBox(parentDocRenderer)->contentBoxOf fset()); 252 transformState.move(toRenderBox(parentDocRenderer)->contentBoxOf fset());
253 parentDocRenderer->mapLocalToContainer(paintInvalidationContainer, t ransformState, mode, wasFixed, paintInvalidationState); 253 parentDocRenderer->mapLocalToContainer(paintInvalidationContainer, t ransformState, mode, wasFixed, paintInvalidationState);
254 return; 254 return;
255 } 255 }
256 } 256 }
257 } 257 }
258 258
259 const RenderObject* RenderView::pushMappingToContainer(const RenderLayerModelObj ect* ancestorToStopAt, RenderGeometryMap& geometryMap) const 259 const RenderObject* RenderView::pushMappingToContainer(const LayoutLayerModelObj ect* ancestorToStopAt, RenderGeometryMap& geometryMap) const
260 { 260 {
261 LayoutSize offsetForFixedPosition; 261 LayoutSize offsetForFixedPosition;
262 LayoutSize offset; 262 LayoutSize offset;
263 RenderObject* container = 0; 263 RenderObject* container = 0;
264 264
265 if (m_frameView) 265 if (m_frameView)
266 offsetForFixedPosition = LayoutSize(m_frameView->scrollOffsetForViewport ConstrainedObjects()); 266 offsetForFixedPosition = LayoutSize(m_frameView->scrollOffsetForViewport ConstrainedObjects());
267 267
268 if (geometryMap.mapCoordinatesFlags() & TraverseDocumentBoundaries) { 268 if (geometryMap.mapCoordinatesFlags() & TraverseDocumentBoundaries) {
269 if (RenderPart* parentDocRenderer = frame()->ownerRenderer()) { 269 if (RenderPart* parentDocRenderer = frame()->ownerRenderer()) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 } 319 }
320 320
321 void RenderView::invalidateTreeIfNeeded(const PaintInvalidationState& paintInval idationState) 321 void RenderView::invalidateTreeIfNeeded(const PaintInvalidationState& paintInval idationState)
322 { 322 {
323 ASSERT(!needsLayout()); 323 ASSERT(!needsLayout());
324 324
325 // We specifically need to issue paint invalidations for the viewRect since other renderers 325 // We specifically need to issue paint invalidations for the viewRect since other renderers
326 // short-circuit on full-paint invalidation. 326 // short-circuit on full-paint invalidation.
327 LayoutRect dirtyRect = viewRect(); 327 LayoutRect dirtyRect = viewRect();
328 if (doingFullPaintInvalidation() && !dirtyRect.isEmpty()) { 328 if (doingFullPaintInvalidation() && !dirtyRect.isEmpty()) {
329 const RenderLayerModelObject* paintInvalidationContainer = &paintInvalid ationState.paintInvalidationContainer(); 329 const LayoutLayerModelObject* paintInvalidationContainer = &paintInvalid ationState.paintInvalidationContainer();
330 RenderLayer::mapRectToPaintInvalidationBacking(this, paintInvalidationCo ntainer, dirtyRect, &paintInvalidationState); 330 Layer::mapRectToPaintInvalidationBacking(this, paintInvalidationContaine r, dirtyRect, &paintInvalidationState);
331 invalidatePaintUsingContainer(paintInvalidationContainer, dirtyRect, Pai ntInvalidationFull); 331 invalidatePaintUsingContainer(paintInvalidationContainer, dirtyRect, Pai ntInvalidationFull);
332 } 332 }
333 RenderBlock::invalidateTreeIfNeeded(paintInvalidationState); 333 RenderBlock::invalidateTreeIfNeeded(paintInvalidationState);
334 } 334 }
335 335
336 void RenderView::invalidatePaintForRectangle(const LayoutRect& paintInvalidation Rect, PaintInvalidationReason invalidationReason) const 336 void RenderView::invalidatePaintForRectangle(const LayoutRect& paintInvalidation Rect, PaintInvalidationReason invalidationReason) const
337 { 337 {
338 ASSERT(!paintInvalidationRect.isEmpty()); 338 ASSERT(!paintInvalidationRect.isEmpty());
339 339
340 if (document().printing() || !m_frameView) 340 if (document().printing() || !m_frameView)
(...skipping 12 matching lines...) Expand all
353 { 353 {
354 setShouldDoFullPaintInvalidation(); 354 setShouldDoFullPaintInvalidation();
355 355
356 // The only way we know how to hit these ASSERTS below this point is via the Chromium OS login screen. 356 // The only way we know how to hit these ASSERTS below this point is via the Chromium OS login screen.
357 DisableCompositingQueryAsserts disabler; 357 DisableCompositingQueryAsserts disabler;
358 358
359 if (compositor()->inCompositingMode()) 359 if (compositor()->inCompositingMode())
360 compositor()->fullyInvalidatePaint(); 360 compositor()->fullyInvalidatePaint();
361 } 361 }
362 362
363 void RenderView::mapRectToPaintInvalidationBacking(const RenderLayerModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* inv alidationState) const 363 void RenderView::mapRectToPaintInvalidationBacking(const LayoutLayerModelObject* paintInvalidationContainer, LayoutRect& rect, const PaintInvalidationState* inv alidationState) const
364 { 364 {
365 mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, IsNotFix edPosition, invalidationState); 365 mapRectToPaintInvalidationBacking(paintInvalidationContainer, rect, IsNotFix edPosition, invalidationState);
366 } 366 }
367 367
368 void RenderView::mapRectToPaintInvalidationBacking(const RenderLayerModelObject* paintInvalidationContainer, LayoutRect& rect, ViewportConstrainedPosition viewp ortConstraint, const PaintInvalidationState* state) const 368 void RenderView::mapRectToPaintInvalidationBacking(const LayoutLayerModelObject* paintInvalidationContainer, LayoutRect& rect, ViewportConstrainedPosition viewp ortConstraint, const PaintInvalidationState* state) const
369 { 369 {
370 if (document().printing()) 370 if (document().printing())
371 return; 371 return;
372 372
373 if (style()->isFlippedBlocksWritingMode()) { 373 if (style()->isFlippedBlocksWritingMode()) {
374 // We have to flip by hand since the view's logical height has not been determined. We 374 // We have to flip by hand since the view's logical height has not been determined. We
375 // can use the viewport width and height. 375 // can use the viewport width and height.
376 if (style()->isHorizontalWritingMode()) 376 if (style()->isHorizontalWritingMode())
377 rect.setY(viewHeight() - rect.maxY()); 377 rect.setY(viewHeight() - rect.maxY());
378 else 378 else
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 } 676 }
677 677
678 // Any new blocks that remain were not found in the old blocks dict, and so they need to be updated. 678 // Any new blocks that remain were not found in the old blocks dict, and so they need to be updated.
679 SelectedBlockMap::iterator newBlocksEnd = newSelectedBlocks.end(); 679 SelectedBlockMap::iterator newBlocksEnd = newSelectedBlocks.end();
680 for (SelectedBlockMap::iterator i = newSelectedBlocks.begin(); i != newBlock sEnd; ++i) 680 for (SelectedBlockMap::iterator i = newSelectedBlocks.begin(); i != newBlock sEnd; ++i)
681 i->key->setShouldInvalidateSelection(); 681 i->key->setShouldInvalidateSelection();
682 } 682 }
683 683
684 void RenderView::clearSelection() 684 void RenderView::clearSelection()
685 { 685 {
686 // For querying RenderLayer::compositingState() 686 // For querying Layer::compositingState()
687 // This is correct, since destroying render objects needs to cause eager pai nt invalidations. 687 // This is correct, since destroying render objects needs to cause eager pai nt invalidations.
688 DisableCompositingQueryAsserts disabler; 688 DisableCompositingQueryAsserts disabler;
689 689
690 layer()->invalidatePaintForBlockSelectionGaps(); 690 layer()->invalidatePaintForBlockSelectionGaps();
691 setSelection(0, -1, 0, -1, PaintInvalidationNewMinusOld); 691 setSelection(0, -1, 0, -1, PaintInvalidationNewMinusOld);
692 } 692 }
693 693
694 void RenderView::setSelection(const FrameSelection& selection) 694 void RenderView::setSelection(const FrameSelection& selection)
695 { 695 {
696 // No need to create a pending clearSelection() to be executed in PendingSel ection::commit() 696 // No need to create a pending clearSelection() to be executed in PendingSel ection::commit()
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 925
926 result.setLocalPoint(adjustedPoint); 926 result.setLocalPoint(adjustedPoint);
927 } 927 }
928 } 928 }
929 929
930 bool RenderView::usesCompositing() const 930 bool RenderView::usesCompositing() const
931 { 931 {
932 return m_compositor && m_compositor->staleInCompositingMode(); 932 return m_compositor && m_compositor->staleInCompositingMode();
933 } 933 }
934 934
935 RenderLayerCompositor* RenderView::compositor() 935 LayerCompositor* RenderView::compositor()
936 { 936 {
937 if (!m_compositor) 937 if (!m_compositor)
938 m_compositor = adoptPtr(new RenderLayerCompositor(*this)); 938 m_compositor = adoptPtr(new LayerCompositor(*this));
939 939
940 return m_compositor.get(); 940 return m_compositor.get();
941 } 941 }
942 942
943 void RenderView::setIsInWindow(bool isInWindow) 943 void RenderView::setIsInWindow(bool isInWindow)
944 { 944 {
945 if (m_compositor) 945 if (m_compositor)
946 m_compositor->setIsInWindow(isInWindow); 946 m_compositor->setIsInWindow(isInWindow);
947 } 947 }
948 948
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 } 981 }
982 982
983 void RenderView::invalidateDisplayItemClients(DisplayItemList* displayItemList) const 983 void RenderView::invalidateDisplayItemClients(DisplayItemList* displayItemList) const
984 { 984 {
985 RenderBlockFlow::invalidateDisplayItemClients(displayItemList); 985 RenderBlockFlow::invalidateDisplayItemClients(displayItemList);
986 if (m_frameView) 986 if (m_frameView)
987 displayItemList->invalidate(m_frameView->displayItemClient()); 987 displayItemList->invalidate(m_frameView->displayItemClient());
988 } 988 }
989 989
990 } // namespace blink 990 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderView.h ('k') | Source/core/rendering/svg/RenderSVGBlock.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698