Commit 19455fec authored by Yoichi Osato's avatar Yoichi Osato Committed by Commit Bot

Refactoring: DocumentMarkerVector::RemoveMarkers should receive only Text node.

Since DocumentMarkerController::MarkerMap only contains Text nodes as key,
the removing map entry functions should receive only Text node rather than Node.

Bug: 868229
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Change-Id: Id9b4daa1d116660f13d3c3961d5ed97758ceb01b
Reviewed-on: https://chromium-review.googlesource.com/1244698Reviewed-by: default avatarKent Tamura <tkent@chromium.org>
Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Yoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595415}
parent c71bf539
......@@ -2044,8 +2044,8 @@ void Node::DidMoveToNewDocument(Document& old_document) {
GetDocument().AddListenerTypeIfNeeded(type, *this);
}
}
old_document.Markers().RemoveMarkersForNode(this);
if (IsTextNode())
old_document.Markers().RemoveMarkersForNode(*ToText(this));
if (GetDocument().GetPage() &&
GetDocument().GetPage() != old_document.GetPage()) {
GetDocument().GetFrame()->GetEventHandlerRegistry().DidMoveIntoPage(*this);
......
......@@ -221,11 +221,13 @@ void DocumentMarkerController::RemoveMarkers(
if (!PossiblyHasMarkers(marker_types))
return;
DCHECK(!markers_.IsEmpty());
const Node& node = marked_text.CurrentContainer();
if (!node.IsTextNode())
continue;
int start_offset = marked_text.StartOffsetInCurrentContainer();
int end_offset = marked_text.EndOffsetInCurrentContainer();
RemoveMarkersInternal(marked_text.CurrentContainer(), start_offset,
end_offset - start_offset, marker_types);
RemoveMarkersInternal(ToText(node), start_offset, end_offset - start_offset,
marker_types);
}
}
......@@ -336,13 +338,10 @@ void DocumentMarkerController::MoveMarkers(const Text& src_node,
}
void DocumentMarkerController::RemoveMarkersInternal(
const Node& node,
const Text& text,
unsigned start_offset,
int length,
DocumentMarker::MarkerTypes marker_types) {
// TODO(yoichio): Make this function to take Text instead of Node.
if (!node.IsTextNode())
return;
if (length <= 0)
return;
......@@ -350,7 +349,7 @@ void DocumentMarkerController::RemoveMarkersInternal(
return;
DCHECK(!(markers_.IsEmpty()));
MarkerLists* const markers = markers_.at(&ToText(node));
MarkerLists* const markers = markers_.at(&text);
if (!markers)
return;
......@@ -377,7 +376,7 @@ void DocumentMarkerController::RemoveMarkersInternal(
}
if (empty_lists_count == DocumentMarker::kMarkerTypeIndexesCount) {
markers_.erase(&ToText(node));
markers_.erase(&text);
if (markers_.IsEmpty()) {
possibly_existing_marker_types_ = DocumentMarker::MarkerTypes();
SetContext(nullptr);
......@@ -387,7 +386,7 @@ void DocumentMarkerController::RemoveMarkersInternal(
if (!doc_dirty)
return;
InvalidatePaintForNode(node);
InvalidatePaintForNode(text);
}
DocumentMarker* DocumentMarkerController::FirstMarkerIntersectingOffsetRange(
......@@ -675,16 +674,13 @@ void DocumentMarkerController::Trace(blink::Visitor* visitor) {
}
void DocumentMarkerController::RemoveMarkersForNode(
const Node* node,
const Text& text,
DocumentMarker::MarkerTypes marker_types) {
// TODO(yoichio): Make this function to take Text instead of Node.
if (!node->IsTextNode())
return;
if (!PossiblyHasMarkers(marker_types))
return;
DCHECK(!markers_.IsEmpty());
MarkerMap::iterator iterator = markers_.find(ToText(node));
MarkerMap::iterator iterator = markers_.find(&text);
if (iterator != markers_.end())
RemoveMarkersFromList(iterator, marker_types);
}
......@@ -707,17 +703,14 @@ void DocumentMarkerController::RemoveSpellingMarkersUnderWords(
}
}
void DocumentMarkerController::RemoveSuggestionMarkerByTag(const Node* node,
void DocumentMarkerController::RemoveSuggestionMarkerByTag(const Text& text,
int32_t marker_tag) {
// TODO(yoichio): Make this function to take Text instead of Node.
if (!node->IsTextNode())
return;
MarkerLists* markers = markers_.at(ToText(node));
MarkerLists* markers = markers_.at(&text);
SuggestionMarkerListImpl* const list = ToSuggestionMarkerListImpl(
ListForType(markers, DocumentMarker::kSuggestion));
if (!list->RemoveMarkerByTag(marker_tag))
return;
InvalidatePaintForNode(*node);
InvalidatePaintForNode(text);
}
void DocumentMarkerController::RemoveMarkersOfTypes(
......
......@@ -79,10 +79,10 @@ class CORE_EXPORT DocumentMarkerController final
void RemoveMarkersInRange(const EphemeralRange&, DocumentMarker::MarkerTypes);
void RemoveMarkersOfTypes(DocumentMarker::MarkerTypes);
void RemoveMarkersForNode(
const Node*,
const Text&,
DocumentMarker::MarkerTypes = DocumentMarker::MarkerTypes::All());
void RemoveSpellingMarkersUnderWords(const Vector<String>& words);
void RemoveSuggestionMarkerByTag(const Node*, int32_t marker_tag);
void RemoveSuggestionMarkerByTag(const Text&, int32_t marker_tag);
void RepaintMarkers(
DocumentMarker::MarkerTypes = DocumentMarker::MarkerTypes::All());
// Returns true if markers within a range are found.
......@@ -154,7 +154,7 @@ class CORE_EXPORT DocumentMarkerController final
bool PossiblyHasMarkers(DocumentMarker::MarkerType) const;
void RemoveMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes);
void RemoveMarkers(TextIterator&, DocumentMarker::MarkerTypes);
void RemoveMarkersInternal(const Node&,
void RemoveMarkersInternal(const Text&,
unsigned start_offset,
int length,
DocumentMarker::MarkerTypes);
......
......@@ -366,7 +366,7 @@ TEST_F(DocumentMarkerControllerTest, RemoveSuggestionMarkerByTag) {
ASSERT_EQ(1u, MarkerController().Markers().size());
const SuggestionMarker& marker =
*ToSuggestionMarker(MarkerController().Markers()[0]);
MarkerController().RemoveSuggestionMarkerByTag(text, marker.Tag());
MarkerController().RemoveSuggestionMarkerByTag(*ToText(text), marker.Tag());
EXPECT_EQ(0u, MarkerController().Markers().size());
}
......
......@@ -416,9 +416,10 @@ void SpellChecker::RemoveSpellingAndGrammarMarkers(const HTMLElement& element,
GetFrame().GetDocument()->UpdateStyleAndLayoutTreeForNode(&element);
for (Node& node : NodeTraversal::InclusiveDescendantsOf(element)) {
if (elements_type == ElementsType::kAll || !HasEditableStyle(node)) {
if ((elements_type == ElementsType::kAll || !HasEditableStyle(node)) &&
node.IsTextNode()) {
GetFrame().GetDocument()->Markers().RemoveMarkersForNode(
&node, DocumentMarker::MarkerTypes::Misspelling());
ToText(node), DocumentMarker::MarkerTypes::Misspelling());
}
}
}
......
......@@ -296,14 +296,14 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag,
GetFrame().GetDocument()->Markers().MarkersIntersectingRange(
range_to_check, DocumentMarker::MarkerTypes::Suggestion());
const Node* marker_text_node = nullptr;
const Text* marker_text_node = nullptr;
SuggestionMarker* marker = nullptr;
for (const std::pair<Member<Node>, Member<DocumentMarker>>& node_marker_pair :
node_marker_pairs) {
SuggestionMarker* suggestion_marker =
ToSuggestionMarker(node_marker_pair.second);
if (suggestion_marker->Tag() == marker_tag) {
marker_text_node = node_marker_pair.first;
marker_text_node = ToText(node_marker_pair.first);
marker = suggestion_marker;
break;
}
......@@ -313,7 +313,7 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag,
OnSuggestionMenuClosed();
return;
}
DCHECK(marker_text_node);
const EphemeralRange& range_to_replace =
EphemeralRange(Position(marker_text_node, marker->StartOffset()),
Position(marker_text_node, marker->EndOffset()));
......@@ -328,7 +328,7 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag,
if (marker->IsMisspelling()) {
GetFrame().GetDocument()->Markers().RemoveSuggestionMarkerByTag(
marker_text_node, marker->Tag());
*marker_text_node, marker->Tag());
} else {
marker->SetSuggestion(suggestion_index, new_suggestion);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment