Index: third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h |
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h |
index 9f295706ea0b3e1cdb2b3afe22068a496810b9bc..b627038dd28d0cb7be09f833ed9883a80e888272 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h |
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_items_builder.h |
@@ -41,6 +41,8 @@ class CORE_EXPORT NGInlineItemsBuilder { |
// Returns whether the items contain any Bidi controls. |
bool HasBidiControls() const { return has_bidi_controls_; } |
+ using AppendResult = std::pair<bool, Vector<unsigned>>; |
+ |
// Append a string. |
// When appending, spaces are collapsed according to CSS Text, The white space |
// processing rules |
@@ -50,7 +52,12 @@ class CORE_EXPORT NGInlineItemsBuilder { |
// this. |
// @param LayoutObject The LayoutObject for the string. |
// If a nullptr, it does not generate BidiRun. Bidi controls use this. |
- void Append(const String&, const ComputedStyle*, LayoutObject* = nullptr); |
+ // @return A pair, where the boolean denotes if the appending results in the |
+ // removal of a preceeding collapsible space, and the vector gives the indexes |
+ // of the collapsed spaces in the appended string. |
yoichio
2017/06/16 01:47:48
Does this value have enough information to build o
Xiaocheng
2017/06/16 01:59:14
Yes. The returned vector will contain the indexes
|
+ AppendResult Append(const String&, |
+ const ComputedStyle*, |
+ LayoutObject* = nullptr); |
// Append a character. |
// Currently this function is for adding control characters such as |
@@ -76,6 +83,9 @@ class CORE_EXPORT NGInlineItemsBuilder { |
void EnterInline(LayoutObject*); |
void ExitInline(LayoutObject*); |
+ // Returns true if the finalization removes a previous collapsible space. |
+ bool Finalize(); |
Xiaocheng
2017/06/16 00:09:44
This function is refactored out from ToString(), s
|
+ |
private: |
Vector<NGInlineItem>* items_; |
StringBuilder text_; |
@@ -92,19 +102,20 @@ class CORE_EXPORT NGInlineItemsBuilder { |
bool is_svgtext_ = false; |
bool has_bidi_controls_ = false; |
- void AppendWithWhiteSpaceCollapsing(const String&, |
- unsigned start, |
- unsigned end, |
- const ComputedStyle*, |
- LayoutObject*); |
- void AppendWithoutWhiteSpaceCollapsing(const String&, |
- const ComputedStyle*, |
- LayoutObject*); |
- void AppendWithPreservingNewlines(const String&, |
- const ComputedStyle*, |
- LayoutObject*); |
- |
- void AppendForcedBreak(const ComputedStyle*, LayoutObject*); |
+ AppendResult AppendWithWhiteSpaceCollapsing(const String&, |
+ unsigned start, |
+ unsigned end, |
+ const ComputedStyle*, |
+ LayoutObject*); |
+ AppendResult AppendWithoutWhiteSpaceCollapsing(const String&, |
+ const ComputedStyle*, |
+ LayoutObject*); |
+ AppendResult AppendWithPreservingNewlines(const String&, |
+ const ComputedStyle*, |
+ LayoutObject*); |
+ |
+ // Returns if a previous collapsible space is removed. |
+ bool AppendForcedBreak(const ComputedStyle*, LayoutObject*); |
// Because newlines may be removed depends on following characters, newlines |
// at the end of input string is not added to |text_| but instead |
@@ -112,11 +123,13 @@ class CORE_EXPORT NGInlineItemsBuilder { |
// This function determines whether to add the newline or ignore. |
void ProcessPendingNewline(const String&, const ComputedStyle*); |
- // Removes the collapsible space at the end of |text_| if exists. |
- void RemoveTrailingCollapsibleSpaceIfExists(unsigned*); |
+ // Removes the collapsible space at the end of |text_| if exists. Returns true |
+ // is a collapsible space is removed. |
+ bool RemoveTrailingCollapsibleSpaceIfExists(unsigned*); |
void RemoveTrailingCollapsibleSpace(unsigned*); |
- void RemoveTrailingCollapsibleNewlineIfNeeded(unsigned*, |
+ // Returns true if a collapsible newline is removed. |
+ bool RemoveTrailingCollapsibleNewlineIfNeeded(unsigned*, |
const String&, |
unsigned, |
const ComputedStyle*); |