]>
git.saurik.com Git - iphone-api.git/blob - WebCore/EmptyClients.h
2 * Copyright (C) 2006 Eric Seidel (eric@webkit.org)
3 * Copyright (C) 2008, 2009 Apple Inc. All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
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.
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.
27 #ifndef EmptyClients_h
28 #define EmptyClients_h
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"
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).
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.
53 Ideally, whenever you change a Client class, you should add a stub here.
54 Brittle, yes. Unfortunate, yes. Hopefully temporary.
59 class EmptyChromeClient
: public ChromeClient
{
61 virtual ~EmptyChromeClient() { }
62 virtual void chromeDestroyed() { }
64 virtual void setWindowRect(const FloatRect
&) { }
65 virtual FloatRect
windowRect() { return FloatRect(); }
67 virtual FloatRect
pageRect() { return FloatRect(); }
69 virtual float scaleFactor() { return 1.f
; }
71 virtual void focus(bool /*userGesture*/) { }
72 virtual void unfocus() { }
74 virtual bool canTakeFocus(FocusDirection
) { return false; }
75 virtual void takeFocus(FocusDirection
) { }
77 virtual Page
* createWindow(Frame
*, const FrameLoadRequest
&, const WindowFeatures
&, const bool /*userGesture*/) { return 0; }
78 virtual void show() { }
80 virtual bool canRunModal() { return false; }
81 virtual void runModal() { }
83 virtual void setToolbarsVisible(bool) { }
84 virtual bool toolbarsVisible() { return false; }
86 virtual void setStatusbarVisible(bool) { }
87 virtual bool statusbarVisible() { return false; }
89 virtual void setScrollbarsVisible(bool) { }
90 virtual bool scrollbarsVisible() { return false; }
92 virtual void setMenubarVisible(bool) { }
93 virtual bool menubarVisible() { return false; }
95 virtual void setResizable(bool) { }
97 virtual void addMessageToConsole(MessageSource
, MessageLevel
, const String
& /*message*/, unsigned /*lineNumber*/, const String
& /*sourceID*/) { }
99 virtual bool canRunBeforeUnloadConfirmPanel() { return false; }
100 virtual bool runBeforeUnloadConfirmPanel(const String
&, Frame
*) { return true; }
102 virtual void closeWindowSoon() { }
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; }
109 virtual void setStatusbarText(const String
&) { }
111 virtual bool tabsToLinks() const { return false; }
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() { }
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 { }
125 virtual void mouseDidMoveOverElement(const HitTestResult
&, unsigned) { }
127 virtual void setToolTip(const String
&) { }
129 virtual void print(Frame
*) { }
131 virtual void exceededDatabaseQuota(Frame
*, const String
&) { }
133 virtual void runOpenPanel(Frame
*, PassRefPtr
<FileChooser
>) { }
135 virtual void formStateDidChange(const Node
*) { }
137 virtual HTMLParserQuirks
* createHTMLParserQuirks() { return 0; }
139 #if ENABLE(TOUCH_EVENTS)
140 virtual void eventRegionsChanged(const HashMap
< RefPtr
<Node
>, unsigned>&) const { }
141 virtual void didPreventDefaultForEvent() const { }
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 { }
153 class EmptyFrameLoaderClient
: public FrameLoaderClient
{
155 virtual ~EmptyFrameLoaderClient() { }
156 virtual void frameLoaderDestroyed() { }
158 virtual bool hasWebView() const { return true; } // mainly for assertions
160 virtual void makeRepresentation(DocumentLoader
*) { }
161 virtual void forceLayout() { }
162 virtual void forceLayoutForNonHTML() { }
164 virtual void setCopiesOnScroll() { }
166 virtual void detachedFromParent2() { }
167 virtual void detachedFromParent3() { }
169 virtual void download(ResourceHandle
*, const ResourceRequest
&, const ResourceRequest
&, const ResourceResponse
&) { }
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
&) { }
177 virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader
*, unsigned long, const ProtectionSpace
&) { return false; }
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; }
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() { }
202 virtual Frame
* dispatchCreatePage() { return 0; }
203 virtual void dispatchShow() { }
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() { }
210 virtual void dispatchUnableToImplementPolicy(const ResourceError
&) { }
212 virtual void dispatchWillSubmitForm(FramePolicyFunction
, PassRefPtr
<FormState
>) { }
214 virtual void dispatchDidLoadMainResource(DocumentLoader
*) { }
215 virtual void revertToProvisionalState(DocumentLoader
*) { }
216 virtual void setMainDocumentError(DocumentLoader
*, const ResourceError
&) { }
218 virtual void willChangeEstimatedProgress() { }
219 virtual void didChangeEstimatedProgress() { }
220 virtual void postProgressStartedNotification() { }
221 virtual void postProgressEstimateChangedNotification() { }
222 virtual void postProgressFinishedNotification() { }
224 virtual void setMainFrameDocumentReady(bool) { }
226 virtual void startDownload(const ResourceRequest
&) { }
228 virtual void willChangeTitle(DocumentLoader
*) { }
229 virtual void didChangeTitle(DocumentLoader
*) { }
231 virtual void committedLoad(DocumentLoader
*, const char*, int) { }
232 virtual void finishedLoading(DocumentLoader
*) { }
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, "", ""); }
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, "", ""); }
243 virtual bool shouldFallBack(const ResourceError
&) { return false; }
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 ""; }
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() { }
257 virtual PassRefPtr
<DocumentLoader
> createDocumentLoader(const ResourceRequest
& request
, const SubstituteData
& substituteData
) { return DocumentLoader::create(request
, substituteData
); }
258 virtual void setTitle(const String
&, const KURL
&) { }
260 virtual String
userAgent(const KURL
&) { return ""; }
262 virtual void savePlatformDataToCachedFrame(CachedFrame
*) { }
263 virtual void transitionToCommittedFromCachedFrame(CachedFrame
*) { }
264 virtual void transitionToCommittedForNewPage() { }
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; }
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; }
276 virtual ObjectContentType
objectContentType(const KURL
&, const String
&) { return ObjectContentType(); }
277 virtual String
overrideMediaType() const { return String(); }
279 virtual void redirectDataToPlugin(Widget
*) { }
280 virtual void windowObjectCleared() { }
281 virtual void didPerformFirstNavigation() const { }
283 virtual void registerForIconNotification(bool) { }
286 virtual NSCachedURLResponse
* willCacheResponse(DocumentLoader
*, unsigned long, NSCachedURLResponse
* response
) const { return response
; }
291 class EmptyEditorClient
: public EditorClient
{
293 virtual ~EmptyEditorClient() { }
294 virtual void pageDestroyed() { }
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; }
306 virtual bool selectWordBeforeMenuEvent() { return false; }
307 virtual bool isEditable() { return false; }
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; }
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; }
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; }
331 virtual void registerCommandForUndo(PassRefPtr
<EditCommand
>) { }
332 virtual void registerCommandForRedo(PassRefPtr
<EditCommand
>) { }
333 virtual void clearUndoRedoOperations() { }
335 virtual bool canUndo() const { return false; }
336 virtual bool canRedo() const { return false; }
338 virtual void undo() { }
339 virtual void redo() { }
341 virtual void handleKeyboardEvent(KeyboardEvent
*) { }
342 virtual void handleInputMethodKeydown(KeyboardEvent
*) { }
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() { }
361 virtual void markedTextAbandoned(Frame
*) { }
363 virtual NSString
* userVisibleString(NSURL
*) { return 0; }
364 #ifdef BUILDING_ON_TIGER
365 virtual NSArray
* pasteboardTypesForSelection(Frame
*) { return 0; }
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) { }
385 #endif // EmptyClients_h