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

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

Issue 2943573002: Make NGInlineItemsBuilder construct whitespace-collapsed offset mapping (Closed)
Patch Set: Wed Jun 28 11:44:29 PDT 2017 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_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 7cc65a7a20c7c0c34ee357ed4c46f922960b06ea..6215798d9fd0a19c9f8c5876966617efd72abfc2 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
@@ -8,6 +8,7 @@
#include "core/CoreExport.h"
#include "core/layout/ng/inline/empty_offset_mapping_builder.h"
#include "core/layout/ng/inline/ng_inline_node.h"
+#include "core/layout/ng/inline/ng_offset_mapping_builder.h"
#include "platform/wtf/Allocator.h"
#include "platform/wtf/Vector.h"
#include "platform/wtf/text/StringBuilder.h"
@@ -28,8 +29,12 @@ class NGInlineItem;
// By calling EnterInline/ExitInline, it inserts bidirectional control
// characters as defined in:
// https://drafts.csswg.org/css-writing-modes-3/#bidi-control-codes-injection-table
-// TODO(xiaochengh): Utilize the passed-in OffsetMappingBuilder to construct
-// the whitespace-collapsed offset mapping.
+//
+// NGInlineItemsBuilder may optionally take an NGOffsetMappingBuilder template
+// parameter to construct the white-space collapsed offset mapping, which maps
+// offsets in the concatenation of all appended strings and characters to
+// offsets in |text_|.
+// See https://goo.gl/CJbxky for more details about offset mapping.
template <typename OffsetMappingBuilder>
class CORE_TEMPLATE_CLASS_EXPORT NGInlineItemsBuilderTemplate {
STACK_ALLOCATED();
@@ -87,9 +92,12 @@ class CORE_TEMPLATE_CLASS_EXPORT NGInlineItemsBuilderTemplate {
void EnterInline(LayoutObject*);
void ExitInline(LayoutObject*);
+ OffsetMappingBuilder& GetOffsetMappingBuilder() { return mapping_builder_; }
+
private:
Vector<NGInlineItem>* items_;
StringBuilder text_;
+ OffsetMappingBuilder mapping_builder_;
typedef struct OnExitNode {
LayoutObject* node;
@@ -129,9 +137,13 @@ class CORE_TEMPLATE_CLASS_EXPORT NGInlineItemsBuilderTemplate {
extern template class CORE_EXTERN_TEMPLATE_EXPORT
NGInlineItemsBuilderTemplate<EmptyOffsetMappingBuilder>;
+extern template class CORE_EXTERN_TEMPLATE_EXPORT
+ NGInlineItemsBuilderTemplate<NGOffsetMappingBuilder>;
using NGInlineItemsBuilder =
NGInlineItemsBuilderTemplate<EmptyOffsetMappingBuilder>;
+using NGInlineItemsBuilderForOffsetMapping =
+ NGInlineItemsBuilderTemplate<NGOffsetMappingBuilder>;
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698