|
Lines 45-58
a/Source/WebCore/editing/SpellChecker.cpp_sec1
|
| 45 |
|
45 |
|
| 46 |
namespace WebCore { |
46 |
namespace WebCore { |
| 47 |
|
47 |
|
| 48 |
static const int unrequestedSequence = -1; |
|
|
| 49 |
|
| 50 |
SpellCheckRequest::SpellCheckRequest(PassRefPtr<Range> checkingRange, PassRefPtr<Range> paragraphRange, const String& text, TextCheckingTypeMask mask, TextCheckingProcessType processType) |
48 |
SpellCheckRequest::SpellCheckRequest(PassRefPtr<Range> checkingRange, PassRefPtr<Range> paragraphRange, const String& text, TextCheckingTypeMask mask, TextCheckingProcessType processType) |
| 51 |
: TextCheckingRequest(unrequestedSequence, text, mask, processType) |
49 |
: m_checker(0) |
| 52 |
, m_checker(0) |
|
|
| 53 |
, m_checkingRange(checkingRange) |
50 |
, m_checkingRange(checkingRange) |
| 54 |
, m_paragraphRange(paragraphRange) |
51 |
, m_paragraphRange(paragraphRange) |
| 55 |
, m_rootEditableElement(m_checkingRange->startContainer()->rootEditableElement()) |
52 |
, m_rootEditableElement(m_checkingRange->startContainer()->rootEditableElement()) |
|
|
53 |
, m_requestData(unrequestedTextCheckingSequence, text, mask, processType) |
| 56 |
{ |
54 |
{ |
| 57 |
} |
55 |
} |
| 58 |
|
56 |
|
|
Lines 73-83
PassRefPtr<SpellCheckRequest> SpellCheckRequest::create(TextCheckingTypeMask tex
a/Source/WebCore/editing/SpellChecker.cpp_sec2
|
| 73 |
return adoptRef(new SpellCheckRequest(checkingRange, paragraphRange, text, textCheckingOptions, processType)); |
71 |
return adoptRef(new SpellCheckRequest(checkingRange, paragraphRange, text, textCheckingOptions, processType)); |
| 74 |
} |
72 |
} |
| 75 |
|
73 |
|
|
|
74 |
const TextCheckingRequestData& SpellCheckRequest::data() const |
| 75 |
{ |
| 76 |
return m_requestData; |
| 77 |
} |
| 78 |
|
| 76 |
void SpellCheckRequest::didSucceed(const Vector<TextCheckingResult>& results) |
79 |
void SpellCheckRequest::didSucceed(const Vector<TextCheckingResult>& results) |
| 77 |
{ |
80 |
{ |
| 78 |
if (!m_checker) |
81 |
if (!m_checker) |
| 79 |
return; |
82 |
return; |
| 80 |
m_checker->didCheckSucceed(m_sequence, results); |
83 |
m_checker->didCheckSucceed(m_requestData.sequence(), results); |
| 81 |
m_checker = 0; |
84 |
m_checker = 0; |
| 82 |
} |
85 |
} |
| 83 |
|
86 |
|
|
Lines 85-100
void SpellCheckRequest::didCancel()
a/Source/WebCore/editing/SpellChecker.cpp_sec3
|
| 85 |
{ |
88 |
{ |
| 86 |
if (!m_checker) |
89 |
if (!m_checker) |
| 87 |
return; |
90 |
return; |
| 88 |
m_checker->didCheckCancel(m_sequence); |
91 |
m_checker->didCheckCancel(m_requestData.sequence()); |
| 89 |
m_checker = 0; |
92 |
m_checker = 0; |
| 90 |
} |
93 |
} |
| 91 |
|
94 |
|
| 92 |
void SpellCheckRequest::setCheckerAndSequence(SpellChecker* requester, int sequence) |
95 |
void SpellCheckRequest::setCheckerAndSequence(SpellChecker* requester, int sequence) |
| 93 |
{ |
96 |
{ |
| 94 |
ASSERT(!m_checker); |
97 |
ASSERT(!m_checker); |
| 95 |
ASSERT(m_sequence == unrequestedSequence); |
98 |
ASSERT(m_requestData.sequence() == unrequestedTextCheckingSequence); |
| 96 |
m_checker = requester; |
99 |
m_checker = requester; |
| 97 |
m_sequence = sequence; |
100 |
m_requestData.m_sequence = sequence; |
| 98 |
} |
101 |
} |
| 99 |
|
102 |
|
| 100 |
void SpellCheckRequest::requesterDestroyed() |
103 |
void SpellCheckRequest::requesterDestroyed() |
|
Lines 160-168
void SpellChecker::requestCheckingFor(PassRefPtr<SpellCheckRequest> request)
a/Source/WebCore/editing/SpellChecker.cpp_sec4
|
| 160 |
if (!request || !canCheckAsynchronously(request->paragraphRange().get())) |
163 |
if (!request || !canCheckAsynchronously(request->paragraphRange().get())) |
| 161 |
return; |
164 |
return; |
| 162 |
|
165 |
|
| 163 |
ASSERT(request->sequence() == unrequestedSequence); |
166 |
ASSERT(request->data().sequence() == unrequestedTextCheckingSequence); |
| 164 |
int sequence = ++m_lastRequestSequence; |
167 |
int sequence = ++m_lastRequestSequence; |
| 165 |
if (sequence == unrequestedSequence) |
168 |
if (sequence == unrequestedTextCheckingSequence) |
| 166 |
sequence = ++m_lastRequestSequence; |
169 |
sequence = ++m_lastRequestSequence; |
| 167 |
|
170 |
|
| 168 |
request->setCheckerAndSequence(this, sequence); |
171 |
request->setCheckerAndSequence(this, sequence); |
|
Lines 202-209
void SpellChecker::enqueueRequest(PassRefPtr<SpellCheckRequest> request)
a/Source/WebCore/editing/SpellChecker.cpp_sec5
|
| 202 |
void SpellChecker::didCheck(int sequence, const Vector<TextCheckingResult>& results) |
205 |
void SpellChecker::didCheck(int sequence, const Vector<TextCheckingResult>& results) |
| 203 |
{ |
206 |
{ |
| 204 |
ASSERT(m_processingRequest); |
207 |
ASSERT(m_processingRequest); |
| 205 |
ASSERT(m_processingRequest->sequence() == sequence); |
208 |
ASSERT(m_processingRequest->data().sequence() == sequence); |
| 206 |
if (m_processingRequest->sequence() != sequence) { |
209 |
if (m_processingRequest->data().sequence() != sequence) { |
| 207 |
m_requestQueue.clear(); |
210 |
m_requestQueue.clear(); |
| 208 |
return; |
211 |
return; |
| 209 |
} |
212 |
} |
|
Lines 220-230
void SpellChecker::didCheck(int sequence, const Vector<TextCheckingResult>& resu
a/Source/WebCore/editing/SpellChecker.cpp_sec6
|
| 220 |
|
223 |
|
| 221 |
void SpellChecker::didCheckSucceed(int sequence, const Vector<TextCheckingResult>& results) |
224 |
void SpellChecker::didCheckSucceed(int sequence, const Vector<TextCheckingResult>& results) |
| 222 |
{ |
225 |
{ |
| 223 |
if (m_processingRequest->sequence() == sequence) { |
226 |
TextCheckingRequestData requestData = m_processingRequest->data(); |
|
|
227 |
if (requestData.sequence() == sequence) { |
| 224 |
unsigned markers = 0; |
228 |
unsigned markers = 0; |
| 225 |
if (m_processingRequest->mask() & TextCheckingTypeSpelling) |
229 |
if (requestData.mask() & TextCheckingTypeSpelling) |
| 226 |
markers |= DocumentMarker::Spelling; |
230 |
markers |= DocumentMarker::Spelling; |
| 227 |
if (m_processingRequest->mask() & TextCheckingTypeGrammar) |
231 |
if (requestData.mask() & TextCheckingTypeGrammar) |
| 228 |
markers |= DocumentMarker::Grammar; |
232 |
markers |= DocumentMarker::Grammar; |
| 229 |
if (markers) |
233 |
if (markers) |
| 230 |
m_frame->document()->markers()->removeMarkers(m_processingRequest->checkingRange().get(), markers); |
234 |
m_frame->document()->markers()->removeMarkers(m_processingRequest->checkingRange().get(), markers); |