• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2013 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  *     * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *     * Redistributions in binary form must reproduce the above
11  * copyright notice, this list of conditions and the following disclaimer
12  * in the documentation and/or other materials provided with the
13  * distribution.
14  *     * Neither the name of Google Inc. nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef SpellCheckClient_h
32 #define SpellCheckClient_h
33 
34 #include "MockSpellCheck.h"
35 #include "public/platform/WebNonCopyable.h"
36 #include "public/testing/WebTask.h"
37 #include "public/web/WebSpellCheckClient.h"
38 
39 namespace WebTestRunner {
40 
41 class WebTestDelegate;
42 class WebTestProxyBase;
43 
44 class SpellCheckClient : public blink::WebSpellCheckClient, public blink::WebNonCopyable {
45 public:
46     explicit SpellCheckClient(WebTestProxyBase*);
47     virtual ~SpellCheckClient();
48 
49     void setDelegate(WebTestDelegate*);
50 
taskList()51     WebTaskList* taskList() { return &m_taskList; }
mockSpellCheck()52     MockSpellCheck* mockSpellCheck() { return &m_spellcheck; }
53 
54     // blink::WebSpellCheckClient implementation.
55     virtual void spellCheck(const blink::WebString&, int& offset, int& length, blink::WebVector<blink::WebString>* optionalSuggestions);
56     virtual void checkTextOfParagraph(const blink::WebString&, blink::WebTextCheckingTypeMask, blink::WebVector<blink::WebTextCheckingResult>*);
57     virtual void requestCheckingOfText(const blink::WebString&,
58                                        const blink::WebVector<uint32_t>&,
59                                        const blink::WebVector<unsigned>&,
60                                        blink::WebTextCheckingCompletion*);
61     virtual blink::WebString autoCorrectWord(const blink::WebString&);
62 
63 private:
64     void finishLastTextCheck();
65 
66     // The mock spellchecker used in spellCheck().
67     MockSpellCheck m_spellcheck;
68 
69     blink::WebString m_lastRequestedTextCheckString;
70     blink::WebTextCheckingCompletion* m_lastRequestedTextCheckingCompletion;
71 
72     WebTaskList m_taskList;
73 
74     WebTestDelegate* m_delegate;
75 
76     WebTestProxyBase* m_webTestProxy;
77 };
78 
79 }
80 
81 #endif // SpellCheckClient_h
82