| Index: Source/core/editing/SpellCheckRequester.cpp
|
| diff --git a/Source/core/editing/SpellCheckRequester.cpp b/Source/core/editing/SpellCheckRequester.cpp
|
| index 40aec3b9cbc6d30844315b18042d5f24bbf65406..925f194351803cb3f3488e290fe43e8743cc0380 100644
|
| --- a/Source/core/editing/SpellCheckRequester.cpp
|
| +++ b/Source/core/editing/SpellCheckRequester.cpp
|
| @@ -45,7 +45,7 @@ SpellCheckRequest::SpellCheckRequest(
|
| const Vector<uint32_t>& documentMarkersInRange,
|
| const Vector<unsigned>& documentMarkerOffsets,
|
| int requestNumber)
|
| - : m_requester(0)
|
| + : m_requester(nullptr)
|
| , m_checkingRange(checkingRange)
|
| , m_paragraphRange(paragraphRange)
|
| , m_rootEditableElement(m_checkingRange->startContainer()->rootEditableElement())
|
| @@ -58,15 +58,24 @@ SpellCheckRequest::~SpellCheckRequest()
|
| {
|
| }
|
|
|
| +void SpellCheckRequest::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_requester);
|
| + visitor->trace(m_checkingRange);
|
| + visitor->trace(m_paragraphRange);
|
| + visitor->trace(m_rootEditableElement);
|
| + TextCheckingRequest::trace(visitor);
|
| +}
|
| +
|
| // static
|
| -PassRefPtr<SpellCheckRequest> SpellCheckRequest::create(TextCheckingTypeMask textCheckingOptions, TextCheckingProcessType processType, PassRefPtrWillBeRawPtr<Range> checkingRange, PassRefPtrWillBeRawPtr<Range> paragraphRange, int requestNumber)
|
| +PassRefPtrWillBeRawPtr<SpellCheckRequest> SpellCheckRequest::create(TextCheckingTypeMask textCheckingOptions, TextCheckingProcessType processType, PassRefPtrWillBeRawPtr<Range> checkingRange, PassRefPtrWillBeRawPtr<Range> paragraphRange, int requestNumber)
|
| {
|
| ASSERT(checkingRange);
|
| ASSERT(paragraphRange);
|
|
|
| String text = checkingRange->text();
|
| if (!text.length())
|
| - return PassRefPtr<SpellCheckRequest>();
|
| + return nullptr;
|
|
|
| const DocumentMarkerVector& markers = checkingRange->ownerDocument().markers().markersInRange(checkingRange.get(), DocumentMarker::SpellCheckClientMarkers());
|
| Vector<uint32_t> hashes(markers.size());
|
| @@ -76,7 +85,7 @@ PassRefPtr<SpellCheckRequest> SpellCheckRequest::create(TextCheckingTypeMask tex
|
| offsets[i] = markers[i]->startOffset();
|
| }
|
|
|
| - return adoptRef(new SpellCheckRequest(checkingRange, paragraphRange, text, textCheckingOptions, processType, hashes, offsets, requestNumber));
|
| + return adoptRefWillBeNoop(new SpellCheckRequest(checkingRange, paragraphRange, text, textCheckingOptions, processType, hashes, offsets, requestNumber));
|
| }
|
|
|
| const TextCheckingRequestData& SpellCheckRequest::data() const
|
| @@ -89,7 +98,7 @@ void SpellCheckRequest::didSucceed(const Vector<TextCheckingResult>& results)
|
| if (!m_requester)
|
| return;
|
| SpellCheckRequester* requester = m_requester;
|
| - m_requester = 0;
|
| + m_requester = nullptr;
|
| requester->didCheckSucceed(m_requestData.sequence(), results);
|
| }
|
|
|
| @@ -98,7 +107,7 @@ void SpellCheckRequest::didCancel()
|
| if (!m_requester)
|
| return;
|
| SpellCheckRequester* requester = m_requester;
|
| - m_requester = 0;
|
| + m_requester = nullptr;
|
| requester->didCheckCancel(m_requestData.sequence());
|
| }
|
|
|
| @@ -110,13 +119,15 @@ void SpellCheckRequest::setCheckerAndSequence(SpellCheckRequester* requester, in
|
| m_requestData.m_sequence = sequence;
|
| }
|
|
|
| +#if !ENABLE(OILPAN)
|
| void SpellCheckRequest::requesterDestroyed()
|
| {
|
| - m_requester = 0;
|
| + m_requester = nullptr;
|
| }
|
| +#endif
|
|
|
| SpellCheckRequester::SpellCheckRequester(LocalFrame& frame)
|
| - : m_frame(frame)
|
| + : m_frame(&frame)
|
| , m_lastRequestSequence(0)
|
| , m_lastProcessedSequence(0)
|
| , m_timerToProcessQueuedRequest(this, &SpellCheckRequester::timerFiredToProcessQueuedRequest)
|
| @@ -125,15 +136,17 @@ SpellCheckRequester::SpellCheckRequester(LocalFrame& frame)
|
|
|
| SpellCheckRequester::~SpellCheckRequester()
|
| {
|
| +#if !ENABLE(OILPAN)
|
| if (m_processingRequest)
|
| m_processingRequest->requesterDestroyed();
|
| for (RequestQueue::iterator i = m_requestQueue.begin(); i != m_requestQueue.end(); ++i)
|
| (*i)->requesterDestroyed();
|
| +#endif
|
| }
|
|
|
| TextCheckerClient& SpellCheckRequester::client() const
|
| {
|
| - return m_frame.spellChecker().textChecker();
|
| + return frame().spellChecker().textChecker();
|
| }
|
|
|
| void SpellCheckRequester::timerFiredToProcessQueuedRequest(Timer<SpellCheckRequester>*)
|
| @@ -147,7 +160,7 @@ void SpellCheckRequester::timerFiredToProcessQueuedRequest(Timer<SpellCheckReque
|
|
|
| bool SpellCheckRequester::isAsynchronousEnabled() const
|
| {
|
| - return m_frame.settings() && m_frame.settings()->asynchronousSpellCheckingEnabled();
|
| + return frame().settings() && frame().settings()->asynchronousSpellCheckingEnabled();
|
| }
|
|
|
| bool SpellCheckRequester::canCheckAsynchronously(Range* range) const
|
| @@ -165,7 +178,7 @@ bool SpellCheckRequester::isCheckable(Range* range) const
|
| return true;
|
| }
|
|
|
| -void SpellCheckRequester::requestCheckingFor(PassRefPtr<SpellCheckRequest> request)
|
| +void SpellCheckRequester::requestCheckingFor(PassRefPtrWillBeRawPtr<SpellCheckRequest> request)
|
| {
|
| if (!request || !canCheckAsynchronously(request->paragraphRange().get()))
|
| return;
|
| @@ -191,19 +204,19 @@ void SpellCheckRequester::cancelCheck()
|
| m_processingRequest->didCancel();
|
| }
|
|
|
| -void SpellCheckRequester::invokeRequest(PassRefPtr<SpellCheckRequest> request)
|
| +void SpellCheckRequester::invokeRequest(PassRefPtrWillBeRawPtr<SpellCheckRequest> request)
|
| {
|
| ASSERT(!m_processingRequest);
|
| m_processingRequest = request;
|
| client().requestCheckingOfString(m_processingRequest);
|
| }
|
|
|
| -void SpellCheckRequester::enqueueRequest(PassRefPtr<SpellCheckRequest> request)
|
| +void SpellCheckRequester::enqueueRequest(PassRefPtrWillBeRawPtr<SpellCheckRequest> request)
|
| {
|
| ASSERT(request);
|
| bool continuation = false;
|
| if (!m_requestQueue.isEmpty()) {
|
| - RefPtr<SpellCheckRequest> lastRequest = m_requestQueue.last();
|
| + RefPtrWillBeRawPtr<SpellCheckRequest> lastRequest = m_requestQueue.last();
|
| // It's a continuation if the number of the last request got incremented in the new one and
|
| // both apply to the same editable.
|
| continuation = request->rootEditableElement() == lastRequest->rootEditableElement()
|
| @@ -233,7 +246,7 @@ void SpellCheckRequester::didCheck(int sequence, const Vector<TextCheckingResult
|
| return;
|
| }
|
|
|
| - m_frame.spellChecker().markAndReplaceFor(m_processingRequest, results);
|
| + frame().spellChecker().markAndReplaceFor(m_processingRequest, results);
|
|
|
| if (m_lastProcessedSequence < sequence)
|
| m_lastProcessedSequence = sequence;
|
| @@ -252,7 +265,7 @@ void SpellCheckRequester::didCheckSucceed(int sequence, const Vector<TextCheckin
|
| markers.remove(DocumentMarker::Spelling);
|
| if (!requestData.maskContains(TextCheckingTypeGrammar))
|
| markers.remove(DocumentMarker::Grammar);
|
| - m_frame.document()->markers().removeMarkers(m_processingRequest->checkingRange().get(), markers);
|
| + frame().document()->markers().removeMarkers(m_processingRequest->checkingRange().get(), markers);
|
| }
|
| didCheck(sequence, results);
|
| }
|
| @@ -263,4 +276,11 @@ void SpellCheckRequester::didCheckCancel(int sequence)
|
| didCheck(sequence, results);
|
| }
|
|
|
| +void SpellCheckRequester::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_frame);
|
| + visitor->trace(m_processingRequest);
|
| + visitor->trace(m_requestQueue);
|
| +}
|
| +
|
| } // namespace blink
|
|
|