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

Unified Diff: Source/core/layout/LayoutBoxModelObject.h

Issue 945803004: Merge back LayoutLayerModelObject into RenderBoxModelObject (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Better rebasing. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/layout/LayoutBR.h ('k') | Source/core/layout/LayoutBoxModelObject.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/layout/LayoutBoxModelObject.h
diff --git a/Source/core/layout/LayoutBoxModelObject.h b/Source/core/layout/LayoutBoxModelObject.h
index 215e60ae9a2fe31efee601da1c80acbc7cffd4fa..3b5f05ab800a09dcff3b7e0d5e1b94888fe59e09 100644
--- a/Source/core/layout/LayoutBoxModelObject.h
+++ b/Source/core/layout/LayoutBoxModelObject.h
@@ -24,12 +24,24 @@
#ifndef LayoutBoxModelObject_h
#define LayoutBoxModelObject_h
-#include "core/layout/LayoutLayerModelObject.h"
+#include "core/layout/LayoutObject.h"
#include "core/layout/style/ShadowData.h"
#include "platform/geometry/LayoutRect.h"
namespace blink {
+class Layer;
+class LayerScrollableArea;
+
+enum LayerType {
+ NoLayer,
+ NormalLayer,
+ // A forced or overflow clip layer is required for bookkeeping purposes,
+ // but does not force a layer to be self painting.
+ OverflowClipLayer,
+ ForcedLayer
+};
+
// Modes for some of the line-related functions.
enum LinePositionMode { PositionOnContainingLine, PositionOfInteriorLineBoxes };
enum LineDirectionMode { HorizontalLine, VerticalLine };
@@ -53,11 +65,14 @@ class InlineFlowBox;
// This class is the base for all objects that adhere to the CSS box model as described
// at http://www.w3.org/TR/CSS21/box.html
-class LayoutBoxModelObject : public LayoutLayerModelObject {
+class LayoutBoxModelObject : public LayoutObject {
public:
LayoutBoxModelObject(ContainerNode*);
virtual ~LayoutBoxModelObject();
+ // This is the only way layers should ever be destroyed.
+ void destroyLayer();
+
LayoutSize relativePositionOffset() const;
LayoutSize relativePositionLogicalOffset() const { return style()->isHorizontalWritingMode() ? relativePositionOffset() : relativePositionOffset().transposedSize(); }
@@ -75,7 +90,13 @@ public:
virtual int pixelSnappedOffsetWidth() const;
virtual int pixelSnappedOffsetHeight() const;
- virtual void updateFromStyle() override;
+ bool hasSelfPaintingLayer() const;
+ Layer* layer() const { return m_layer.get(); }
+ LayerScrollableArea* scrollableArea() const;
+
+ virtual void updateFromStyle();
+
+ virtual LayerType layerTypeRequired() const = 0;
// This will work on inlines to return the bounding box of all of the lines' border boxes.
virtual IntRect borderBoundingBox() const = 0;
@@ -159,7 +180,7 @@ public:
virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const = 0;
virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) const override;
- virtual const LayoutObject* pushMappingToContainer(const LayoutLayerModelObject* ancestorToStopAt, LayoutGeometryMap&) const override;
+ virtual const LayoutObject* pushMappingToContainer(const LayoutBoxModelObject* ancestorToStopAt, LayoutGeometryMap&) const override;
virtual void setSelectionState(SelectionState) override;
@@ -168,6 +189,15 @@ public:
virtual void computeLayerHitTestRects(LayerHitTestRects&) const override;
+ // Returns true if the background is painted opaque in the given rect.
+ // The query rect is given in local coordinate system.
+ virtual bool backgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const { return false; }
+
+ virtual void invalidateTreeIfNeeded(const PaintInvalidationState&) override;
+
+ // Indicate that the contents of this renderer need to be repainted. Only has an effect if compositing is being used,
+ void setBackingNeedsPaintInvalidationInRect(const LayoutRect&, PaintInvalidationReason) const; // r is in the coordinate space of this render object
+
protected:
virtual void willBeDestroyed() override;
@@ -183,6 +213,13 @@ protected:
bool hasAutoHeightOrContainingBlockWithAutoHeight() const;
RenderBlock* containingBlockForAutoHeightDetection(Length logicalHeight) const;
+ void addChildFocusRingRects(Vector<LayoutRect>&, const LayoutPoint& additionalOffset) const;
+
+ virtual void addLayerHitTestRects(LayerHitTestRects&, const Layer*, const LayoutPoint&, const LayoutRect&) const override;
+
+ void styleWillChange(StyleDifference, const LayoutStyle& newStyle) override;
+ void styleDidChange(StyleDifference, const LayoutStyle* oldStyle) override;
+
public:
// These functions are only used internally to manipulate the render tree structure via remove/insert/appendChildNode.
// Since they are typically called only to move objects around within anonymous blocks (which only have layers in
@@ -212,8 +249,17 @@ public:
IntSize calculateImageIntrinsicDimensions(StyleImage*, const IntSize& scaledPositioningAreaSize, ScaleByEffectiveZoomOrNot) const;
private:
+ void createLayer(LayerType);
+
LayoutUnit computedCSSPadding(const Length&) const;
virtual bool isBoxModelObject() const override final { return true; }
+
+ virtual bool isLayoutBoxModelObject() const override final { return true; }
+
+ OwnPtr<Layer> m_layer;
+
+ // Used to store state between styleWillChange and styleDidChange
+ static bool s_wasFloating;
};
DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutBoxModelObject, isBoxModelObject());
« no previous file with comments | « Source/core/layout/LayoutBR.h ('k') | Source/core/layout/LayoutBoxModelObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698