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

Unified Diff: third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp

Issue 2902173003: Add member TextIterator::text_node_ (Closed)
Patch Set: Wed May 24 22:35:30 PDT 2017 Created 3 years, 7 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
« no previous file with comments | « third_party/WebKit/Source/core/editing/iterators/TextIterator.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
diff --git a/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp b/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
index d86addb74f3f406732c0a85e53015abddc29352c..fdec28a114c081bbf6fbcf5dc206bb08ae0c450a 100644
--- a/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
+++ b/third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp
@@ -521,8 +521,7 @@ bool TextIteratorAlgorithm<Strategy>::ShouldHandleFirstLetter(
template <typename Strategy>
void TextIteratorAlgorithm<Strategy>::HandlePreFormattedTextNode() {
// TODO(xiaochengh): Get rid of repeated computation of these fields.
- Text* const text_node = ToText(node_);
- LayoutText* const layout_object = text_node->GetLayoutObject();
+ LayoutText* const layout_object = text_node_->GetLayoutObject();
const String str = layout_object->GetText();
needs_handle_pre_formatted_text_node_ = false;
@@ -531,7 +530,7 @@ void TextIteratorAlgorithm<Strategy>::HandlePreFormattedTextNode() {
HasVisibleTextNode(layout_object)) {
if (!behavior_.CollapseTrailingSpace() ||
(offset_ > 0 && str[offset_ - 1] == ' ')) {
- SpliceBuffer(kSpaceCharacter, text_node, 0, offset_, offset_);
+ SpliceBuffer(kSpaceCharacter, text_node_, 0, offset_, offset_);
needs_handle_pre_formatted_text_node_ = true;
return;
}
@@ -542,11 +541,11 @@ void TextIteratorAlgorithm<Strategy>::HandlePreFormattedTextNode() {
const String first_letter = first_letter_text_->GetText();
const unsigned run_start = offset_;
const bool stops_in_first_letter =
- text_node == end_container_ &&
+ text_node_ == end_container_ &&
end_offset_ <= static_cast<int>(first_letter.length());
const unsigned run_end =
stops_in_first_letter ? end_offset_ : first_letter.length();
- EmitText(text_node, first_letter_text_, run_start, run_end);
+ EmitText(text_node_, first_letter_text_, run_start, run_end);
first_letter_text_ = nullptr;
text_box_ = 0;
offset_ = run_end;
@@ -565,7 +564,7 @@ void TextIteratorAlgorithm<Strategy>::HandlePreFormattedTextNode() {
DCHECK_GE(static_cast<unsigned>(offset_), layout_object->TextStartOffset());
const unsigned run_start = offset_ - layout_object->TextStartOffset();
const unsigned str_length = str.length();
- const unsigned end = (text_node == end_container_)
+ const unsigned end = (text_node_ == end_container_)
? end_offset_ - layout_object->TextStartOffset()
: str_length;
const unsigned run_end = std::min(str_length, end);
@@ -573,7 +572,7 @@ void TextIteratorAlgorithm<Strategy>::HandlePreFormattedTextNode() {
if (run_start >= run_end)
return;
- EmitText(text_node, text_node->GetLayoutObject(), run_start, run_end);
+ EmitText(text_node_, text_node_->GetLayoutObject(), run_start, run_end);
}
template <typename Strategy>
@@ -589,14 +588,14 @@ bool TextIteratorAlgorithm<Strategy>::HandleTextNode() {
DCHECK_NE(last_text_node_, node_)
<< "We should never call HandleTextNode on the same node twice";
- offset_ = node_ == start_container_ ? start_offset_ : 0;
+ text_node_ = ToText(node_);
+ offset_ = text_node_ == start_container_ ? start_offset_ : 0;
handled_first_letter_ = false;
first_letter_text_ = nullptr;
- Text* text_node = ToText(node_);
- LayoutText* layout_object = text_node->GetLayoutObject();
+ LayoutText* layout_object = text_node_->GetLayoutObject();
- last_text_node_ = text_node;
+ last_text_node_ = text_node_;
String str = layout_object->GetText();
// handle pre-formatted text
@@ -652,7 +651,7 @@ size_t TextIteratorAlgorithm<Strategy>::RestoreCollapsedTrailingSpace(
text_box_->Root().LastChild() != text_box_)
return subrun_end;
- const String& text = ToLayoutText(node_->GetLayoutObject())->GetText();
+ const String& text = text_node_->GetLayoutObject()->GetText();
if (text.EndsWith(' ') == 0 || subrun_end != text.length() - 1 ||
text[subrun_end - 1] == ' ')
return subrun_end;
@@ -675,9 +674,8 @@ size_t TextIteratorAlgorithm<Strategy>::RestoreCollapsedTrailingSpace(
template <typename Strategy>
void TextIteratorAlgorithm<Strategy>::HandleTextBox() {
- LayoutText* layout_object = first_letter_text_
- ? first_letter_text_
- : ToLayoutText(node_->GetLayoutObject());
+ LayoutText* layout_object =
+ first_letter_text_ ? first_letter_text_ : text_node_->GetLayoutObject();
const unsigned text_start_offset = layout_object->TextStartOffset();
if (layout_object->Style()->Visibility() != EVisibility::kVisible &&
@@ -689,7 +687,7 @@ void TextIteratorAlgorithm<Strategy>::HandleTextBox() {
// emitted (after handling whitespace collapsing).
const unsigned start = offset_ - layout_object->TextStartOffset();
const unsigned end =
- (node_ == end_container_)
+ (text_node_ == end_container_)
? static_cast<unsigned>(end_offset_) - text_start_offset
: INT_MAX;
while (text_box_) {
@@ -708,14 +706,15 @@ void TextIteratorAlgorithm<Strategy>::HandleTextBox() {
!layout_object->Style()->IsCollapsibleWhiteSpace(
text_state_.LastCharacter()) &&
text_state_.LastCharacter()) {
- if (last_text_node_ == node_ && run_start > 0 &&
+ if (last_text_node_ == text_node_ && run_start > 0 &&
str[run_start - 1] == ' ') {
unsigned space_run_start = run_start - 1;
while (space_run_start > 0 && str[space_run_start - 1] == ' ')
--space_run_start;
- EmitText(node_, layout_object, space_run_start, space_run_start + 1);
+ EmitText(text_node_, layout_object, space_run_start,
+ space_run_start + 1);
} else {
- SpliceBuffer(kSpaceCharacter, node_, 0, run_start, run_start);
+ SpliceBuffer(kSpaceCharacter, text_node_, 0, run_start, run_start);
}
return;
}
@@ -752,10 +751,12 @@ void TextIteratorAlgorithm<Strategy>::HandleTextBox() {
if (str[run_start] == '\n') {
// We need to preserve new lines in case of PreLine.
// See bug crbug.com/317365.
- if (layout_object->Style()->WhiteSpace() == EWhiteSpace::kPreLine)
- SpliceBuffer('\n', node_, 0, run_start, run_start);
- else
- SpliceBuffer(kSpaceCharacter, node_, 0, run_start, run_start + 1);
+ if (layout_object->Style()->WhiteSpace() == EWhiteSpace::kPreLine) {
+ SpliceBuffer('\n', text_node_, 0, run_start, run_start);
+ } else {
+ SpliceBuffer(kSpaceCharacter, text_node_, 0, run_start,
+ run_start + 1);
+ }
offset_ = text_start_offset + run_start + 1;
} else {
size_t subrun_end = str.find('\n', run_start);
@@ -766,7 +767,7 @@ void TextIteratorAlgorithm<Strategy>::HandleTextBox() {
}
offset_ = text_start_offset + subrun_end;
- EmitText(node_, layout_object, run_start, subrun_end);
+ EmitText(text_node_, layout_object, run_start, subrun_end);
}
// If we are doing a subrun that doesn't go to the end of the text box,
@@ -815,7 +816,7 @@ template <typename Strategy>
bool TextIteratorAlgorithm<Strategy>::ShouldProceedToRemainingText() const {
if (text_box_ || !remaining_text_box_)
return false;
- if (node_ != end_container_)
+ if (text_node_ != end_container_)
return true;
return offset_ < end_offset_;
}
@@ -825,7 +826,7 @@ void TextIteratorAlgorithm<Strategy>::ProceedToRemainingText() {
text_box_ = remaining_text_box_;
remaining_text_box_ = 0;
first_letter_text_ = nullptr;
- offset_ = ToLayoutText(node_->GetLayoutObject())->TextStartOffset();
+ offset_ = text_node_->GetLayoutObject()->TextStartOffset();
}
template <typename Strategy>
« no previous file with comments | « third_party/WebKit/Source/core/editing/iterators/TextIterator.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698