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) { ...@@ -2044,8 +2044,8 @@ void Node::DidMoveToNewDocument(Document& old_document) {
GetDocument().AddListenerTypeIfNeeded(type, *this); GetDocument().AddListenerTypeIfNeeded(type, *this);
} }
} }
if (IsTextNode())
old_document.Markers().RemoveMarkersForNode(this); old_document.Markers().RemoveMarkersForNode(*ToText(this));
if (GetDocument().GetPage() && if (GetDocument().GetPage() &&
GetDocument().GetPage() != old_document.GetPage()) { GetDocument().GetPage() != old_document.GetPage()) {
GetDocument().GetFrame()->GetEventHandlerRegistry().DidMoveIntoPage(*this); GetDocument().GetFrame()->GetEventHandlerRegistry().DidMoveIntoPage(*this);
......
...@@ -221,11 +221,13 @@ void DocumentMarkerController::RemoveMarkers( ...@@ -221,11 +221,13 @@ void DocumentMarkerController::RemoveMarkers(
if (!PossiblyHasMarkers(marker_types)) if (!PossiblyHasMarkers(marker_types))
return; return;
DCHECK(!markers_.IsEmpty()); DCHECK(!markers_.IsEmpty());
const Node& node = marked_text.CurrentContainer();
if (!node.IsTextNode())
continue;
int start_offset = marked_text.StartOffsetInCurrentContainer(); int start_offset = marked_text.StartOffsetInCurrentContainer();
int end_offset = marked_text.EndOffsetInCurrentContainer(); int end_offset = marked_text.EndOffsetInCurrentContainer();
RemoveMarkersInternal(marked_text.CurrentContainer(), start_offset, RemoveMarkersInternal(ToText(node), start_offset, end_offset - start_offset,
end_offset - start_offset, marker_types); marker_types);
} }
} }
...@@ -336,13 +338,10 @@ void DocumentMarkerController::MoveMarkers(const Text& src_node, ...@@ -336,13 +338,10 @@ void DocumentMarkerController::MoveMarkers(const Text& src_node,
} }
void DocumentMarkerController::RemoveMarkersInternal( void DocumentMarkerController::RemoveMarkersInternal(
const Node& node, const Text& text,
unsigned start_offset, unsigned start_offset,
int length, int length,
DocumentMarker::MarkerTypes marker_types) { DocumentMarker::MarkerTypes marker_types) {
// TODO(yoichio): Make this function to take Text instead of Node.
if (!node.IsTextNode())
return;
if (length <= 0) if (length <= 0)
return; return;
...@@ -350,7 +349,7 @@ void DocumentMarkerController::RemoveMarkersInternal( ...@@ -350,7 +349,7 @@ void DocumentMarkerController::RemoveMarkersInternal(
return; return;
DCHECK(!(markers_.IsEmpty())); DCHECK(!(markers_.IsEmpty()));
MarkerLists* const markers = markers_.at(&ToText(node)); MarkerLists* const markers = markers_.at(&text);
if (!markers) if (!markers)
return; return;
...@@ -377,7 +376,7 @@ void DocumentMarkerController::RemoveMarkersInternal( ...@@ -377,7 +376,7 @@ void DocumentMarkerController::RemoveMarkersInternal(
} }
if (empty_lists_count == DocumentMarker::kMarkerTypeIndexesCount) { if (empty_lists_count == DocumentMarker::kMarkerTypeIndexesCount) {
markers_.erase(&ToText(node)); markers_.erase(&text);
if (markers_.IsEmpty()) { if (markers_.IsEmpty()) {
possibly_existing_marker_types_ = DocumentMarker::MarkerTypes(); possibly_existing_marker_types_ = DocumentMarker::MarkerTypes();
SetContext(nullptr); SetContext(nullptr);
...@@ -387,7 +386,7 @@ void DocumentMarkerController::RemoveMarkersInternal( ...@@ -387,7 +386,7 @@ void DocumentMarkerController::RemoveMarkersInternal(
if (!doc_dirty) if (!doc_dirty)
return; return;
InvalidatePaintForNode(node); InvalidatePaintForNode(text);
} }
DocumentMarker* DocumentMarkerController::FirstMarkerIntersectingOffsetRange( DocumentMarker* DocumentMarkerController::FirstMarkerIntersectingOffsetRange(
...@@ -675,16 +674,13 @@ void DocumentMarkerController::Trace(blink::Visitor* visitor) { ...@@ -675,16 +674,13 @@ void DocumentMarkerController::Trace(blink::Visitor* visitor) {
} }
void DocumentMarkerController::RemoveMarkersForNode( void DocumentMarkerController::RemoveMarkersForNode(
const Node* node, const Text& text,
DocumentMarker::MarkerTypes marker_types) { DocumentMarker::MarkerTypes marker_types) {
// TODO(yoichio): Make this function to take Text instead of Node.
if (!node->IsTextNode())
return;
if (!PossiblyHasMarkers(marker_types)) if (!PossiblyHasMarkers(marker_types))
return; return;
DCHECK(!markers_.IsEmpty()); DCHECK(!markers_.IsEmpty());
MarkerMap::iterator iterator = markers_.find(ToText(node)); MarkerMap::iterator iterator = markers_.find(&text);
if (iterator != markers_.end()) if (iterator != markers_.end())
RemoveMarkersFromList(iterator, marker_types); RemoveMarkersFromList(iterator, marker_types);
} }
...@@ -707,17 +703,14 @@ void DocumentMarkerController::RemoveSpellingMarkersUnderWords( ...@@ -707,17 +703,14 @@ void DocumentMarkerController::RemoveSpellingMarkersUnderWords(
} }
} }
void DocumentMarkerController::RemoveSuggestionMarkerByTag(const Node* node, void DocumentMarkerController::RemoveSuggestionMarkerByTag(const Text& text,
int32_t marker_tag) { int32_t marker_tag) {
// TODO(yoichio): Make this function to take Text instead of Node. MarkerLists* markers = markers_.at(&text);
if (!node->IsTextNode())
return;
MarkerLists* markers = markers_.at(ToText(node));
SuggestionMarkerListImpl* const list = ToSuggestionMarkerListImpl( SuggestionMarkerListImpl* const list = ToSuggestionMarkerListImpl(
ListForType(markers, DocumentMarker::kSuggestion)); ListForType(markers, DocumentMarker::kSuggestion));
if (!list->RemoveMarkerByTag(marker_tag)) if (!list->RemoveMarkerByTag(marker_tag))
return; return;
InvalidatePaintForNode(*node); InvalidatePaintForNode(text);
} }
void DocumentMarkerController::RemoveMarkersOfTypes( void DocumentMarkerController::RemoveMarkersOfTypes(
......
...@@ -79,10 +79,10 @@ class CORE_EXPORT DocumentMarkerController final ...@@ -79,10 +79,10 @@ class CORE_EXPORT DocumentMarkerController final
void RemoveMarkersInRange(const EphemeralRange&, DocumentMarker::MarkerTypes); void RemoveMarkersInRange(const EphemeralRange&, DocumentMarker::MarkerTypes);
void RemoveMarkersOfTypes(DocumentMarker::MarkerTypes); void RemoveMarkersOfTypes(DocumentMarker::MarkerTypes);
void RemoveMarkersForNode( void RemoveMarkersForNode(
const Node*, const Text&,
DocumentMarker::MarkerTypes = DocumentMarker::MarkerTypes::All()); DocumentMarker::MarkerTypes = DocumentMarker::MarkerTypes::All());
void RemoveSpellingMarkersUnderWords(const Vector<String>& words); void RemoveSpellingMarkersUnderWords(const Vector<String>& words);
void RemoveSuggestionMarkerByTag(const Node*, int32_t marker_tag); void RemoveSuggestionMarkerByTag(const Text&, int32_t marker_tag);
void RepaintMarkers( void RepaintMarkers(
DocumentMarker::MarkerTypes = DocumentMarker::MarkerTypes::All()); DocumentMarker::MarkerTypes = DocumentMarker::MarkerTypes::All());
// Returns true if markers within a range are found. // Returns true if markers within a range are found.
...@@ -154,7 +154,7 @@ class CORE_EXPORT DocumentMarkerController final ...@@ -154,7 +154,7 @@ class CORE_EXPORT DocumentMarkerController final
bool PossiblyHasMarkers(DocumentMarker::MarkerType) const; bool PossiblyHasMarkers(DocumentMarker::MarkerType) const;
void RemoveMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes); void RemoveMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes);
void RemoveMarkers(TextIterator&, DocumentMarker::MarkerTypes); void RemoveMarkers(TextIterator&, DocumentMarker::MarkerTypes);
void RemoveMarkersInternal(const Node&, void RemoveMarkersInternal(const Text&,
unsigned start_offset, unsigned start_offset,
int length, int length,
DocumentMarker::MarkerTypes); DocumentMarker::MarkerTypes);
......
...@@ -366,7 +366,7 @@ TEST_F(DocumentMarkerControllerTest, RemoveSuggestionMarkerByTag) { ...@@ -366,7 +366,7 @@ TEST_F(DocumentMarkerControllerTest, RemoveSuggestionMarkerByTag) {
ASSERT_EQ(1u, MarkerController().Markers().size()); ASSERT_EQ(1u, MarkerController().Markers().size());
const SuggestionMarker& marker = const SuggestionMarker& marker =
*ToSuggestionMarker(MarkerController().Markers()[0]); *ToSuggestionMarker(MarkerController().Markers()[0]);
MarkerController().RemoveSuggestionMarkerByTag(text, marker.Tag()); MarkerController().RemoveSuggestionMarkerByTag(*ToText(text), marker.Tag());
EXPECT_EQ(0u, MarkerController().Markers().size()); EXPECT_EQ(0u, MarkerController().Markers().size());
} }
......
...@@ -416,9 +416,10 @@ void SpellChecker::RemoveSpellingAndGrammarMarkers(const HTMLElement& element, ...@@ -416,9 +416,10 @@ void SpellChecker::RemoveSpellingAndGrammarMarkers(const HTMLElement& element,
GetFrame().GetDocument()->UpdateStyleAndLayoutTreeForNode(&element); GetFrame().GetDocument()->UpdateStyleAndLayoutTreeForNode(&element);
for (Node& node : NodeTraversal::InclusiveDescendantsOf(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( GetFrame().GetDocument()->Markers().RemoveMarkersForNode(
&node, DocumentMarker::MarkerTypes::Misspelling()); ToText(node), DocumentMarker::MarkerTypes::Misspelling());
} }
} }
} }
......
...@@ -296,14 +296,14 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag, ...@@ -296,14 +296,14 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag,
GetFrame().GetDocument()->Markers().MarkersIntersectingRange( GetFrame().GetDocument()->Markers().MarkersIntersectingRange(
range_to_check, DocumentMarker::MarkerTypes::Suggestion()); range_to_check, DocumentMarker::MarkerTypes::Suggestion());
const Node* marker_text_node = nullptr; const Text* marker_text_node = nullptr;
SuggestionMarker* marker = nullptr; SuggestionMarker* marker = nullptr;
for (const std::pair<Member<Node>, Member<DocumentMarker>>& node_marker_pair : for (const std::pair<Member<Node>, Member<DocumentMarker>>& node_marker_pair :
node_marker_pairs) { node_marker_pairs) {
SuggestionMarker* suggestion_marker = SuggestionMarker* suggestion_marker =
ToSuggestionMarker(node_marker_pair.second); ToSuggestionMarker(node_marker_pair.second);
if (suggestion_marker->Tag() == marker_tag) { if (suggestion_marker->Tag() == marker_tag) {
marker_text_node = node_marker_pair.first; marker_text_node = ToText(node_marker_pair.first);
marker = suggestion_marker; marker = suggestion_marker;
break; break;
} }
...@@ -313,7 +313,7 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag, ...@@ -313,7 +313,7 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag,
OnSuggestionMenuClosed(); OnSuggestionMenuClosed();
return; return;
} }
DCHECK(marker_text_node);
const EphemeralRange& range_to_replace = const EphemeralRange& range_to_replace =
EphemeralRange(Position(marker_text_node, marker->StartOffset()), EphemeralRange(Position(marker_text_node, marker->StartOffset()),
Position(marker_text_node, marker->EndOffset())); Position(marker_text_node, marker->EndOffset()));
...@@ -328,7 +328,7 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag, ...@@ -328,7 +328,7 @@ void TextSuggestionController::ApplyTextSuggestion(int32_t marker_tag,
if (marker->IsMisspelling()) { if (marker->IsMisspelling()) {
GetFrame().GetDocument()->Markers().RemoveSuggestionMarkerByTag( GetFrame().GetDocument()->Markers().RemoveSuggestionMarkerByTag(
marker_text_node, marker->Tag()); *marker_text_node, marker->Tag());
} else { } else {
marker->SetSuggestion(suggestion_index, new_suggestion); 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