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

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

Issue 2252973002: Remove m_paragraphRange from SpellCheckRequest (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@SpellCheckerDebugInfo
Patch Set: Rebased Created 4 years, 4 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) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 20 matching lines...) Expand all
31 #include "core/editing/markers/DocumentMarkerController.h" 31 #include "core/editing/markers/DocumentMarkerController.h"
32 #include "core/editing/spellcheck/SpellChecker.h" 32 #include "core/editing/spellcheck/SpellChecker.h"
33 #include "core/frame/LocalFrame.h" 33 #include "core/frame/LocalFrame.h"
34 #include "core/frame/Settings.h" 34 #include "core/frame/Settings.h"
35 #include "platform/text/TextCheckerClient.h" 35 #include "platform/text/TextCheckerClient.h"
36 36
37 namespace blink { 37 namespace blink {
38 38
39 SpellCheckRequest::SpellCheckRequest( 39 SpellCheckRequest::SpellCheckRequest(
40 Range* checkingRange, 40 Range* checkingRange,
41 Range* paragraphRange,
42 const String& text, 41 const String& text,
43 TextCheckingProcessType processType, 42 TextCheckingProcessType processType,
44 const Vector<uint32_t>& documentMarkersInRange, 43 const Vector<uint32_t>& documentMarkersInRange,
45 const Vector<unsigned>& documentMarkerOffsets, 44 const Vector<unsigned>& documentMarkerOffsets,
46 int requestNumber) 45 int requestNumber)
47 : m_requester(nullptr) 46 : m_requester(nullptr)
48 , m_checkingRange(checkingRange) 47 , m_checkingRange(checkingRange)
49 , m_paragraphRange(paragraphRange)
50 , m_rootEditableElement(blink::rootEditableElement(*m_checkingRange->startCo ntainer())) 48 , m_rootEditableElement(blink::rootEditableElement(*m_checkingRange->startCo ntainer()))
51 , m_requestData(unrequestedTextCheckingSequence, text, processType, document MarkersInRange, documentMarkerOffsets) 49 , m_requestData(unrequestedTextCheckingSequence, text, processType, document MarkersInRange, documentMarkerOffsets)
52 , m_requestNumber(requestNumber) 50 , m_requestNumber(requestNumber)
53 { 51 {
54 DCHECK(m_checkingRange); 52 DCHECK(m_checkingRange);
55 DCHECK(m_checkingRange->isConnected()); 53 DCHECK(m_checkingRange->isConnected());
56 DCHECK(m_paragraphRange);
57 DCHECK(m_paragraphRange->isConnected());
58 DCHECK(m_rootEditableElement); 54 DCHECK(m_rootEditableElement);
59 } 55 }
60 56
61 SpellCheckRequest::~SpellCheckRequest() 57 SpellCheckRequest::~SpellCheckRequest()
62 { 58 {
63 } 59 }
64 60
65 DEFINE_TRACE(SpellCheckRequest) 61 DEFINE_TRACE(SpellCheckRequest)
66 { 62 {
67 visitor->trace(m_requester); 63 visitor->trace(m_requester);
68 visitor->trace(m_checkingRange); 64 visitor->trace(m_checkingRange);
69 visitor->trace(m_paragraphRange);
70 visitor->trace(m_rootEditableElement); 65 visitor->trace(m_rootEditableElement);
71 TextCheckingRequest::trace(visitor); 66 TextCheckingRequest::trace(visitor);
72 } 67 }
73 68
74 void SpellCheckRequest::dispose() 69 void SpellCheckRequest::dispose()
75 { 70 {
76 if (m_checkingRange) 71 if (m_checkingRange)
77 m_checkingRange->dispose(); 72 m_checkingRange->dispose();
78 if (m_paragraphRange && m_paragraphRange != m_checkingRange)
79 m_paragraphRange->dispose();
80 } 73 }
81 74
82 // static 75 // static
83 SpellCheckRequest* SpellCheckRequest::create(TextCheckingProcessType processType , const EphemeralRange& checkingRange, const EphemeralRange& paragraphRange, int requestNumber) 76 SpellCheckRequest* SpellCheckRequest::create(TextCheckingProcessType processType , const EphemeralRange& checkingRange, int requestNumber)
84 { 77 {
85 if (checkingRange.isNull()) 78 if (checkingRange.isNull())
86 return nullptr; 79 return nullptr;
87 if (!blink::rootEditableElement(*checkingRange.startPosition().computeContai nerNode())) 80 if (!blink::rootEditableElement(*checkingRange.startPosition().computeContai nerNode()))
88 return nullptr; 81 return nullptr;
89 82
90 String text = plainText(checkingRange, TextIteratorEmitsObjectReplacementCha racter); 83 String text = plainText(checkingRange, TextIteratorEmitsObjectReplacementCha racter);
91 if (text.isEmpty()) 84 if (text.isEmpty())
92 return nullptr; 85 return nullptr;
93 86
94 Range* checkingRangeObject = createRange(checkingRange); 87 Range* checkingRangeObject = createRange(checkingRange);
95 Range* paragraphRangeObject = nullptr;
96 // Share identical Range objects.
97 if (checkingRange == paragraphRange)
98 paragraphRangeObject = checkingRangeObject;
99 else
100 paragraphRangeObject = createRange(paragraphRange);
101 88
102 const DocumentMarkerVector& markers = checkingRangeObject->ownerDocument().m arkers().markersInRange(checkingRange, DocumentMarker::SpellCheckClientMarkers() ); 89 const DocumentMarkerVector& markers = checkingRangeObject->ownerDocument().m arkers().markersInRange(checkingRange, DocumentMarker::SpellCheckClientMarkers() );
103 Vector<uint32_t> hashes(markers.size()); 90 Vector<uint32_t> hashes(markers.size());
104 Vector<unsigned> offsets(markers.size()); 91 Vector<unsigned> offsets(markers.size());
105 for (size_t i = 0; i < markers.size(); ++i) { 92 for (size_t i = 0; i < markers.size(); ++i) {
106 hashes[i] = markers[i]->hash(); 93 hashes[i] = markers[i]->hash();
107 offsets[i] = markers[i]->startOffset(); 94 offsets[i] = markers[i]->startOffset();
108 } 95 }
109 96
110 return new SpellCheckRequest(checkingRangeObject, paragraphRangeObject, text , processType, hashes, offsets, requestNumber); 97 return new SpellCheckRequest(checkingRangeObject, text, processType, hashes, offsets, requestNumber);
111 } 98 }
112 99
113 const TextCheckingRequestData& SpellCheckRequest::data() const 100 const TextCheckingRequestData& SpellCheckRequest::data() const
114 { 101 {
115 return m_requestData; 102 return m_requestData;
116 } 103 }
117 104
118 bool SpellCheckRequest::isValid() const 105 bool SpellCheckRequest::isValid() const
119 { 106 {
120 return m_checkingRange->isConnected() && m_paragraphRange->isConnected() && m_rootEditableElement->isConnected(); 107 return m_checkingRange->isConnected() && m_rootEditableElement->isConnected( );
121 } 108 }
122 109
123 void SpellCheckRequest::didSucceed(const Vector<TextCheckingResult>& results) 110 void SpellCheckRequest::didSucceed(const Vector<TextCheckingResult>& results)
124 { 111 {
125 if (!m_requester) 112 if (!m_requester)
126 return; 113 return;
127 SpellCheckRequester* requester = m_requester; 114 SpellCheckRequester* requester = m_requester;
128 m_requester = nullptr; 115 m_requester = nullptr;
129 requester->didCheckSucceed(m_requestData.sequence(), results); 116 requester->didCheckSucceed(m_requestData.sequence(), results);
130 } 117 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 if (!range || !range->firstNode() || !range->firstNode()->layoutObject()) 164 if (!range || !range->firstNode() || !range->firstNode()->layoutObject())
178 return false; 165 return false;
179 const Node* node = range->startContainer(); 166 const Node* node = range->startContainer();
180 if (node && node->isElementNode() && !toElement(node)->isSpellCheckingEnable d()) 167 if (node && node->isElementNode() && !toElement(node)->isSpellCheckingEnable d())
181 return false; 168 return false;
182 return true; 169 return true;
183 } 170 }
184 171
185 void SpellCheckRequester::requestCheckingFor(SpellCheckRequest* request) 172 void SpellCheckRequester::requestCheckingFor(SpellCheckRequest* request)
186 { 173 {
187 if (!request || !canCheckAsynchronously(request->paragraphRange())) 174 if (!request || !canCheckAsynchronously(request->checkingRange()))
188 return; 175 return;
189 176
190 DCHECK_EQ(request->data().sequence(), unrequestedTextCheckingSequence); 177 DCHECK_EQ(request->data().sequence(), unrequestedTextCheckingSequence);
191 int sequence = ++m_lastRequestSequence; 178 int sequence = ++m_lastRequestSequence;
192 if (sequence == unrequestedTextCheckingSequence) 179 if (sequence == unrequestedTextCheckingSequence)
193 sequence = ++m_lastRequestSequence; 180 sequence = ++m_lastRequestSequence;
194 181
195 request->setCheckerAndSequence(this, sequence); 182 request->setCheckerAndSequence(this, sequence);
196 183
197 if (m_timerToProcessQueuedRequest.isActive() || m_processingRequest) { 184 if (m_timerToProcessQueuedRequest.isActive() || m_processingRequest) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 } 293 }
307 294
308 DEFINE_TRACE(SpellCheckRequester) 295 DEFINE_TRACE(SpellCheckRequester)
309 { 296 {
310 visitor->trace(m_frame); 297 visitor->trace(m_frame);
311 visitor->trace(m_processingRequest); 298 visitor->trace(m_processingRequest);
312 visitor->trace(m_requestQueue); 299 visitor->trace(m_requestQueue);
313 } 300 }
314 301
315 } // namespace blink 302 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698