Index: third_party/WebKit/Source/core/layout/ng/ng_units.h |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_units.h b/third_party/WebKit/Source/core/layout/ng/ng_units.h |
index ff94f734bc63bb8a21e80cbbd374557babfb11a8..d5b98d198204e8bfbd054864bc8c07f48171d314 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_units.h |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_units.h |
@@ -44,6 +44,13 @@ struct NGLogicalSize { |
bool IsEmpty() const { |
return inline_size == LayoutUnit() || block_size == LayoutUnit(); |
} |
+ |
+ private: |
+ friend class NGBlockLayoutAlgorithmTest; |
+ // Used in tests. |
+ NGLogicalSize(int inline_size, int block_size) |
+ : inline_size(LayoutUnit(inline_size)), |
+ block_size(LayoutUnit(block_size)) {} |
}; |
inline std::ostream& operator<<(std::ostream& stream, |
@@ -77,9 +84,11 @@ struct NGLogicalOffset { |
bool operator==(const NGLogicalOffset& other) const; |
NGLogicalOffset operator+(const NGLogicalOffset& other) const; |
- |
NGLogicalOffset& operator+=(const NGLogicalOffset& other); |
+ NGLogicalOffset operator-(const NGLogicalOffset& other) const; |
+ NGLogicalOffset& operator-=(const NGLogicalOffset& other); |
+ |
bool operator>(const NGLogicalOffset& other) const; |
bool operator>=(const NGLogicalOffset& other) const; |
@@ -87,6 +96,13 @@ struct NGLogicalOffset { |
bool operator<=(const NGLogicalOffset& other) const; |
String ToString() const; |
+ |
+ private: |
+ friend class NGBlockLayoutAlgorithmTest; |
+ // Used in tests. |
+ NGLogicalOffset(int inline_offset, int block_offset) |
+ : inline_offset(LayoutUnit(inline_offset)), |
+ block_offset(LayoutUnit(block_offset)) {} |
}; |
CORE_EXPORT inline std::ostream& operator<<(std::ostream& os, |
@@ -105,8 +121,13 @@ struct NGPhysicalOffset { |
NGPhysicalOffset operator+(const NGPhysicalOffset& other) const; |
NGPhysicalOffset& operator+=(const NGPhysicalOffset& other); |
+ |
NGPhysicalOffset operator-(const NGPhysicalOffset& other) const; |
NGPhysicalOffset& operator-=(const NGPhysicalOffset& other); |
+ |
+ String ToString() const { |
+ return String::format("%dx%d", left.toInt(), top.toInt()); |
+ } |
}; |
struct NGPhysicalSize { |
@@ -119,11 +140,18 @@ struct NGPhysicalSize { |
NGLogicalSize ConvertToLogical(NGWritingMode mode) const; |
+ bool operator==(const NGPhysicalSize& other) const; |
+ |
String ToString() const { |
return String::format("%dx%d", width.toInt(), height.toInt()); |
} |
}; |
+inline std::ostream& operator<<(std::ostream& stream, |
+ const NGPhysicalSize& value) { |
+ return stream << value.ToString(); |
+} |
+ |
// NGPhysicalLocation is the position of a rect (typically a fragment) relative |
// to the root document. |
struct NGPhysicalLocation { |
@@ -139,6 +167,8 @@ struct NGPhysicalRect { |
// TODO(glebl): move to a separate file in layout/ng/units. |
struct CORE_EXPORT NGLogicalRect { |
NGLogicalRect() {} |
+ NGLogicalRect(const NGLogicalOffset& offset, const NGLogicalSize& size) |
+ : offset(offset), size(size) {} |
NGLogicalRect(LayoutUnit inline_offset, |
LayoutUnit block_offset, |
LayoutUnit inline_size, |
@@ -197,8 +227,16 @@ struct CORE_EXPORT NGExclusion { |
// Type of this exclusion. |
Type type; |
+ |
+ bool operator==(const NGExclusion& other) const; |
+ String ToString() const; |
}; |
+inline std::ostream& operator<<(std::ostream& stream, |
+ const NGExclusion& value) { |
+ return stream << value.ToString(); |
+} |
+ |
struct CORE_EXPORT NGExclusions { |
// Default constructor. |
NGExclusions(); |
@@ -268,7 +306,7 @@ struct CORE_EXPORT NGBoxStrut { |
bool operator==(const NGBoxStrut& other) const; |
String ToString() const { |
- return String::format("Inline (%d, %d) Block (%d, %d)", |
+ return String::format("Inline: (%d %d) Block: (%d %d)", |
inline_start.toInt(), inline_end.toInt(), |
block_start.toInt(), block_end.toInt()); |
} |
@@ -279,7 +317,8 @@ inline std::ostream& operator<<(std::ostream& stream, const NGBoxStrut& value) { |
} |
// This struct is used for the margin collapsing calculation. |
-struct CORE_EXPORT NGMarginStrut { |
+// TODO(glebl): Deprecated. It's being replaced by NGMarginStrut |
+struct CORE_EXPORT NGDeprecatedMarginStrut { |
LayoutUnit margin_block_start; |
LayoutUnit margin_block_end; |
@@ -297,7 +336,21 @@ struct CORE_EXPORT NGMarginStrut { |
String ToString() const; |
+ bool operator==(const NGDeprecatedMarginStrut& other) const; |
+}; |
+ |
+// This struct is used for the margin collapsing calculation. |
+struct CORE_EXPORT NGMarginStrut { |
+ LayoutUnit margin; |
+ LayoutUnit negative_margin; |
+ |
bool operator==(const NGMarginStrut& other) const; |
+ |
+ void Append(const LayoutUnit& value); |
+ |
+ LayoutUnit Collapse() const; |
+ |
+ String ToString() const; |
}; |
inline std::ostream& operator<<(std::ostream& stream, |