656e196e896ae2276237ae996ead0e73437b9053
[WebKit-https.git] / WebCore / platform / graphics / svg / SVGImageEmptyClients.h
1 /*
2  * Copyright (C) 2006 Eric Seidel (eric@webkit.org)
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  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef SVGImageEmptyClients_h
27 #define SVGImageEmptyClients_h
28
29 #ifdef SVG_SUPPORT
30
31 #include "ChromeClient.h"
32 #include "ContextMenuClient.h"
33 #include "DragClient.h"
34 #include "EditorClient.h"
35 #include "FocusDirection.h"
36 #include "FrameLoaderClient.h"
37
38 /*
39  This file holds empty Client stubs for use by SVGImage.
40  SVGImage needs to create a dummy Page->Frame->FrameView tree for use in parsing an SVGDocument.
41  This tree depends heavily on Clients (usually provided by WebKit classes).
42  
43  SVGImage has no way to access the current Page (nor should it, since Images are not tied to a page).
44  See http://bugs.webkit.org/show_bug.cgi?id=5971 for more discussion on this issue.
45  
46  Ideally, whenever you change a Client class, you should add a stub here.
47  Brittle, yes.  Unfortunate, yes.  Hopefully temporary.
48 */
49
50 namespace WebCore {
51
52 class SVGEmptyChromeClient : public ChromeClient {
53 public:
54     virtual ~SVGEmptyChromeClient() { }
55     virtual void chromeDestroyed() { }
56     
57     virtual void setWindowRect(const FloatRect&) { }
58     virtual FloatRect windowRect() { return FloatRect(); }
59     
60     virtual FloatRect pageRect() { return FloatRect(); }
61     
62     virtual float scaleFactor() { return 1.f; }
63     
64     virtual void focus() { }
65     virtual void unfocus() { }
66     
67     virtual bool canTakeFocus(FocusDirection) { return false; }
68     virtual void takeFocus(FocusDirection) { }
69     
70     virtual Page* createWindow(const FrameLoadRequest&) { return 0; }
71     virtual Page* createModalDialog(const FrameLoadRequest&) { return 0; }
72     virtual void show() { }
73     
74     virtual bool canRunModal() { return false; }
75     virtual void runModal() { }
76     
77     virtual void setToolbarsVisible(bool) { }
78     virtual bool toolbarsVisible() { return false; }
79     
80     virtual void setStatusbarVisible(bool) { }
81     virtual bool statusbarVisible() { return false; }
82     
83     virtual void setScrollbarsVisible(bool) { }
84     virtual bool scrollbarsVisible() { return false; }
85     
86     virtual void setMenubarVisible(bool) { }
87     virtual bool menubarVisible() { return false; }
88     
89     virtual void setResizable(bool) { }
90     
91     virtual void addMessageToConsole(const String& message, unsigned int lineNumber, const String& sourceID) { }
92     
93     virtual bool canRunBeforeUnloadConfirmPanel() { return false; }
94     virtual bool runBeforeUnloadConfirmPanel(const String& message, Frame* frame) { return true; }
95     
96     virtual void closeWindowSoon() { }
97     
98     virtual void runJavaScriptAlert(Frame*, const String&) { }
99     virtual bool runJavaScriptConfirm(Frame*, const String&) { return false; }
100     virtual bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result) { return false; }
101     virtual void setStatusbarText(const String&) { }
102 };
103
104 class SVGEmptyFrameLoaderClient : public FrameLoaderClient {
105 public:
106     virtual ~SVGEmptyFrameLoaderClient() {  }
107     virtual void frameLoaderDestroyed() { }
108     
109     virtual bool hasWebView() const { return true; } // mainly for assertions
110     virtual bool hasFrameView() const { return true; } // ditto
111     
112     virtual bool hasBackForwardList() const { return false; }
113     virtual void resetBackForwardList() { }
114     
115     virtual bool provisionalItemIsTarget() const { return false; }
116     virtual bool loadProvisionalItemFromPageCache() { return false; }
117     virtual void invalidateCurrentItemPageCache() { }
118     
119     virtual bool privateBrowsingEnabled() const { return false; }
120     
121     virtual void makeDocumentView() { }
122     virtual void makeRepresentation(DocumentLoader*) { }
123 #if PLATFORM(MAC)
124     virtual void setDocumentViewFromPageCache(NSDictionary *) { }
125 #endif
126     virtual void forceLayout() { }
127     virtual void forceLayoutForNonHTML() { }
128     
129     virtual void updateHistoryForCommit() { }
130     
131     virtual void updateHistoryForBackForwardNavigation() { }
132     virtual void updateHistoryForReload() { }
133     virtual void updateHistoryForStandardLoad() { }
134     virtual void updateHistoryForInternalLoad() { }
135     
136     virtual void updateHistoryAfterClientRedirect() { }
137     
138     virtual void setCopiesOnScroll() { }
139         
140     virtual void detachedFromParent1() { }
141     virtual void detachedFromParent2() { }
142     virtual void detachedFromParent3() { }
143     virtual void detachedFromParent4() { }
144     
145     virtual void loadedFromPageCache() { }
146     
147 #if PLATFORM(MAC)
148     virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceResponse&) { }
149     
150     virtual void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&) { }
151     virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long identifier, ResourceRequest&, const ResourceResponse& redirectResponse) { }
152     virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) { }
153     virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&) { }
154     virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long identifier, const ResourceResponse&) { }
155     virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long identifier, int lengthReceived) { }
156     virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long identifier) { }
157     virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError&) { }
158     virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length) { return false; }
159 #endif
160     
161     virtual void dispatchDidHandleOnloadEvents() { }
162     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { }
163     virtual void dispatchDidCancelClientRedirect() { }
164     virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate) { }
165     virtual void dispatchDidChangeLocationWithinPage() { }
166     virtual void dispatchWillClose() { }
167     virtual void dispatchDidReceiveIcon() { }
168     virtual void dispatchDidStartProvisionalLoad() { }
169     virtual void dispatchDidReceiveTitle(const String& title) { }
170     virtual void dispatchDidCommitLoad() { }
171 #if PLATFORM(MAC)
172     virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { }
173     virtual void dispatchDidFailLoad(const ResourceError&) { }
174 #endif
175     virtual void dispatchDidFinishDocumentLoad() { }
176     virtual void dispatchDidFinishLoad() { }
177     virtual void dispatchDidFirstLayout() { }
178     
179 #if PLATFORM(MAC)
180     virtual Frame* dispatchCreatePage() { return 0; }
181 #endif
182     virtual void dispatchShow() { }
183     
184 #if PLATFORM(MAC)
185     virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction, const String& MIMEType, const ResourceRequest&) { }
186     virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, const String& frameName) { }
187     virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&) { }
188 #endif
189     virtual void cancelPolicyCheck() { }
190     
191 #if PLATFORM(MAC)
192     virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
193 #endif
194
195     virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) { }
196     
197     virtual void dispatchDidLoadMainResource(DocumentLoader*) { }
198     virtual void clearLoadingFromPageCache(DocumentLoader*) { }
199     virtual bool isLoadingFromPageCache(DocumentLoader*) { return 0; }
200     virtual void revertToProvisionalState(DocumentLoader*) { }
201 #if PLATFORM(MAC)
202     virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
203 #endif
204     virtual void clearUnarchivingState(DocumentLoader*) { }
205     
206     virtual void willChangeEstimatedProgress() { }
207     virtual void didChangeEstimatedProgress() { }
208     virtual void postProgressStartedNotification() { }
209     virtual void postProgressEstimateChangedNotification() { }
210     virtual void postProgressFinishedNotification() { }
211     
212     virtual void setMainFrameDocumentReady(bool) { }
213     
214 #if PLATFORM(MAC)
215     virtual void startDownload(const ResourceRequest&) { }
216 #endif
217     
218     virtual void willChangeTitle(DocumentLoader*) { }
219     virtual void didChangeTitle(DocumentLoader*) { }
220     
221 #if PLATFORM(MAC)
222     virtual void committedLoad(DocumentLoader*, const char*, int) { }
223 #endif
224     virtual void finishedLoading(DocumentLoader*) { }
225     virtual void finalSetupForReplace(DocumentLoader*) { }
226     
227 #if PLATFORM(MAC)
228     virtual ResourceError cancelledError(const ResourceRequest&) { return ResourceError(); }
229     virtual ResourceError cannotShowURLError(const ResourceRequest&) { return ResourceError(); }
230     virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&) { return ResourceError(); }
231     
232     virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) { return ResourceError(); }
233     virtual ResourceError fileDoesNotExistError(const ResourceResponse&) { return ResourceError(); }
234     
235     virtual bool shouldFallBack(const ResourceError&) { return false; }
236 #endif
237     
238     virtual void setDefersLoading(bool) { }
239     
240 #if PLATFORM(MAC)
241     virtual bool willUseArchive(ResourceLoader*, const ResourceRequest&, const KURL& originalURL) const { return false; }
242 #endif
243     virtual bool isArchiveLoadPending(ResourceLoader*) const { return false; }
244     virtual void cancelPendingArchiveLoad(ResourceLoader*) { }
245     virtual void clearArchivedResources() { }
246     
247     virtual bool canHandleRequest(const ResourceRequest&) const { return false; }
248     virtual bool canShowMIMEType(const String& MIMEType) const { return false; }
249     virtual bool representationExistsForURLScheme(const String& URLScheme) const { return false; }
250     virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const { return ""; }
251     
252     virtual void frameLoadCompleted() { }
253     virtual void restoreScrollPositionAndViewState() { }
254     virtual void provisionalLoadStarted() { }
255     virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const { return false; }
256     virtual void addHistoryItemForFragmentScroll() { }
257     virtual void didFinishLoad() { }
258     virtual void prepareForDataSourceReplacement() { }
259     
260 #if PLATFORM(MAC)
261     virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest& request) { return new DocumentLoader(request); }
262 #endif
263     virtual void setTitle(const String& title, const KURL&) { }
264     
265     virtual String userAgent() { return ""; }
266     
267     virtual void setDocumentViewFromPageCache(PageCache*) { }
268     virtual void updateGlobalHistoryForStandardLoad(const KURL&) { }
269     virtual void updateGlobalHistoryForReload(const KURL&) { }
270     virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; }
271     virtual void saveScrollPositionAndViewStateToItem(HistoryItem*) { }
272     virtual void saveDocumentViewToPageCache(PageCache*) { }
273     virtual bool canCachePage() const { return false; }
274
275 };
276
277 class SVGEmptyEditorClient : public EditorClient {
278 public:
279     virtual ~SVGEmptyEditorClient() { }
280     virtual void pageDestroyed() { }
281     
282     virtual bool shouldDeleteRange(Range*) { return false; }
283     virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; }
284     virtual bool smartInsertDeleteEnabled() { return false; } 
285     virtual bool isContinuousSpellCheckingEnabled() { return false; }
286     virtual void toggleContinuousSpellChecking() { }
287     virtual bool isGrammarCheckingEnabled() { return false; }
288     virtual void toggleGrammarChecking() { }
289     virtual int spellCheckerDocumentTag() { return -1; }
290     
291     virtual bool selectWordBeforeMenuEvent() { return false; }
292     virtual bool isEditable() { return false; }
293     
294     virtual bool shouldBeginEditing(Range*) { return false; }
295     virtual bool shouldEndEditing(Range*) { return false; }
296     virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) { return false; }
297     //  virtual bool shouldInsertNode(Node*, Range* replacingRange, WebViewInsertAction) { return false; }
298     virtual bool shouldInsertText(String, Range*, EditorInsertAction) { return false; }
299     //  virtual bool shouldChangeSelectedRange(Range* fromRange, Range* toRange, NSSelectionAffinity, bool stillSelecting) { return false; }
300     virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*) { return false; }
301     //  virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) { return false; }
302     //  virtual bool doCommandBySelector(SEL selector) { return false; }
303     //
304     virtual void didBeginEditing() { }
305     virtual void respondToChangedContents() { }
306     virtual void didEndEditing() { }
307     virtual void didWriteSelectionToPasteboard() { }
308     virtual void didSetSelectionTypesForPasteboard() { }
309     //  virtual void webViewDidChangeTypingStyle:(NSNotification *)notification { }
310     //  virtual void webViewDidChangeSelection:(NSNotification *)notification { }
311     //  virtual NSUndoManager* undoManagerForWebView:(WebView *)webView { return 0; }
312     
313     virtual void registerCommandForUndo(PassRefPtr<EditCommand>) { }
314     virtual void registerCommandForRedo(PassRefPtr<EditCommand>) { }
315     virtual void clearUndoRedoOperations() { }
316     
317     virtual bool canUndo() const { return false; }
318     virtual bool canRedo() const { return false; }
319     
320     virtual void undo() { }
321     virtual void redo() { }
322     
323 #if PLATFORM(MAC)
324     // FIXME: This should become SelectionController::toWebArchive()
325     virtual NSData* dataForArchivedSelection(Frame*) { return 0; } 
326     
327     virtual NSString* userVisibleString(NSURL*) { return 0; }
328 #ifdef BUILDING_ON_TIGER
329     virtual NSArray* pasteboardTypesForSelection(Frame*) { return 0; }
330 #endif
331 #endif
332   
333     
334 };
335
336 class SVGEmptyContextMenuClient : public ContextMenuClient {
337 public:
338     virtual ~SVGEmptyContextMenuClient() {  }
339     virtual void contextMenuDestroyed() { }
340     
341     virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; }
342     virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { }
343     
344     virtual void downloadURL(const KURL& url) { }
345     virtual void copyImageToClipboard(const HitTestResult&) { }
346     virtual void searchWithGoogle(const Frame*) { }
347     virtual void lookUpInDictionary(Frame*) { }
348     virtual void speak(const String&) { }
349     virtual void stopSpeaking() { }
350     
351 #if PLATFORM(MAC)
352     virtual void searchWithSpotlight() { }
353 #endif
354 };
355
356 class SVGEmptyDragClient : public DragClient {
357 public:
358     virtual ~SVGEmptyDragClient() {}
359     virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { }
360     virtual DragDestinationAction actionMaskForDrag(DragData*) { return DragDestinationActionNone; }
361     virtual void dragControllerDestroyed() { }
362 };
363     
364 }
365
366 #endif // SVG_SUPPORT
367
368 #endif // SVGImageEmptyClients_h
369