#include "wtf/Vector.h"
#include "wtf/text/WTFString.h"
-namespace WebCore {
+namespace blink {
class LocalFrame;
-class Node;
class SpellCheckRequester;
class TextCheckerClient;
-class SpellCheckRequest FINAL : public TextCheckingRequest {
+class SpellCheckRequest final : public TextCheckingRequest {
public:
- static PassRefPtr<SpellCheckRequest> create(TextCheckingTypeMask, TextCheckingProcessType, PassRefPtr<Range> checkingRange, PassRefPtr<Range> paragraphRange, int requestNumber = 0);
+ static PassRefPtrWillBeRawPtr<SpellCheckRequest> create(TextCheckingTypeMask, TextCheckingProcessType, PassRefPtrWillBeRawPtr<Range> checkingRange, PassRefPtrWillBeRawPtr<Range> paragraphRange, int requestNumber = 0);
virtual ~SpellCheckRequest();
- PassRefPtr<Range> checkingRange() const { return m_checkingRange; }
- PassRefPtr<Range> paragraphRange() const { return m_paragraphRange; }
- PassRefPtr<Element> rootEditableElement() const { return m_rootEditableElement; }
+ PassRefPtrWillBeRawPtr<Range> checkingRange() const { return m_checkingRange; }
+ PassRefPtrWillBeRawPtr<Range> paragraphRange() const { return m_paragraphRange; }
+ PassRefPtrWillBeRawPtr<Element> rootEditableElement() const { return m_rootEditableElement; }
void setCheckerAndSequence(SpellCheckRequester*, int sequence);
+#if !ENABLE(OILPAN)
void requesterDestroyed();
+#endif
- virtual const TextCheckingRequestData& data() const OVERRIDE;
- virtual void didSucceed(const Vector<TextCheckingResult>&) OVERRIDE;
- virtual void didCancel() OVERRIDE;
+ virtual const TextCheckingRequestData& data() const override;
+ virtual void didSucceed(const Vector<TextCheckingResult>&) override;
+ virtual void didCancel() override;
int requestNumber() const { return m_requestNumber; }
+ virtual void trace(Visitor*) override;
+
private:
- SpellCheckRequest(PassRefPtr<Range> checkingRange, PassRefPtr<Range> paragraphRange, const String&, TextCheckingTypeMask, TextCheckingProcessType, const Vector<uint32_t>& documentMarkersInRange, const Vector<unsigned>& documentMarkerOffsets, int requestNumber);
+ SpellCheckRequest(PassRefPtrWillBeRawPtr<Range> checkingRange, PassRefPtrWillBeRawPtr<Range> paragraphRange, const String&, TextCheckingTypeMask, TextCheckingProcessType, const Vector<uint32_t>& documentMarkersInRange, const Vector<unsigned>& documentMarkerOffsets, int requestNumber);
- SpellCheckRequester* m_requester;
- RefPtr<Range> m_checkingRange;
- RefPtr<Range> m_paragraphRange;
- RefPtr<Element> m_rootEditableElement;
+ RawPtrWillBeMember<SpellCheckRequester> m_requester;
+ RefPtrWillBeMember<Range> m_checkingRange;
+ RefPtrWillBeMember<Range> m_paragraphRange;
+ RefPtrWillBeMember<Element> m_rootEditableElement;
TextCheckingRequestData m_requestData;
int m_requestNumber;
};
-class SpellCheckRequester {
- WTF_MAKE_NONCOPYABLE(SpellCheckRequester); WTF_MAKE_FAST_ALLOCATED;
+class SpellCheckRequester final : public NoBaseWillBeGarbageCollectedFinalized<SpellCheckRequester> {
+ WTF_MAKE_NONCOPYABLE(SpellCheckRequester); WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
public:
- friend class SpellCheckRequest;
+ static PassOwnPtrWillBeRawPtr<SpellCheckRequester> create(LocalFrame& frame)
+ {
+ return adoptPtrWillBeNoop(new SpellCheckRequester(frame));
+ }
- explicit SpellCheckRequester(LocalFrame&);
~SpellCheckRequester();
+ void trace(Visitor*);
bool isAsynchronousEnabled() const;
bool isCheckable(Range*) const;
- void requestCheckingFor(PassRefPtr<SpellCheckRequest>);
+ void requestCheckingFor(PassRefPtrWillBeRawPtr<SpellCheckRequest>);
void cancelCheck();
int lastRequestSequence() const
}
private:
- typedef Deque<RefPtr<SpellCheckRequest> > RequestQueue;
+ friend class SpellCheckRequest;
+
+ explicit SpellCheckRequester(LocalFrame&);
bool canCheckAsynchronously(Range*) const;
TextCheckerClient& client() const;
void timerFiredToProcessQueuedRequest(Timer<SpellCheckRequester>*);
- void invokeRequest(PassRefPtr<SpellCheckRequest>);
- void enqueueRequest(PassRefPtr<SpellCheckRequest>);
+ void invokeRequest(PassRefPtrWillBeRawPtr<SpellCheckRequest>);
+ void enqueueRequest(PassRefPtrWillBeRawPtr<SpellCheckRequest>);
void didCheckSucceed(int sequence, const Vector<TextCheckingResult>&);
void didCheckCancel(int sequence);
void didCheck(int sequence, const Vector<TextCheckingResult>&);
- LocalFrame& m_frame;
+ RawPtrWillBeMember<LocalFrame> m_frame;
+ LocalFrame& frame() const
+ {
+ ASSERT(m_frame);
+ return *m_frame;
+ }
+
int m_lastRequestSequence;
int m_lastProcessedSequence;
Timer<SpellCheckRequester> m_timerToProcessQueuedRequest;
- RefPtr<SpellCheckRequest> m_processingRequest;
+ RefPtrWillBeMember<SpellCheckRequest> m_processingRequest;
+
+ typedef WillBeHeapDeque<RefPtrWillBeMember<SpellCheckRequest>> RequestQueue;
RequestQueue m_requestQueue;
};
-} // namespace WebCore
+} // namespace blink
#endif // SpellCheckRequester_h