Move function bodies to ng_offset_mapping_result.cc
Bug: 699017
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: I1911243a6f465e84f559992951568ee7cbc1ce0b
Reviewed-on: https://chromium-review.googlesource.com/585901
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#489606}diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
index d025f2de..cebf9379 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_inline_node.cc
@@ -700,26 +700,6 @@
return result.GetMappingUnitForDOMOffset(ToLayoutText(layout_object), offset);
}
-// TODO(xiaochengh): Move this function body to ng_offset_mapping_result.cc
-const NGOffsetMappingUnit* NGOffsetMappingResult::GetMappingUnitForDOMOffset(
- const LayoutText* layout_text,
- unsigned offset) const {
- unsigned range_start;
- unsigned range_end;
- std::tie(range_start, range_end) = ranges_.at(layout_text);
- if (range_start == range_end || units_[range_start].DOMStart() > offset)
- return nullptr;
- // Find the last unit where unit.dom_start <= offset
- const NGOffsetMappingUnit* unit = std::prev(std::upper_bound(
- units_.begin() + range_start, units_.begin() + range_end, offset,
- [](unsigned offset, const NGOffsetMappingUnit& unit) {
- return offset < unit.DOMStart();
- }));
- if (unit->DOMEnd() < offset)
- return nullptr;
- return unit;
-}
-
size_t NGInlineNode::GetTextContentOffset(const Node& node, unsigned offset) {
const NGOffsetMappingUnit* unit = GetMappingUnitForDOMOffset(node, offset);
if (!unit)
@@ -727,22 +707,4 @@
return unit->ConvertDOMOffsetToTextContent(offset);
}
-// TODO(xiaochengh): Move this function body to ng_offset_mapping_result.cc
-unsigned NGOffsetMappingUnit::ConvertDOMOffsetToTextContent(
- unsigned offset) const {
- DCHECK_GE(offset, dom_start_);
- DCHECK_LE(offset, dom_end_);
- // DOM start is always mapped to text content start.
- if (offset == dom_start_)
- return text_content_start_;
- // DOM end is always mapped to text content end.
- if (offset == dom_end_)
- return text_content_end_;
- // Handle collapsed mapping.
- if (text_content_start_ == text_content_end_)
- return text_content_start_;
- // Handle has identity mapping.
- return offset - dom_start_ + text_content_start_;
-}
-
} // namespace blink
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_offset_mapping_result.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_offset_mapping_result.cc
index c2143ca..98b5751 100644
--- a/third_party/WebKit/Source/core/layout/ng/inline/ng_offset_mapping_result.cc
+++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_offset_mapping_result.cc
@@ -19,6 +19,23 @@
text_content_start_(text_content_start),
text_content_end_(text_content_end) {}
+unsigned NGOffsetMappingUnit::ConvertDOMOffsetToTextContent(
+ unsigned offset) const {
+ DCHECK_GE(offset, dom_start_);
+ DCHECK_LE(offset, dom_end_);
+ // DOM start is always mapped to text content start.
+ if (offset == dom_start_)
+ return text_content_start_;
+ // DOM end is always mapped to text content end.
+ if (offset == dom_end_)
+ return text_content_end_;
+ // Handle collapsed mapping.
+ if (text_content_start_ == text_content_end_)
+ return text_content_start_;
+ // Handle has identity mapping.
+ return offset - dom_start_ + text_content_start_;
+}
+
NGOffsetMappingResult::NGOffsetMappingResult(NGOffsetMappingResult&& other)
: NGOffsetMappingResult(std::move(other.units_), std::move(other.ranges_)) {
}
@@ -27,4 +44,23 @@
RangeMap&& ranges)
: units_(units), ranges_(ranges) {}
+const NGOffsetMappingUnit* NGOffsetMappingResult::GetMappingUnitForDOMOffset(
+ const LayoutText* layout_text,
+ unsigned offset) const {
+ unsigned range_start;
+ unsigned range_end;
+ std::tie(range_start, range_end) = ranges_.at(layout_text);
+ if (range_start == range_end || units_[range_start].DOMStart() > offset)
+ return nullptr;
+ // Find the last unit where unit.dom_start <= offset
+ const NGOffsetMappingUnit* unit = std::prev(std::upper_bound(
+ units_.begin() + range_start, units_.begin() + range_end, offset,
+ [](unsigned offset, const NGOffsetMappingUnit& unit) {
+ return offset < unit.DOMStart();
+ }));
+ if (unit->DOMEnd() < offset)
+ return nullptr;
+ return unit;
+}
+
} // namespace blink