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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h

Issue 2525033002: Deprecate NGPhysicalConstraintSpace (Closed)
Patch Set: update TestExpectations Created 4 years 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
Index: third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
index 7124e1a2959180fabac75cea8d7fabaa93838c69..56e0daaf5d6b06d0dc8e5d731f8d300865690a9b 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
+++ b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
@@ -7,7 +7,7 @@
#include "core/CoreExport.h"
#include "core/layout/ng/ng_macros.h"
-#include "core/layout/ng/ng_physical_constraint_space.h"
+#include "core/layout/ng/ng_units.h"
#include "core/layout/ng/ng_writing_mode.h"
#include "platform/heap/Handle.h"
#include "wtf/text/WTFString.h"
@@ -20,39 +20,32 @@ class LayoutBox;
class NGFragment;
class NGLayoutOpportunityIterator;
+// TODO(glebl@): unused, delete.
+enum NGExclusionType {
+ kNGClearNone = 0,
+ kNGClearFloatLeft = 1,
+ kNGClearFloatRight = 2,
+ kNGClearFragment = 4
+};
+
+enum NGFragmentationType {
+ kFragmentNone,
+ kFragmentPage,
+ kFragmentColumn,
+ kFragmentRegion
+};
+
// The NGConstraintSpace represents a set of constraints and available space
-// which a layout algorithm may produce a NGFragment within. It is a view on
-// top of a NGPhysicalConstraintSpace and provides accessor methods in the
-// logical coordinate system defined by the writing mode given.
+// which a layout algorithm may produce a NGFragment within.
class CORE_EXPORT NGConstraintSpace final
- : public GarbageCollected<NGConstraintSpace> {
+ : public GarbageCollectedFinalized<NGConstraintSpace> {
public:
- // Constructs a constraint space based on an existing backing
- // NGPhysicalConstraintSpace. Sets this constraint space's size to the
- // physical constraint space's available size, converted to logical
- // coordinates.
- NGConstraintSpace(NGWritingMode, TextDirection, NGPhysicalConstraintSpace*);
-
// This should live on NGBlockNode or another layout bridge and probably take
- // a root
- // NGConstraintSpace or a NGPhysicalConstraintSpace.
+ // a root NGConstraintSpace.
static NGConstraintSpace* CreateFromLayoutObject(const LayoutBox&);
- // Mutable Getters.
- // TODO(layout-dev): remove const constraint from MutablePhysicalSpace method
- NGPhysicalConstraintSpace* MutablePhysicalSpace() const {
- return physical_space_;
- }
-
- // Read-only Getters.
- const NGPhysicalConstraintSpace* PhysicalSpace() const {
- return physical_space_;
- }
-
- const Vector<std::unique_ptr<const NGExclusion>>& Exclusions() const {
- WRITING_MODE_IGNORED(
- "Exclusions are stored directly in physical constraint space.");
- return PhysicalSpace()->Exclusions();
+ const std::shared_ptr<NGExclusions>& Exclusions() const {
+ return exclusions_;
}
TextDirection Direction() const {
@@ -63,40 +56,46 @@ class CORE_EXPORT NGConstraintSpace final
return static_cast<NGWritingMode>(writing_mode_);
}
- // Adds the exclusion in the physical constraint space.
- void AddExclusion(const NGExclusion& exclusion) const;
- const NGExclusion* LastLeftFloatExclusion() const;
- const NGExclusion* LastRightFloatExclusion() const;
+ void AddExclusion(const NGExclusion& exclusion);
// The size to use for percentage resolution.
// See: https://drafts.csswg.org/css-sizing/#percentage-sizing
- NGLogicalSize PercentageResolutionSize() const;
+ NGLogicalSize PercentageResolutionSize() const {
+ return percentage_resolution_size_;
+ }
// The available space size.
// See: https://drafts.csswg.org/css-sizing/#available
- NGLogicalSize AvailableSize() const;
+ NGLogicalSize AvailableSize() const { return available_size_; }
// Offset relative to the root constraint space.
NGLogicalOffset Offset() const { return offset_; }
+ // TODO(layout-ng): Set offset via NGConstraintSpacebuilder.
void SetOffset(const NGLogicalOffset& offset) { offset_ = offset; }
// Whether the current constraint space is for the newly established
// Formatting Context.
- bool IsNewFormattingContext() const;
+ bool IsNewFormattingContext() const { return is_new_fc_; }
// Whether exceeding the AvailableSize() triggers the presence of a scrollbar
// for the indicated direction.
// If exceeded the current layout should be aborted and invoked again with a
// constraint space modified to reserve space for a scrollbar.
- bool InlineTriggersScrollbar() const;
- bool BlockTriggersScrollbar() const;
+ bool IsInlineDirectionTriggersScrollbar() const {
+ return is_inline_direction_triggers_scrollbar_;
+ }
+
+ bool IsBlockDirectionTriggersScrollbar() const {
+ return is_block_direction_triggers_scrollbar_;
+ }
// Some layout modes “stretch” their children to a fixed size (e.g. flex,
// grid). These flags represented whether a layout needs to produce a
// fragment that satisfies a fixed constraint in the inline and block
// direction respectively.
- bool FixedInlineSize() const;
- bool FixedBlockSize() const;
+ bool IsFixedSizeInline() const { return is_fixed_size_inline_; }
+
+ bool IsFixedSizeBlock() const { return is_fixed_size_block_; }
// If specified a layout should produce a Fragment which fragments at the
// blockSize if possible.
@@ -111,17 +110,46 @@ class CORE_EXPORT NGConstraintSpace final
unsigned clear = kNGClearNone,
bool for_inline_or_bfc = false);
- DEFINE_INLINE_VIRTUAL_TRACE() { visitor->trace(physical_space_); }
+ DEFINE_INLINE_VIRTUAL_TRACE() {}
NGConstraintSpace* ChildSpace(const ComputedStyle* style) const;
-
String ToString() const;
private:
- Member<NGPhysicalConstraintSpace> physical_space_;
+ friend class NGConstraintSpaceBuilder;
+ // Default constructor.
+ NGConstraintSpace(NGWritingMode,
+ TextDirection,
+ NGLogicalSize available_size,
+ NGLogicalSize percentage_resolution_size,
+ bool is_fixed_size_inline,
+ bool is_fixed_size_block,
+ bool is_inline_direction_triggers_scrollbar,
+ bool is_block_direction_triggers_scrollbar,
+ NGFragmentationType block_direction_fragmentation_type,
+ bool is_new_fc,
+ const std::shared_ptr<NGExclusions>& exclusions_);
+
+ NGLogicalSize available_size_;
+ NGLogicalSize percentage_resolution_size_;
+
+ unsigned is_fixed_size_inline_ : 1;
+ unsigned is_fixed_size_block_ : 1;
+
+ unsigned is_inline_direction_triggers_scrollbar_ : 1;
+ unsigned is_block_direction_triggers_scrollbar_ : 1;
+
+ unsigned block_direction_fragmentation_type_ : 2;
+
+ // Whether the current constraint space is for the newly established
+ // formatting Context
+ unsigned is_new_fc_ : 1;
+
NGLogicalOffset offset_;
unsigned writing_mode_ : 3;
unsigned direction_ : 1;
+
+ const std::shared_ptr<NGExclusions> exclusions_;
};
inline std::ostream& operator<<(std::ostream& stream,

Powered by Google App Engine
This is Rietveld 408576698