[BlackBerry] Optimize spellchecking by coalescing messages
[WebKit-https.git] / Source / WebKit / blackberry / WebKitSupport / SpellingHandler.h
1 /*
2  * Copyright (C) Research In Motion Limited 2013. All rights reserved.
3  */
4
5 #ifndef SpellingHandler_h
6 #define SpellingHandler_h
7
8 #include "TextCheckerClient.h"
9 #include "Timer.h"
10 #include "VisiblePosition.h"
11 #include "VisibleSelection.h"
12
13 #include <wtf/RefPtr.h>
14
15 /**
16  * SpellingHandler
17  */
18
19 namespace WebCore {
20 class Range;
21 }
22
23 namespace BlackBerry {
24 namespace WebKit {
25
26 class InputHandler;
27
28 class SpellingHandler {
29 public:
30     SpellingHandler(InputHandler*);
31     ~SpellingHandler();
32
33     void spellCheckTextBlock(WebCore::VisibleSelection&, WebCore::TextCheckingProcessType);
34     bool isSpellCheckActive() { return m_isSpellCheckActive; }
35     void setSpellCheckActive(bool active) { m_isSpellCheckActive = active; }
36
37 private:
38     void createSpellCheckRequest(PassRefPtr<WebCore::Range> rangeForSpellCheckingPtr, WebCore::TextCheckingProcessType);
39     void parseBlockForSpellChecking(WebCore::Timer<SpellingHandler>*);
40     PassRefPtr<WebCore::Range> getRangeForSpellCheckWithFineGranularity(WebCore::VisiblePosition startPosition, WebCore::VisiblePosition endPosition);
41
42     InputHandler* m_inputHandler;
43
44     WebCore::Timer<SpellingHandler> m_timer;
45     WebCore::VisiblePosition m_startOfCurrentLine;
46     WebCore::VisiblePosition m_endOfCurrentLine;
47     WebCore::TextCheckingProcessType m_textCheckingProcessType;
48     bool m_isSpellCheckActive;
49 };
50
51 } // WebKit
52 } // BlackBerry
53
54 #endif // SpellingHandler_h