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

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

Issue 2931363002: [LayoutNG] More precise checks for empty inline and add test (Closed)
Patch Set: ikilpatrick review Created 3 years, 6 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
Index: third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h
index 16cb2697abcc27e82bbe90a1472802c7ccfe917c..8ea6167d29ba49279ea609ed5eadf9cc13ada3de 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.h
@@ -43,10 +43,11 @@ class CORE_EXPORT NGLineBreaker {
RefPtr<NGInlineBreakToken> CreateBreakToken() const;
private:
- void BreakLine(NGLineInfo*, const NGLogicalOffset&);
+ void BreakLine(NGLineInfo*);
- void ResolveBFCOffset();
- LayoutUnit ComputeAvailableWidth(const NGLogicalOffset&) const;
+ bool HasAvailableWidth() const { return available_width_.has_value(); }
+ LayoutUnit AvailableWidth() const { return available_width_.value(); }
+ void UpdateAvailableWidth();
enum class LineBreakState {
// The current position is not breakable.
@@ -60,7 +61,6 @@ class CORE_EXPORT NGLineBreaker {
};
LineBreakState HandleText(const NGInlineItem&,
- LayoutUnit available_width,
NGInlineItemResult*);
void BreakText(NGInlineItemResult*,
const NGInlineItem&,
@@ -69,16 +69,16 @@ class CORE_EXPORT NGLineBreaker {
LineBreakState HandleControlItem(const NGInlineItem&, NGInlineItemResult*);
LineBreakState HandleAtomicInline(const NGInlineItem&, NGInlineItemResult*);
void HandleFloat(const NGInlineItem&,
- const NGLogicalOffset&,
- WTF::Optional<LayoutUnit>* available_width,
NGInlineItemResults*);
void HandleOpenTag(const NGInlineItem&, NGInlineItemResult*);
void HandleCloseTag(const NGInlineItem&, NGInlineItemResult*);
- void HandleOverflow(LayoutUnit available_width, NGLineInfo*);
+ void HandleOverflow(NGLineInfo*);
void Rewind(NGLineInfo*, unsigned new_end);
+ void SetShouldCreateLineBox();
+
void SetCurrentStyle(const ComputedStyle&);
void MoveToNextOf(const NGInlineItem&);
@@ -92,11 +92,14 @@ class CORE_EXPORT NGLineBreaker {
unsigned item_index_;
unsigned offset_;
LayoutUnit position_;
+ WTF::Optional<LayoutUnit> available_width_;
+ NGLogicalOffset content_offset_;
LazyLineBreakIterator break_iterator_;
HarfBuzzShaper shaper_;
ShapeResultSpacing<String> spacing_;
unsigned auto_wrap_ : 1;
+ unsigned should_create_line_box_ : 1;
};
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698