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 51 WebTaskList* taskList() { return &m_taskList; } 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