static String selectMisspellingAsync(Frame* selectedFrame, DocumentMarker& marker) { VisibleSelection selection = selectedFrame->selection()->selection(); if (!selection.isCaretOrRange()) return String(); // Caret and range selections always return valid normalized ranges. RefPtr<Range> selectionRange = selection.toNormalizedRange(); Vector<DocumentMarker*> markers = selectedFrame->document()->markers()->markersInRange(selectionRange.get(), DocumentMarker::Spelling | DocumentMarker::Grammar); if (markers.size() != 1) return String(); marker = *markers[0]; // Cloning a range fails only for invalid ranges. RefPtr<Range> markerRange = selectionRange->cloneRange(ASSERT_NO_EXCEPTION); markerRange->setStart(markerRange->startContainer(), marker.startOffset()); markerRange->setEnd(markerRange->endContainer(), marker.endOffset()); if (selection.isCaret()) { selection = VisibleSelection(markerRange.get()); selectedFrame->selection()->setSelection(selection, WordGranularity); selectionRange = selection.toNormalizedRange(); } if (markerRange->text().stripWhiteSpace(&IsWhiteSpaceOrPunctuation) != selectionRange->text().stripWhiteSpace(&IsWhiteSpaceOrPunctuation)) return String(); return markerRange->text(); }
static String selectMisspellingAsync(LocalFrame* selectedFrame, DocumentMarker& marker) { VisibleSelection selection = selectedFrame->selection().selection(); if (!selection.isCaretOrRange()) return String(); // Caret and range selections always return valid normalized ranges. RefPtrWillBeRawPtr<Range> selectionRange = selection.toNormalizedRange(); WillBeHeapVector<DocumentMarker*> markers = selectedFrame->document()->markers().markersInRange(selectionRange.get(), DocumentMarker::MisspellingMarkers()); if (markers.size() != 1) return String(); marker = *markers[0]; // Cloning a range fails only for invalid ranges. RefPtrWillBeRawPtr<Range> markerRange = selectionRange->cloneRange(); markerRange->setStart(markerRange->startContainer(), marker.startOffset()); markerRange->setEnd(markerRange->endContainer(), marker.endOffset()); if (markerRange->text().stripWhiteSpace(&IsWhiteSpaceOrPunctuation) != selectionRange->text().stripWhiteSpace(&IsWhiteSpaceOrPunctuation)) return String(); return markerRange->text(); }