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

Unified Diff: Source/core/editing/SpellCheckRequester.cpp

Issue 517043003: Move Frame to the Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Back out non-Oilpan experiment + tidy up by adding frame() ref accessors Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698