 Chromium Code Reviews
 Chromium Code Reviews Issue 330383004:
  Oilpan: Introduce TempRangeScope to avoid needless Range attaches on Document.  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk
    
  
    Issue 330383004:
  Oilpan: Introduce TempRangeScope to avoid needless Range attaches on Document.  (Closed) 
  Base URL: svn://svn.chromium.org/blink/trunk| OLD | NEW | 
|---|---|
| 1 /* | 1 /* | 
| 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. | 
| 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 
| 4 * | 4 * | 
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without | 
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions | 
| 7 * are met: | 7 * are met: | 
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright | 
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. | 
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright | 
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 324 m_frame.document()->markers().removeMarkers(selectedRange.get(), Documen tMarker::MisspellingMarkers()); | 324 m_frame.document()->markers().removeMarkers(selectedRange.get(), Documen tMarker::MisspellingMarkers()); | 
| 325 } | 325 } | 
| 326 | 326 | 
| 327 void SpellChecker::markMisspellingsAndBadGrammar(const VisibleSelection &movingS election) | 327 void SpellChecker::markMisspellingsAndBadGrammar(const VisibleSelection &movingS election) | 
| 328 { | 328 { | 
| 329 markMisspellingsAndBadGrammar(movingSelection, isContinuousSpellCheckingEnab led() && isGrammarCheckingEnabled(), movingSelection); | 329 markMisspellingsAndBadGrammar(movingSelection, isContinuousSpellCheckingEnab led() && isGrammarCheckingEnabled(), movingSelection); | 
| 330 } | 330 } | 
| 331 | 331 | 
| 332 void SpellChecker::markMisspellingsAfterTypingToWord(const VisiblePosition &word Start, const VisibleSelection& selectionAfterTyping) | 332 void SpellChecker::markMisspellingsAfterTypingToWord(const VisiblePosition &word Start, const VisibleSelection& selectionAfterTyping) | 
| 333 { | 333 { | 
| 334 TemporaryRangeScope scope; | |
| 334 if (unifiedTextCheckerEnabled()) { | 335 if (unifiedTextCheckerEnabled()) { | 
| 335 TextCheckingTypeMask textCheckingOptions = 0; | 336 TextCheckingTypeMask textCheckingOptions = 0; | 
| 336 | 337 | 
| 337 if (isContinuousSpellCheckingEnabled()) | 338 if (isContinuousSpellCheckingEnabled()) | 
| 338 textCheckingOptions |= TextCheckingTypeSpelling; | 339 textCheckingOptions |= TextCheckingTypeSpelling; | 
| 339 | 340 | 
| 340 if (!(textCheckingOptions & TextCheckingTypeSpelling)) | 341 if (!(textCheckingOptions & TextCheckingTypeSpelling)) | 
| 341 return; | 342 return; | 
| 342 | 343 | 
| 343 if (isGrammarCheckingEnabled()) | 344 if (isGrammarCheckingEnabled()) | 
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 734 // If this is a change in selection resulting from a delete operation, | 735 // If this is a change in selection resulting from a delete operation, | 
| 735 // oldSelection may no longer be in the document. | 736 // oldSelection may no longer be in the document. | 
| 736 if (shouldCheckSpellingAndGrammar | 737 if (shouldCheckSpellingAndGrammar | 
| 737 && closeTyping | 738 && closeTyping | 
| 738 && oldSelection.isContentEditable() | 739 && oldSelection.isContentEditable() | 
| 739 && oldSelection.start().inDocument() | 740 && oldSelection.start().inDocument() | 
| 740 && !isSelectionInTextField(oldSelection)) { | 741 && !isSelectionInTextField(oldSelection)) { | 
| 741 spellCheckOldSelection(oldSelection, newAdjacentWords, newSelectedSe ntence); | 742 spellCheckOldSelection(oldSelection, newAdjacentWords, newSelectedSe ntence); | 
| 742 } | 743 } | 
| 743 | 744 | 
| 745 | |
| 744 if (textChecker().shouldEraseMarkersAfterChangeSelection(TextCheckingTyp eSpelling)) { | 746 if (textChecker().shouldEraseMarkersAfterChangeSelection(TextCheckingTyp eSpelling)) { | 
| 747 TemporaryRangeScope scope; | |
| 745 if (RefPtrWillBeRawPtr<Range> wordRange = newAdjacentWords.toNormali zedRange()) | 748 if (RefPtrWillBeRawPtr<Range> wordRange = newAdjacentWords.toNormali zedRange()) | 
| 746 m_frame.document()->markers().removeMarkers(wordRange.get(), Doc umentMarker::Spelling); | 749 m_frame.document()->markers().removeMarkers(wordRange.get(), Doc umentMarker::Spelling); | 
| 
yosin_UTC9
2014/06/25 01:22:20
It seems if we hare removeMakrers() which takes tw
 
Mads Ager (chromium)
2014/06/25 11:41:42
It would seem so. However, removeMarkers uses a Te
 | |
| 747 } | 750 } | 
| 748 if (textChecker().shouldEraseMarkersAfterChangeSelection(TextCheckingTyp eGrammar)) { | 751 if (textChecker().shouldEraseMarkersAfterChangeSelection(TextCheckingTyp eGrammar)) { | 
| 752 TemporaryRangeScope scope; | |
| 
yosin_UTC9
2014/06/25 01:22:20
ditto as L747
 | |
| 749 if (RefPtrWillBeRawPtr<Range> sentenceRange = newSelectedSentence.to NormalizedRange()) | 753 if (RefPtrWillBeRawPtr<Range> sentenceRange = newSelectedSentence.to NormalizedRange()) | 
| 750 m_frame.document()->markers().removeMarkers(sentenceRange.get(), DocumentMarker::Grammar); | 754 m_frame.document()->markers().removeMarkers(sentenceRange.get(), DocumentMarker::Grammar); | 
| 751 } | 755 } | 
| 752 } | 756 } | 
| 753 | 757 | 
| 754 // When continuous spell checking is off, existing markers disappear after t he selection changes. | 758 // When continuous spell checking is off, existing markers disappear after t he selection changes. | 
| 755 if (!isContinuousSpellCheckingEnabled) | 759 if (!isContinuousSpellCheckingEnabled) | 
| 756 m_frame.document()->markers().removeMarkers(DocumentMarker::Spelling); | 760 m_frame.document()->markers().removeMarkers(DocumentMarker::Spelling); | 
| 757 if (!isContinuousGrammarCheckingEnabled) | 761 if (!isContinuousGrammarCheckingEnabled) | 
| 758 m_frame.document()->markers().removeMarkers(DocumentMarker::Grammar); | 762 m_frame.document()->markers().removeMarkers(DocumentMarker::Grammar); | 
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 847 } | 851 } | 
| 848 | 852 | 
| 849 void SpellChecker::requestTextChecking(const Element& element) | 853 void SpellChecker::requestTextChecking(const Element& element) | 
| 850 { | 854 { | 
| 851 RefPtrWillBeRawPtr<Range> rangeToCheck = rangeOfContents(const_cast<Element* >(&element)); | 855 RefPtrWillBeRawPtr<Range> rangeToCheck = rangeOfContents(const_cast<Element* >(&element)); | 
| 852 m_spellCheckRequester->requestCheckingFor(SpellCheckRequest::create(TextChec kingTypeSpelling | TextCheckingTypeGrammar, TextCheckingProcessBatch, rangeToChe ck, rangeToCheck)); | 856 m_spellCheckRequester->requestCheckingFor(SpellCheckRequest::create(TextChec kingTypeSpelling | TextCheckingTypeGrammar, TextCheckingProcessBatch, rangeToChe ck, rangeToCheck)); | 
| 853 } | 857 } | 
| 854 | 858 | 
| 855 | 859 | 
| 856 } // namespace WebCore | 860 } // namespace WebCore | 
| OLD | NEW |