Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / editing / SpellCheckRequester.h
index 642329b..91d9f91 100644 (file)
 #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
@@ -97,27 +103,37 @@ public:
     }
 
 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