[Win] Expose missing editing features through WebView interface
[WebKit-https.git] / Tools / DumpRenderTree / win / EditingDelegate.h
1 /*
2  * Copyright (C) 2007 Apple 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
6  * are met:
7  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer. 
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution. 
13  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #ifndef EditingDelegate_h
30 #define EditingDelegate_h
31
32 #include <WebKit/WebKit.h>
33
34 class __declspec(uuid("265DCD4B-79C3-44a2-84BC-511C3EDABD6F")) EditingDelegate : public IWebEditingDelegate, public IWebNotificationObserver {
35 public:
36     EditingDelegate();
37
38     void setAcceptsEditing(bool b) { m_acceptsEditing = b; }
39
40     // IUnknown
41     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
42     virtual ULONG STDMETHODCALLTYPE AddRef(void);
43     virtual ULONG STDMETHODCALLTYPE Release(void);
44
45     // IWebEditingDelegate
46     virtual HRESULT STDMETHODCALLTYPE shouldBeginEditingInDOMRange( 
47         /* [in] */ IWebView *webView,
48         /* [in] */ IDOMRange *range,
49         /* [retval][out] */ BOOL *result);
50     
51     virtual HRESULT STDMETHODCALLTYPE shouldEndEditingInDOMRange( 
52         /* [in] */ IWebView *webView,
53         /* [in] */ IDOMRange *range,
54         /* [retval][out] */ BOOL *result);
55     
56     virtual HRESULT STDMETHODCALLTYPE shouldInsertNode(IWebView*, IDOMNode*, IDOMRange*, WebViewInsertAction, BOOL* result);
57     
58     virtual HRESULT STDMETHODCALLTYPE shouldInsertText( 
59         /* [in] */ IWebView *webView,
60         /* [in] */ BSTR text,
61         /* [in] */ IDOMRange *range,
62         /* [in] */ WebViewInsertAction action,
63         /* [retval][out] */ BOOL *result);
64     
65     virtual HRESULT STDMETHODCALLTYPE shouldDeleteDOMRange( 
66         /* [in] */ IWebView *webView,
67         /* [in] */ IDOMRange *range,
68         /* [retval][out] */ BOOL *result);
69     
70     virtual HRESULT STDMETHODCALLTYPE shouldChangeSelectedDOMRange( 
71         /* [in] */ IWebView *webView,
72         /* [in] */ IDOMRange *currentRange,
73         /* [in] */ IDOMRange *proposedRange,
74         /* [in] */ WebSelectionAffinity selectionAffinity,
75         /* [in] */ BOOL stillSelecting,
76         /* [retval][out] */ BOOL *result);
77     
78     virtual HRESULT STDMETHODCALLTYPE shouldApplyStyle( 
79         /* [in] */ IWebView *webView,
80         /* [in] */ IDOMCSSStyleDeclaration *style,
81         /* [in] */ IDOMRange *range,
82         /* [retval][out] */ BOOL *result);
83     
84     virtual HRESULT STDMETHODCALLTYPE shouldChangeTypingStyle( 
85         /* [in] */ IWebView *webView,
86         /* [in] */ IDOMCSSStyleDeclaration *currentStyle,
87         /* [in] */ IDOMCSSStyleDeclaration *proposedStyle,
88         /* [retval][out] */ BOOL *result);
89     
90     virtual HRESULT STDMETHODCALLTYPE doPlatformCommand( 
91         /* [in] */ IWebView *webView,
92         /* [in] */ BSTR command,
93         /* [retval][out] */ BOOL *result);
94     
95     virtual HRESULT STDMETHODCALLTYPE webViewDidBeginEditing( 
96         /* [in] */ IWebNotification *notification);
97     
98     virtual HRESULT STDMETHODCALLTYPE webViewDidChange( 
99         /* [in] */ IWebNotification *notification);
100     
101     virtual HRESULT STDMETHODCALLTYPE webViewDidEndEditing( 
102         /* [in] */ IWebNotification *notification);
103     
104     virtual HRESULT STDMETHODCALLTYPE webViewDidChangeTypingStyle( 
105         /* [in] */ IWebNotification *notification);
106     
107     virtual HRESULT STDMETHODCALLTYPE webViewDidChangeSelection( 
108         /* [in] */ IWebNotification *notification);
109     
110     virtual HRESULT STDMETHODCALLTYPE undoManagerForWebView( 
111         /* [in] */ IWebView *webView,
112         /* [retval][out] */ IWebUndoManager **undoManager) { return E_NOTIMPL; }
113
114         virtual HRESULT STDMETHODCALLTYPE ignoreWordInSpellDocument( 
115             /* [in] */ IWebView *view,
116             /* [in] */ BSTR word) { return E_NOTIMPL; }
117         
118         virtual HRESULT STDMETHODCALLTYPE learnWord( 
119             /* [in] */ BSTR word) { return E_NOTIMPL; }
120         
121         virtual HRESULT STDMETHODCALLTYPE checkSpellingOfString( 
122             /* [in] */ IWebView *view,
123             /* [in] */ LPCTSTR text,
124             /* [in] */ int length,
125             /* [out] */ int *misspellingLocation,
126             /* [out] */ int *misspellingLength);
127         
128         virtual HRESULT STDMETHODCALLTYPE checkGrammarOfString( 
129             /* [in] */ IWebView *view,
130             /* [in] */ LPCTSTR text,
131             /* [in] */ int length,
132             /* [out] */ IEnumWebGrammarDetails **grammarDetails,
133             /* [out] */ int *badGrammarLocation,
134             /* [out] */ int *badGrammarLength) { return E_NOTIMPL; }
135         
136         virtual HRESULT STDMETHODCALLTYPE updateSpellingUIWithGrammarString( 
137             /* [in] */ BSTR string,
138             /* [in] */ int location,
139             /* [in] */ int length,
140             /* [in] */ BSTR userDescription,
141             /* [in] */ BSTR *guesses,
142             /* [in] */ int guessesCount) { return E_NOTIMPL; }
143         
144         virtual HRESULT STDMETHODCALLTYPE updateSpellingUIWithMisspelledWord( 
145             /* [in] */ BSTR word) { return E_NOTIMPL; }
146         
147         virtual HRESULT STDMETHODCALLTYPE showSpellingUI( 
148             /* [in] */ BOOL show) { return E_NOTIMPL; }
149         
150         virtual HRESULT STDMETHODCALLTYPE spellingUIIsShowing( 
151             /* [retval][out] */ BOOL *result) { return E_NOTIMPL; }
152         
153         virtual HRESULT STDMETHODCALLTYPE guessesForWord( 
154             /* [in] */ BSTR word,
155             /* [retval][out] */ IEnumSpellingGuesses **guesses) { return E_NOTIMPL; }
156         
157         virtual HRESULT STDMETHODCALLTYPE closeSpellDocument( 
158             /* [in] */ IWebView *view) { return E_NOTIMPL; }
159         
160         virtual HRESULT STDMETHODCALLTYPE sharedSpellCheckerExists( 
161             /* [retval][out] */ BOOL *exists) { return E_NOTIMPL; }
162         
163         virtual HRESULT STDMETHODCALLTYPE preflightChosenSpellServer( void) { return E_NOTIMPL; }
164         
165         virtual HRESULT STDMETHODCALLTYPE updateGrammar( void) { return E_NOTIMPL; }
166
167         // IWebNotificationObserver
168         virtual HRESULT STDMETHODCALLTYPE onNotify(IWebNotification* notification);
169
170 private:
171     bool m_acceptsEditing;
172     ULONG m_refCount;
173 };
174
175 #endif // !defined(EditingDelegate_h)