]> git.saurik.com Git - iphone-api.git/blob - WebCore/EmptyClients.h
Add support for new WinterBoard Settings features.
[iphone-api.git] / WebCore / EmptyClients.h
1 /*
2 * Copyright (C) 2006 Eric Seidel (eric@webkit.org)
3 * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
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 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27 #ifndef EmptyClients_h
28 #define EmptyClients_h
29
30 #include "ChromeClient.h"
31 #include "ContextMenuClient.h"
32 #include "DocumentLoader.h"
33 #include "DragClient.h"
34 #include "EditCommand.h"
35 #include "EditorClient.h"
36 #include "FloatRect.h"
37 #include "FocusDirection.h"
38 #include "FormState.h"
39 #include "FrameLoaderClient.h"
40 #include "InspectorClient.h"
41 #include "ResourceError.h"
42 #include "SharedBuffer.h"
43
44 /*
45 This file holds empty Client stubs for use by WebCore.
46 Viewless element needs to create a dummy Page->Frame->FrameView tree for use in parsing or executing JavaScript.
47 This tree depends heavily on Clients (usually provided by WebKit classes).
48
49 This file was first created for SVGImage as it had no way to access the current Page (nor should it,
50 since Images are not tied to a page).
51 See http://bugs.webkit.org/show_bug.cgi?id=5971 for the original discussion about this file.
52
53 Ideally, whenever you change a Client class, you should add a stub here.
54 Brittle, yes. Unfortunate, yes. Hopefully temporary.
55 */
56
57 namespace WebCore {
58
59 class EmptyChromeClient : public ChromeClient {
60 public:
61 virtual ~EmptyChromeClient() { }
62 virtual void chromeDestroyed() { }
63
64 virtual void setWindowRect(const FloatRect&) { }
65 virtual FloatRect windowRect() { return FloatRect(); }
66
67 virtual FloatRect pageRect() { return FloatRect(); }
68
69 virtual float scaleFactor() { return 1.f; }
70
71 virtual void focus(bool /*userGesture*/) { }
72 virtual void unfocus() { }
73
74 virtual bool canTakeFocus(FocusDirection) { return false; }
75 virtual void takeFocus(FocusDirection) { }
76
77 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const bool /*userGesture*/) { return 0; }
78 virtual void show() { }
79
80 virtual bool canRunModal() { return false; }
81 virtual void runModal() { }
82
83 virtual void setToolbarsVisible(bool) { }
84 virtual bool toolbarsVisible() { return false; }
85
86 virtual void setStatusbarVisible(bool) { }
87 virtual bool statusbarVisible() { return false; }
88
89 virtual void setScrollbarsVisible(bool) { }
90 virtual bool scrollbarsVisible() { return false; }
91
92 virtual void setMenubarVisible(bool) { }
93 virtual bool menubarVisible() { return false; }
94
95 virtual void setResizable(bool) { }
96
97 virtual void addMessageToConsole(MessageSource, MessageLevel, const String& /*message*/, unsigned /*lineNumber*/, const String& /*sourceID*/) { }
98
99 virtual bool canRunBeforeUnloadConfirmPanel() { return false; }
100 virtual bool runBeforeUnloadConfirmPanel(const String&, Frame*) { return true; }
101
102 virtual void closeWindowSoon() { }
103
104 virtual void runJavaScriptAlert(Frame*, const String&) { }
105 virtual bool runJavaScriptConfirm(Frame*, const String&) { return false; }
106 virtual bool runJavaScriptPrompt(Frame*, const String&, const String&, String&) { return false; }
107 virtual bool shouldInterruptJavaScript() { return false; }
108
109 virtual void setStatusbarText(const String&) { }
110
111 virtual bool tabsToLinks() const { return false; }
112
113 virtual IntRect windowResizerRect() const { return IntRect(); }
114 virtual void addToDirtyRegion(const IntRect&) { }
115 virtual void scrollBackingStore(int, int, const IntRect&, const IntRect&) { }
116 virtual void updateBackingStore() { }
117
118 virtual void repaint(const IntRect&, bool, bool, bool) { }
119 virtual void scroll(const IntSize&, const IntRect&, const IntRect&) { }
120 virtual IntPoint screenToWindow(const IntPoint& p) const { return p; }
121 virtual IntRect windowToScreen(const IntRect& r) const { return r; }
122 virtual PlatformWidget platformWindow() const { return 0; }
123 virtual void contentsSizeChanged(Frame*, const IntSize&) const { }
124
125 virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) { }
126
127 virtual void setToolTip(const String&) { }
128
129 virtual void print(Frame*) { }
130
131 virtual void exceededDatabaseQuota(Frame*, const String&) { }
132
133 virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) { }
134
135 virtual void formStateDidChange(const Node*) { }
136
137 virtual HTMLParserQuirks* createHTMLParserQuirks() { return 0; }
138
139 #if ENABLE(TOUCH_EVENTS)
140 virtual void eventRegionsChanged(const HashMap< RefPtr<Node>, unsigned>&) const { }
141 virtual void didPreventDefaultForEvent() const { }
142 #endif
143 virtual void didReceiveDocType(Frame*) const { }
144 virtual void setNeedsScrollNotifications(Frame*, bool) const { }
145 virtual void observedContentChange(Frame*) const { }
146 virtual void clearContentChangeObservers(Frame*) const { }
147 virtual void didReceiveViewportArguments(Frame*, const ViewportArguments&) const { }
148 virtual void notifyRevealedSelectionByScrollingFrame(Frame*) const { }
149 virtual bool isStopping() const { return false; }
150 virtual void didLayout() const { }
151 };
152
153 class EmptyFrameLoaderClient : public FrameLoaderClient {
154 public:
155 virtual ~EmptyFrameLoaderClient() { }
156 virtual void frameLoaderDestroyed() { }
157
158 virtual bool hasWebView() const { return true; } // mainly for assertions
159
160 virtual void makeRepresentation(DocumentLoader*) { }
161 virtual void forceLayout() { }
162 virtual void forceLayoutForNonHTML() { }
163
164 virtual void setCopiesOnScroll() { }
165
166 virtual void detachedFromParent2() { }
167 virtual void detachedFromParent3() { }
168
169 virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&) { }
170
171 virtual void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) { }
172 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) { return false; }
173 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) { }
174 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
175 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
176
177 virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long, const ProtectionSpace&) { return false; }
178
179 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) { }
180 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) { }
181 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) { }
182 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) { }
183 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) { return false; }
184
185 virtual void dispatchDidHandleOnloadEvents() { }
186 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { }
187 virtual void dispatchDidCancelClientRedirect() { }
188 virtual void dispatchWillPerformClientRedirect(const KURL&, double, double) { }
189 virtual void dispatchDidChangeLocationWithinPage() { }
190 virtual void dispatchWillClose() { }
191 virtual void dispatchDidReceiveIcon() { }
192 virtual void dispatchDidStartProvisionalLoad() { }
193 virtual void dispatchDidReceiveTitle(const String&) { }
194 virtual void dispatchDidCommitLoad() { }
195 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { }
196 virtual void dispatchDidFailLoad(const ResourceError&) { }
197 virtual void dispatchDidFinishDocumentLoad() { }
198 virtual void dispatchDidFinishLoad() { }
199 virtual void dispatchDidFirstLayout() { }
200 virtual void dispatchDidFirstVisuallyNonEmptyLayout() { }
201
202 virtual Frame* dispatchCreatePage() { return 0; }
203 virtual void dispatchShow() { }
204
205 virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction, const String&, const ResourceRequest&) { }
206 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) { }
207 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) { }
208 virtual void cancelPolicyCheck() { }
209
210 virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
211
212 virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) { }
213
214 virtual void dispatchDidLoadMainResource(DocumentLoader*) { }
215 virtual void revertToProvisionalState(DocumentLoader*) { }
216 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
217
218 virtual void willChangeEstimatedProgress() { }
219 virtual void didChangeEstimatedProgress() { }
220 virtual void postProgressStartedNotification() { }
221 virtual void postProgressEstimateChangedNotification() { }
222 virtual void postProgressFinishedNotification() { }
223
224 virtual void setMainFrameDocumentReady(bool) { }
225
226 virtual void startDownload(const ResourceRequest&) { }
227
228 virtual void willChangeTitle(DocumentLoader*) { }
229 virtual void didChangeTitle(DocumentLoader*) { }
230
231 virtual void committedLoad(DocumentLoader*, const char*, int) { }
232 virtual void finishedLoading(DocumentLoader*) { }
233
234 virtual ResourceError cancelledError(const ResourceRequest&) { ResourceError error("", 0, "", ""); error.setIsCancellation(true); return error; }
235 virtual ResourceError blockedError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
236 virtual ResourceError cannotShowURLError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
237 virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
238
239 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
240 virtual ResourceError fileDoesNotExistError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
241 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
242
243 virtual bool shouldFallBack(const ResourceError&) { return false; }
244
245 virtual bool canHandleRequest(const ResourceRequest&) const { return false; }
246 virtual bool canShowMIMEType(const String&) const { return false; }
247 virtual bool representationExistsForURLScheme(const String&) const { return false; }
248 virtual String generatedMIMETypeForURLScheme(const String&) const { return ""; }
249
250 virtual void frameLoadCompleted() { }
251 virtual void restoreViewState() { }
252 virtual void provisionalLoadStarted() { }
253 virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const { return false; }
254 virtual void didFinishLoad() { }
255 virtual void prepareForDataSourceReplacement() { }
256
257 virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) { return DocumentLoader::create(request, substituteData); }
258 virtual void setTitle(const String&, const KURL&) { }
259
260 virtual String userAgent(const KURL&) { return ""; }
261
262 virtual void savePlatformDataToCachedFrame(CachedFrame*) { }
263 virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { }
264 virtual void transitionToCommittedForNewPage() { }
265
266 virtual void updateGlobalHistory() { }
267 virtual void updateGlobalHistoryForRedirectWithoutHistoryItem() { }
268 virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; }
269 virtual void saveViewStateToItem(HistoryItem*) { }
270 virtual bool canCachePage() const { return false; }
271
272 virtual PassRefPtr<Frame> createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) { return 0; }
273 virtual Widget* createPlugin(const IntSize&, Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool) { return 0; }
274 virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const KURL&, const Vector<String>&, const Vector<String>&) { return 0; }
275
276 virtual ObjectContentType objectContentType(const KURL&, const String&) { return ObjectContentType(); }
277 virtual String overrideMediaType() const { return String(); }
278
279 virtual void redirectDataToPlugin(Widget*) { }
280 virtual void windowObjectCleared() { }
281 virtual void didPerformFirstNavigation() const { }
282
283 virtual void registerForIconNotification(bool) { }
284
285 #if PLATFORM(MAC)
286 virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; }
287 #endif
288
289 };
290
291 class EmptyEditorClient : public EditorClient {
292 public:
293 virtual ~EmptyEditorClient() { }
294 virtual void pageDestroyed() { }
295
296 virtual bool shouldDeleteRange(Range*) { return false; }
297 virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; }
298 virtual bool smartInsertDeleteEnabled() { return false; }
299 virtual bool isSelectTrailingWhitespaceEnabled() { return false; }
300 virtual bool isContinuousSpellCheckingEnabled() { return false; }
301 virtual void toggleContinuousSpellChecking() { }
302 virtual bool isGrammarCheckingEnabled() { return false; }
303 virtual void toggleGrammarChecking() { }
304 virtual int spellCheckerDocumentTag() { return -1; }
305
306 virtual bool selectWordBeforeMenuEvent() { return false; }
307 virtual bool isEditable() { return false; }
308
309 virtual bool shouldBeginEditing(Range*) { return false; }
310 virtual bool shouldEndEditing(Range*) { return false; }
311 virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) { return false; }
312 // virtual bool shouldInsertNode(Node*, Range* replacingRange, WebViewInsertAction) { return false; }
313 virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) { return false; }
314 virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) { return false; }
315
316 virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*) { return false; }
317 virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; }
318 // virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) { return false; }
319 // virtual bool doCommandBySelector(SEL selector) { return false; }
320 //
321 virtual void didBeginEditing() { }
322 virtual void respondToChangedContents() { }
323 virtual void respondToChangedSelection() { }
324 virtual void didEndEditing() { }
325 virtual void didWriteSelectionToPasteboard() { }
326 virtual void didSetSelectionTypesForPasteboard() { }
327 // virtual void webViewDidChangeTypingStyle:(NSNotification *)notification { }
328 // virtual void webViewDidChangeSelection:(NSNotification *)notification { }
329 // virtual NSUndoManager* undoManagerForWebView:(WebView *)webView { return 0; }
330
331 virtual void registerCommandForUndo(PassRefPtr<EditCommand>) { }
332 virtual void registerCommandForRedo(PassRefPtr<EditCommand>) { }
333 virtual void clearUndoRedoOperations() { }
334
335 virtual bool canUndo() const { return false; }
336 virtual bool canRedo() const { return false; }
337
338 virtual void undo() { }
339 virtual void redo() { }
340
341 virtual void handleKeyboardEvent(KeyboardEvent*) { }
342 virtual void handleInputMethodKeydown(KeyboardEvent*) { }
343
344 virtual void textFieldDidBeginEditing(Element*) { }
345 virtual void textFieldDidEndEditing(Element*) { }
346 virtual void textDidChangeInTextField(Element*) { }
347 virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) { return false; }
348 virtual void textWillBeDeletedInTextField(Element*) { }
349 virtual void textDidChangeInTextArea(Element*) { }
350 virtual void formElementDidSetValue(Element*) { }
351 virtual void formElementDidFocus(Element*) { }
352 virtual void formElementDidBlur(Element*) { }
353 virtual void suppressFormNotifications() { }
354 virtual void restoreFormNotifications() { }
355 virtual void suppressSelectionNotifications() { }
356 virtual void restoreSelectionNotifications() { }
357 virtual void startDelayingAndCoalescingContentChangeNotifications() { }
358 virtual void stopDelayingAndCoalescingContentChangeNotifications() { }
359
360 #if PLATFORM(MAC)
361 virtual void markedTextAbandoned(Frame*) { }
362
363 virtual NSString* userVisibleString(NSURL*) { return 0; }
364 #ifdef BUILDING_ON_TIGER
365 virtual NSArray* pasteboardTypesForSelection(Frame*) { return 0; }
366 #endif
367 #endif
368 virtual void ignoreWordInSpellDocument(const String&) { }
369 virtual void learnWord(const String&) { }
370 virtual void checkSpellingOfString(const UChar*, int, int*, int*) { }
371 virtual void checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) { }
372 virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) { }
373 virtual void updateSpellingUIWithMisspelledWord(const String&) { }
374 virtual void showSpellingUI(bool) { }
375 virtual bool spellingUIIsShowing() { return false; }
376 virtual void getGuessesForWord(const String&, Vector<String>&) { }
377 virtual void setInputMethodState(bool) { }
378
379
380 };
381
382
383 }
384
385 #endif // EmptyClients_h