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

Side by Side Diff: third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp

Issue 2001083002: Explicit management of FrameSelection availability (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 2016-06-06T17:09:04 Created 4 years, 6 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 unified diff | Download patch
OLDNEW
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 545 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 // so comparePositions can be directly called. 556 // so comparePositions can be directly called.
557 if (comparePositions(chunkRange.endPosition(), checkRange.endPositio n()) < 0) 557 if (comparePositions(chunkRange.endPosition(), checkRange.endPositio n()) < 0)
558 checkRangeIterator.advance(TextIterator::rangeLength(chunkRange. endPosition(), checkRange.endPosition())); 558 checkRangeIterator.advance(TextIterator::rangeLength(chunkRange. endPosition(), checkRange.endPosition()));
559 } 559 }
560 } 560 }
561 } 561 }
562 562
563 void SpellChecker::markAndReplaceFor(SpellCheckRequest* request, const Vector<Te xtCheckingResult>& results) 563 void SpellChecker::markAndReplaceFor(SpellCheckRequest* request, const Vector<Te xtCheckingResult>& results)
564 { 564 {
565 TRACE_EVENT0("blink", "SpellChecker::markAndReplaceFor"); 565 TRACE_EVENT0("blink", "SpellChecker::markAndReplaceFor");
566 DCHECK(request); 566 if (!frame().selection().isAvailable()) {
tkent 2016/06/07 23:41:59 Why do you remove the DCHECK?
yosin_UTC9 2016/06/08 04:06:10 Oops, it should be here. Done.
567 // "editing/spelling/spellcheck-async-remove-frame.html" reaches here.
568 return;
569 }
567 if (!request->isValid()) 570 if (!request->isValid())
568 return; 571 return;
572 if (request->rootEditableElement()->document() != frame().selection().docume nt()) {
573 // we ignore |request| made for another document.
574 // "editing/spelling/spellcheck-sequencenum.html" and others reach here.
575 return;
576 }
569 577
570 TextCheckingTypeMask textCheckingOptions = request->data().mask(); 578 TextCheckingTypeMask textCheckingOptions = request->data().mask();
571 TextCheckingParagraph paragraph(request->checkingRange(), request->paragraph Range()); 579 TextCheckingParagraph paragraph(request->checkingRange(), request->paragraph Range());
572 580
573 bool shouldMarkSpelling = textCheckingOptions & TextCheckingTypeSpelling; 581 bool shouldMarkSpelling = textCheckingOptions & TextCheckingTypeSpelling;
574 bool shouldMarkGrammar = textCheckingOptions & TextCheckingTypeGrammar; 582 bool shouldMarkGrammar = textCheckingOptions & TextCheckingTypeGrammar;
575 583
576 // Expand the range to encompass entire paragraphs, since text checking need s that much context. 584 // Expand the range to encompass entire paragraphs, since text checking need s that much context.
577 int selectionOffset = 0; 585 int selectionOffset = 0;
578 int ambiguousBoundaryOffset = -1; 586 int ambiguousBoundaryOffset = -1;
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
936 visitor->trace(m_frame); 944 visitor->trace(m_frame);
937 visitor->trace(m_spellCheckRequester); 945 visitor->trace(m_spellCheckRequester);
938 } 946 }
939 947
940 void SpellChecker::prepareForLeakDetection() 948 void SpellChecker::prepareForLeakDetection()
941 { 949 {
942 m_spellCheckRequester->prepareForLeakDetection(); 950 m_spellCheckRequester->prepareForLeakDetection();
943 } 951 }
944 952
945 } // namespace blink 953 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698