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 #if ENABLE(SVG)
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 #include "InspectorClient.h"
38 #include "SharedBuffer.h"
39 
40 /*
41  This file holds empty Client stubs for use by SVGImage.
42  SVGImage needs to create a dummy Page->Frame->FrameView tree for use in parsing an SVGDocument.
43  This tree depends heavily on Clients (usually provided by WebKit classes).
44 
45  SVGImage has no way to access the current Page (nor should it, since Images are not tied to a page).
46  See https://bugs.webkit.org/show_bug.cgi?id=5971 for more discussion on this issue.
47 
48  Ideally, whenever you change a Client class, you should add a stub here.
49  Brittle, yes.  Unfortunate, yes.  Hopefully temporary.
50 */
51 
52 namespace WebCore
53 {
54 
55 class SVGEmptyChromeClient : public ChromeClient
56 {
57 public:
~SVGEmptyChromeClient()58     virtual ~SVGEmptyChromeClient() { }
chromeDestroyed()59     virtual void chromeDestroyed() { }
60 
setWindowRect(const FloatRect &)61     virtual void setWindowRect(const FloatRect &) { }
windowRect()62     virtual FloatRect windowRect()
63     {
64         return FloatRect();
65     }
66 
pageRect()67     virtual FloatRect pageRect()
68     {
69         return FloatRect();
70     }
71 
scaleFactor()72     virtual float scaleFactor()
73     {
74         return 1.f;
75     }
76 
focus()77     virtual void focus() { }
unfocus()78     virtual void unfocus() { }
79 
canTakeFocus(FocusDirection)80     virtual bool canTakeFocus(FocusDirection)
81     {
82         return false;
83     }
takeFocus(FocusDirection)84     virtual void takeFocus(FocusDirection) { }
85 
createWindow(Frame *,const FrameLoadRequest &,const WindowFeatures &)86     virtual Page *createWindow(Frame *, const FrameLoadRequest &, const WindowFeatures &)
87     {
88         return 0;
89     }
show()90     virtual void show() { }
91 
canRunModal()92     virtual bool canRunModal()
93     {
94         return false;
95     }
runModal()96     virtual void runModal() { }
97 
setToolbarsVisible(bool)98     virtual void setToolbarsVisible(bool) { }
toolbarsVisible()99     virtual bool toolbarsVisible()
100     {
101         return false;
102     }
103 
setStatusbarVisible(bool)104     virtual void setStatusbarVisible(bool) { }
statusbarVisible()105     virtual bool statusbarVisible()
106     {
107         return false;
108     }
109 
setScrollbarsVisible(bool)110     virtual void setScrollbarsVisible(bool) { }
scrollbarsVisible()111     virtual bool scrollbarsVisible()
112     {
113         return false;
114     }
115 
setMenubarVisible(bool)116     virtual void setMenubarVisible(bool) { }
menubarVisible()117     virtual bool menubarVisible()
118     {
119         return false;
120     }
121 
setResizable(bool)122     virtual void setResizable(bool) { }
123 
addMessageToConsole(const String & message,unsigned int lineNumber,const String & sourceID)124     virtual void addMessageToConsole(const String &message, unsigned int lineNumber, const String &sourceID) { }
125 
canRunBeforeUnloadConfirmPanel()126     virtual bool canRunBeforeUnloadConfirmPanel()
127     {
128         return false;
129     }
runBeforeUnloadConfirmPanel(const String & message,Frame * frame)130     virtual bool runBeforeUnloadConfirmPanel(const String &message, Frame *frame)
131     {
132         return true;
133     }
134 
closeWindowSoon()135     virtual void closeWindowSoon() { }
136 
runJavaScriptAlert(Frame *,const String &)137     virtual void runJavaScriptAlert(Frame *, const String &) { }
runJavaScriptConfirm(Frame *,const String &)138     virtual bool runJavaScriptConfirm(Frame *, const String &)
139     {
140         return false;
141     }
runJavaScriptPrompt(Frame *,const String & message,const String & defaultValue,String & result)142     virtual bool runJavaScriptPrompt(Frame *, const String &message, const String &defaultValue, String &result)
143     {
144         return false;
145     }
shouldInterruptJavaScript()146     virtual bool shouldInterruptJavaScript()
147     {
148         return false;
149     }
150 
setStatusbarText(const String &)151     virtual void setStatusbarText(const String &) { }
152 
tabsToLinks()153     virtual bool tabsToLinks() const
154     {
155         return false;
156     }
157 
windowResizerRect()158     virtual IntRect windowResizerRect() const
159     {
160         return IntRect();
161     }
addToDirtyRegion(const IntRect &)162     virtual void addToDirtyRegion(const IntRect &) { }
scrollBackingStore(int dx,int dy,const IntRect & scrollViewRect,const IntRect & clipRect)163     virtual void scrollBackingStore(int dx, int dy, const IntRect &scrollViewRect, const IntRect &clipRect) { }
updateBackingStore()164     virtual void updateBackingStore() { }
165 
mouseDidMoveOverElement(const HitTestResult &,unsigned modifierFlags)166     virtual void mouseDidMoveOverElement(const HitTestResult &, unsigned modifierFlags) { }
167 
setToolTip(const String &)168     virtual void setToolTip(const String &) { }
169 
print(Frame *)170     virtual void print(Frame *) { }
171 
exceededDatabaseQuota(Frame *,const String &)172     virtual void exceededDatabaseQuota(Frame *, const String &) { }
173 };
174 
175 class SVGEmptyFrameLoaderClient : public FrameLoaderClient
176 {
177 public:
~SVGEmptyFrameLoaderClient()178     virtual ~SVGEmptyFrameLoaderClient() {  }
frameLoaderDestroyed()179     virtual void frameLoaderDestroyed() { }
180 
hasWebView()181     virtual bool hasWebView() const
182     {
183         return true;    // mainly for assertions
184     }
hasFrameView()185     virtual bool hasFrameView() const
186     {
187         return true;    // ditto
188     }
189 
makeRepresentation(DocumentLoader *)190     virtual void makeRepresentation(DocumentLoader *) { }
forceLayout()191     virtual void forceLayout() { }
forceLayoutForNonHTML()192     virtual void forceLayoutForNonHTML() { }
193 
updateHistoryForCommit()194     virtual void updateHistoryForCommit() { }
195 
updateHistoryForBackForwardNavigation()196     virtual void updateHistoryForBackForwardNavigation() { }
updateHistoryForReload()197     virtual void updateHistoryForReload() { }
updateHistoryForStandardLoad()198     virtual void updateHistoryForStandardLoad() { }
updateHistoryForInternalLoad()199     virtual void updateHistoryForInternalLoad() { }
200 
updateHistoryAfterClientRedirect()201     virtual void updateHistoryAfterClientRedirect() { }
202 
setCopiesOnScroll()203     virtual void setCopiesOnScroll() { }
204 
detachedFromParent2()205     virtual void detachedFromParent2() { }
detachedFromParent3()206     virtual void detachedFromParent3() { }
detachedFromParent4()207     virtual void detachedFromParent4() { }
208 
download(ResourceHandle *,const ResourceRequest &,const ResourceRequest &,const ResourceResponse &)209     virtual void download(ResourceHandle *, const ResourceRequest &, const ResourceRequest &, const ResourceResponse &) { }
210 
assignIdentifierToInitialRequest(unsigned long identifier,DocumentLoader *,const ResourceRequest &)211     virtual void assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader *, const ResourceRequest &) { }
dispatchWillSendRequest(DocumentLoader *,unsigned long identifier,ResourceRequest &,const ResourceResponse & redirectResponse)212     virtual void dispatchWillSendRequest(DocumentLoader *, unsigned long identifier, ResourceRequest &, const ResourceResponse &redirectResponse) { }
dispatchDidReceiveAuthenticationChallenge(DocumentLoader *,unsigned long identifier,const AuthenticationChallenge &)213     virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader *, unsigned long identifier, const AuthenticationChallenge &) { }
dispatchDidCancelAuthenticationChallenge(DocumentLoader *,unsigned long identifier,const AuthenticationChallenge &)214     virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader *, unsigned long identifier, const AuthenticationChallenge &) { }
dispatchDidReceiveResponse(DocumentLoader *,unsigned long identifier,const ResourceResponse &)215     virtual void dispatchDidReceiveResponse(DocumentLoader *, unsigned long identifier, const ResourceResponse &) { }
dispatchDidReceiveContentLength(DocumentLoader *,unsigned long identifier,int lengthReceived)216     virtual void dispatchDidReceiveContentLength(DocumentLoader *, unsigned long identifier, int lengthReceived) { }
dispatchDidFinishLoading(DocumentLoader *,unsigned long identifier)217     virtual void dispatchDidFinishLoading(DocumentLoader *, unsigned long identifier) { }
dispatchDidFailLoading(DocumentLoader *,unsigned long identifier,const ResourceError &)218     virtual void dispatchDidFailLoading(DocumentLoader *, unsigned long identifier, const ResourceError &) { }
dispatchDidLoadResourceFromMemoryCache(DocumentLoader *,const ResourceRequest &,const ResourceResponse &,int length)219     virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader *, const ResourceRequest &, const ResourceResponse &, int length)
220     {
221         return false;
222     }
223 
dispatchDidHandleOnloadEvents()224     virtual void dispatchDidHandleOnloadEvents() { }
dispatchDidReceiveServerRedirectForProvisionalLoad()225     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { }
dispatchDidCancelClientRedirect()226     virtual void dispatchDidCancelClientRedirect() { }
dispatchWillPerformClientRedirect(const KURL &,double interval,double fireDate)227     virtual void dispatchWillPerformClientRedirect(const KURL &, double interval, double fireDate) { }
dispatchDidChangeLocationWithinPage()228     virtual void dispatchDidChangeLocationWithinPage() { }
dispatchWillClose()229     virtual void dispatchWillClose() { }
dispatchDidReceiveIcon()230     virtual void dispatchDidReceiveIcon() { }
dispatchDidStartProvisionalLoad()231     virtual void dispatchDidStartProvisionalLoad() { }
dispatchDidReceiveTitle(const String & title)232     virtual void dispatchDidReceiveTitle(const String &title) { }
dispatchDidCommitLoad()233     virtual void dispatchDidCommitLoad() { }
dispatchDidFailProvisionalLoad(const ResourceError &)234     virtual void dispatchDidFailProvisionalLoad(const ResourceError &) { }
dispatchDidFailLoad(const ResourceError &)235     virtual void dispatchDidFailLoad(const ResourceError &) { }
dispatchDidFinishDocumentLoad()236     virtual void dispatchDidFinishDocumentLoad() { }
dispatchDidFinishLoad()237     virtual void dispatchDidFinishLoad() { }
dispatchDidFirstLayout()238     virtual void dispatchDidFirstLayout() { }
239 
dispatchCreatePage()240     virtual Frame *dispatchCreatePage()
241     {
242         return 0;
243     }
dispatchShow()244     virtual void dispatchShow() { }
245 
dispatchDecidePolicyForMIMEType(FramePolicyFunction,const String & MIMEType,const ResourceRequest &)246     virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction, const String &MIMEType, const ResourceRequest &) { }
dispatchDecidePolicyForNewWindowAction(FramePolicyFunction,const NavigationAction &,const ResourceRequest &,const String & frameName)247     virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction &, const ResourceRequest &, const String &frameName) { }
dispatchDecidePolicyForNavigationAction(FramePolicyFunction,const NavigationAction &,const ResourceRequest &)248     virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction &, const ResourceRequest &) { }
cancelPolicyCheck()249     virtual void cancelPolicyCheck() { }
250 
dispatchUnableToImplementPolicy(const ResourceError &)251     virtual void dispatchUnableToImplementPolicy(const ResourceError &) { }
252 
dispatchWillSubmitForm(FramePolicyFunction,PassRefPtr<FormState>)253     virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) { }
254 
dispatchDidLoadMainResource(DocumentLoader *)255     virtual void dispatchDidLoadMainResource(DocumentLoader *) { }
revertToProvisionalState(DocumentLoader *)256     virtual void revertToProvisionalState(DocumentLoader *) { }
setMainDocumentError(DocumentLoader *,const ResourceError &)257     virtual void setMainDocumentError(DocumentLoader *, const ResourceError &) { }
258 
willChangeEstimatedProgress()259     virtual void willChangeEstimatedProgress() { }
didChangeEstimatedProgress()260     virtual void didChangeEstimatedProgress() { }
postProgressStartedNotification()261     virtual void postProgressStartedNotification() { }
postProgressEstimateChangedNotification()262     virtual void postProgressEstimateChangedNotification() { }
postProgressFinishedNotification()263     virtual void postProgressFinishedNotification() { }
264 
setMainFrameDocumentReady(bool)265     virtual void setMainFrameDocumentReady(bool) { }
266 
startDownload(const ResourceRequest &)267     virtual void startDownload(const ResourceRequest &) { }
268 
willChangeTitle(DocumentLoader *)269     virtual void willChangeTitle(DocumentLoader *) { }
didChangeTitle(DocumentLoader *)270     virtual void didChangeTitle(DocumentLoader *) { }
271 
committedLoad(DocumentLoader *,const char *,int)272     virtual void committedLoad(DocumentLoader *, const char *, int) { }
finishedLoading(DocumentLoader *)273     virtual void finishedLoading(DocumentLoader *) { }
274 
cancelledError(const ResourceRequest &)275     virtual ResourceError cancelledError(const ResourceRequest &)
276     {
277         return ResourceError();
278     }
blockedError(const ResourceRequest &)279     virtual ResourceError blockedError(const ResourceRequest &)
280     {
281         return ResourceError();
282     }
cannotShowURLError(const ResourceRequest &)283     virtual ResourceError cannotShowURLError(const ResourceRequest &)
284     {
285         return ResourceError();
286     }
interruptForPolicyChangeError(const ResourceRequest &)287     virtual ResourceError interruptForPolicyChangeError(const ResourceRequest &)
288     {
289         return ResourceError();
290     }
291 
cannotShowMIMETypeError(const ResourceResponse &)292     virtual ResourceError cannotShowMIMETypeError(const ResourceResponse &)
293     {
294         return ResourceError();
295     }
fileDoesNotExistError(const ResourceResponse &)296     virtual ResourceError fileDoesNotExistError(const ResourceResponse &)
297     {
298         return ResourceError();
299     }
300 
shouldFallBack(const ResourceError &)301     virtual bool shouldFallBack(const ResourceError &)
302     {
303         return false;
304     }
305 
canHandleRequest(const ResourceRequest &)306     virtual bool canHandleRequest(const ResourceRequest &) const
307     {
308         return false;
309     }
canShowMIMEType(const String & MIMEType)310     virtual bool canShowMIMEType(const String &MIMEType) const
311     {
312         return false;
313     }
representationExistsForURLScheme(const String & URLScheme)314     virtual bool representationExistsForURLScheme(const String &URLScheme) const
315     {
316         return false;
317     }
generatedMIMETypeForURLScheme(const String & URLScheme)318     virtual String generatedMIMETypeForURLScheme(const String &URLScheme) const
319     {
320         return "";
321     }
322 
frameLoadCompleted()323     virtual void frameLoadCompleted() { }
restoreViewState()324     virtual void restoreViewState() { }
provisionalLoadStarted()325     virtual void provisionalLoadStarted() { }
shouldTreatURLAsSameAsCurrent(const KURL &)326     virtual bool shouldTreatURLAsSameAsCurrent(const KURL &) const
327     {
328         return false;
329     }
addHistoryItemForFragmentScroll()330     virtual void addHistoryItemForFragmentScroll() { }
didFinishLoad()331     virtual void didFinishLoad() { }
prepareForDataSourceReplacement()332     virtual void prepareForDataSourceReplacement() { }
333 
createDocumentLoader(const ResourceRequest & request,const SubstituteData & substituteData)334     virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest &request, const SubstituteData &substituteData)
335     {
336         return new DocumentLoader(request, substituteData);
337     }
setTitle(const String & title,const KURL &)338     virtual void setTitle(const String &title, const KURL &) { }
339 
userAgent(const KURL &)340     virtual String userAgent(const KURL &)
341     {
342         return "";
343     }
344 
savePlatformDataToCachedPage(CachedPage *)345     virtual void savePlatformDataToCachedPage(CachedPage *) { }
transitionToCommittedFromCachedPage(CachedPage *)346     virtual void transitionToCommittedFromCachedPage(CachedPage *) { }
transitionToCommittedForNewPage()347     virtual void transitionToCommittedForNewPage() { }
348 
updateGlobalHistory(const KURL &)349     virtual void updateGlobalHistory(const KURL &) { }
shouldGoToHistoryItem(HistoryItem *)350     virtual bool shouldGoToHistoryItem(HistoryItem *) const
351     {
352         return false;
353     }
saveViewStateToItem(HistoryItem *)354     virtual void saveViewStateToItem(HistoryItem *) { }
canCachePage()355     virtual bool canCachePage() const
356     {
357         return false;
358     }
359 
createFrame(const KURL & url,const String & name,HTMLFrameOwnerElement * ownerElement,const String & referrer,bool allowsScrolling,int marginWidth,int marginHeight)360     virtual PassRefPtr<Frame> createFrame(const KURL &url, const String &name, HTMLFrameOwnerElement *ownerElement,
361                                           const String &referrer, bool allowsScrolling, int marginWidth, int marginHeight)
362     {
363         return 0;
364     }
createPlugin(const IntSize &,Element *,const KURL &,const Vector<String> &,const Vector<String> &,const String &,bool)365     virtual Widget *createPlugin(const IntSize &, Element *, const KURL &, const Vector<String> &, const Vector<String> &, const String &, bool)
366     {
367         return 0;
368     }
createJavaAppletWidget(const IntSize &,Element *,const KURL &,const Vector<String> &,const Vector<String> &)369     virtual Widget *createJavaAppletWidget(const IntSize &, Element *, const KURL &, const Vector<String> &, const Vector<String> &)
370     {
371         return 0;
372     }
373 
objectContentType(const KURL & url,const String & mimeType)374     virtual ObjectContentType objectContentType(const KURL &url, const String &mimeType)
375     {
376         return ObjectContentType();
377     }
overrideMediaType()378     virtual String overrideMediaType() const
379     {
380         return String();
381     }
382 
redirectDataToPlugin(Widget *)383     virtual void redirectDataToPlugin(Widget *) {}
windowObjectCleared()384     virtual void windowObjectCleared() {}
didPerformFirstNavigation()385     virtual void didPerformFirstNavigation() const {}
386 
registerForIconNotification(bool listen)387     virtual void registerForIconNotification(bool listen) {}
388 
389 #if PLATFORM(MAC)
willCacheResponse(DocumentLoader *,unsigned long identifier,NSCachedURLResponse * response)390     virtual NSCachedURLResponse *willCacheResponse(DocumentLoader *, unsigned long identifier, NSCachedURLResponse *response) const
391     {
392         return response;
393     }
394 #endif
395 
396 };
397 
398 class SVGEmptyEditorClient : public EditorClient
399 {
400 public:
~SVGEmptyEditorClient()401     virtual ~SVGEmptyEditorClient() { }
pageDestroyed()402     virtual void pageDestroyed() { }
403 
shouldDeleteRange(Range *)404     virtual bool shouldDeleteRange(Range *)
405     {
406         return false;
407     }
shouldShowDeleteInterface(HTMLElement *)408     virtual bool shouldShowDeleteInterface(HTMLElement *)
409     {
410         return false;
411     }
smartInsertDeleteEnabled()412     virtual bool smartInsertDeleteEnabled()
413     {
414         return false;
415     }
isContinuousSpellCheckingEnabled()416     virtual bool isContinuousSpellCheckingEnabled()
417     {
418         return false;
419     }
toggleContinuousSpellChecking()420     virtual void toggleContinuousSpellChecking() { }
isGrammarCheckingEnabled()421     virtual bool isGrammarCheckingEnabled()
422     {
423         return false;
424     }
toggleGrammarChecking()425     virtual void toggleGrammarChecking() { }
spellCheckerDocumentTag()426     virtual int spellCheckerDocumentTag()
427     {
428         return -1;
429     }
430 
selectWordBeforeMenuEvent()431     virtual bool selectWordBeforeMenuEvent()
432     {
433         return false;
434     }
isEditable()435     virtual bool isEditable()
436     {
437         return false;
438     }
439 
shouldBeginEditing(Range *)440     virtual bool shouldBeginEditing(Range *)
441     {
442         return false;
443     }
shouldEndEditing(Range *)444     virtual bool shouldEndEditing(Range *)
445     {
446         return false;
447     }
shouldInsertNode(Node *,Range *,EditorInsertAction)448     virtual bool shouldInsertNode(Node *, Range *, EditorInsertAction)
449     {
450         return false;
451     }
452     //  virtual bool shouldInsertNode(Node*, Range* replacingRange, WebViewInsertAction) { return false; }
shouldInsertText(const String &,Range *,EditorInsertAction)453     virtual bool shouldInsertText(const String &, Range *, EditorInsertAction)
454     {
455         return false;
456     }
shouldChangeSelectedRange(Range * fromRange,Range * toRange,EAffinity,bool stillSelecting)457     virtual bool shouldChangeSelectedRange(Range *fromRange, Range *toRange, EAffinity, bool stillSelecting)
458     {
459         return false;
460     }
461 
shouldApplyStyle(CSSStyleDeclaration *,Range *)462     virtual bool shouldApplyStyle(CSSStyleDeclaration *, Range *)
463     {
464         return false;
465     }
shouldMoveRangeAfterDelete(Range *,Range *)466     virtual bool shouldMoveRangeAfterDelete(Range *, Range *)
467     {
468         return false;
469     }
470     //  virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) { return false; }
471     //  virtual bool doCommandBySelector(SEL selector) { return false; }
472     //
didBeginEditing()473     virtual void didBeginEditing() { }
respondToChangedContents()474     virtual void respondToChangedContents() { }
respondToChangedSelection()475     virtual void respondToChangedSelection() { }
didEndEditing()476     virtual void didEndEditing() { }
didWriteSelectionToPasteboard()477     virtual void didWriteSelectionToPasteboard() { }
didSetSelectionTypesForPasteboard()478     virtual void didSetSelectionTypesForPasteboard() { }
479     //  virtual void webViewDidChangeTypingStyle:(NSNotification *)notification { }
480     //  virtual void webViewDidChangeSelection:(NSNotification *)notification { }
481     //  virtual NSUndoManager* undoManagerForWebView:(WebView *)webView { return 0; }
482 
registerCommandForUndo(PassRefPtr<EditCommand>)483     virtual void registerCommandForUndo(PassRefPtr<EditCommand>) { }
registerCommandForRedo(PassRefPtr<EditCommand>)484     virtual void registerCommandForRedo(PassRefPtr<EditCommand>) { }
clearUndoRedoOperations()485     virtual void clearUndoRedoOperations() { }
486 
canUndo()487     virtual bool canUndo() const
488     {
489         return false;
490     }
canRedo()491     virtual bool canRedo() const
492     {
493         return false;
494     }
495 
undo()496     virtual void undo() { }
redo()497     virtual void redo() { }
498 
handleKeyboardEvent(KeyboardEvent *)499     virtual void handleKeyboardEvent(KeyboardEvent *) { }
handleInputMethodKeydown(KeyboardEvent *)500     virtual void handleInputMethodKeydown(KeyboardEvent *) { }
501 
textFieldDidBeginEditing(Element *)502     virtual void textFieldDidBeginEditing(Element *) { }
textFieldDidEndEditing(Element *)503     virtual void textFieldDidEndEditing(Element *) { }
textDidChangeInTextField(Element *)504     virtual void textDidChangeInTextField(Element *) { }
doTextFieldCommandFromEvent(Element *,KeyboardEvent *)505     virtual bool doTextFieldCommandFromEvent(Element *, KeyboardEvent *)
506     {
507         return false;
508     }
textWillBeDeletedInTextField(Element *)509     virtual void textWillBeDeletedInTextField(Element *) { }
textDidChangeInTextArea(Element *)510     virtual void textDidChangeInTextArea(Element *) { }
511 
512 #if PLATFORM(MAC)
markedTextAbandoned(Frame *)513     virtual void markedTextAbandoned(Frame *) { }
514 
userVisibleString(NSURL *)515     virtual NSString *userVisibleString(NSURL *)
516     {
517         return 0;
518     }
519 #ifdef BUILDING_ON_TIGER
pasteboardTypesForSelection(Frame *)520     virtual NSArray *pasteboardTypesForSelection(Frame *)
521     {
522         return 0;
523     }
524 #endif
525 #endif
ignoreWordInSpellDocument(const String &)526     virtual void ignoreWordInSpellDocument(const String &) { }
learnWord(const String &)527     virtual void learnWord(const String &) { }
checkSpellingOfString(const UChar *,int length,int * misspellingLocation,int * misspellingLength)528     virtual void checkSpellingOfString(const UChar *, int length, int *misspellingLocation, int *misspellingLength) { }
checkGrammarOfString(const UChar *,int length,Vector<GrammarDetail> &,int * badGrammarLocation,int * badGrammarLength)529     virtual void checkGrammarOfString(const UChar *, int length, Vector<GrammarDetail> &, int *badGrammarLocation, int *badGrammarLength) { }
updateSpellingUIWithGrammarString(const String &,const GrammarDetail &)530     virtual void updateSpellingUIWithGrammarString(const String &, const GrammarDetail &) { }
updateSpellingUIWithMisspelledWord(const String &)531     virtual void updateSpellingUIWithMisspelledWord(const String &) { }
showSpellingUI(bool show)532     virtual void showSpellingUI(bool show) { }
spellingUIIsShowing()533     virtual bool spellingUIIsShowing()
534     {
535         return false;
536     }
getGuessesForWord(const String &,Vector<String> & guesses)537     virtual void getGuessesForWord(const String &, Vector<String> &guesses) { }
setInputMethodState(bool enabled)538     virtual void setInputMethodState(bool enabled) { }
539 
540 };
541 
542 class SVGEmptyContextMenuClient : public ContextMenuClient
543 {
544 public:
~SVGEmptyContextMenuClient()545     virtual ~SVGEmptyContextMenuClient() {  }
contextMenuDestroyed()546     virtual void contextMenuDestroyed() { }
547 
getCustomMenuFromDefaultItems(ContextMenu *)548     virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu *)
549     {
550         return 0;
551     }
contextMenuItemSelected(ContextMenuItem *,const ContextMenu *)552     virtual void contextMenuItemSelected(ContextMenuItem *, const ContextMenu *) { }
553 
downloadURL(const KURL & url)554     virtual void downloadURL(const KURL &url) { }
copyImageToClipboard(const HitTestResult &)555     virtual void copyImageToClipboard(const HitTestResult &) { }
searchWithGoogle(const Frame *)556     virtual void searchWithGoogle(const Frame *) { }
lookUpInDictionary(Frame *)557     virtual void lookUpInDictionary(Frame *) { }
speak(const String &)558     virtual void speak(const String &) { }
stopSpeaking()559     virtual void stopSpeaking() { }
560 
561 #if PLATFORM(MAC)
searchWithSpotlight()562     virtual void searchWithSpotlight() { }
563 #endif
564 };
565 
566 class SVGEmptyDragClient : public DragClient
567 {
568 public:
~SVGEmptyDragClient()569     virtual ~SVGEmptyDragClient() {}
willPerformDragDestinationAction(DragDestinationAction,DragData *)570     virtual void willPerformDragDestinationAction(DragDestinationAction, DragData *) { }
willPerformDragSourceAction(DragSourceAction,const IntPoint &,Clipboard *)571     virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint &, Clipboard *) { }
actionMaskForDrag(DragData *)572     virtual DragDestinationAction actionMaskForDrag(DragData *)
573     {
574         return DragDestinationActionNone;
575     }
dragSourceActionMaskForPoint(const IntPoint &)576     virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint &)
577     {
578         return DragSourceActionNone;
579     }
startDrag(DragImageRef,const IntPoint &,const IntPoint &,Clipboard *,Frame *,bool)580     virtual void startDrag(DragImageRef, const IntPoint &, const IntPoint &, Clipboard *, Frame *, bool) { }
createDragImageForLink(KURL &,const String & label,Frame *)581     virtual DragImageRef createDragImageForLink(KURL &, const String &label, Frame *)
582     {
583         return 0;
584     }
dragControllerDestroyed()585     virtual void dragControllerDestroyed() { }
586 };
587 
588 class SVGEmptyInspectorClient : public InspectorClient
589 {
590 public:
~SVGEmptyInspectorClient()591     virtual ~SVGEmptyInspectorClient() {}
592 
inspectorDestroyed()593     virtual void inspectorDestroyed() {};
594 
createPage()595     virtual Page *createPage()
596     {
597         return 0;
598     };
599 
localizedStringsURL()600     virtual String localizedStringsURL()
601     {
602         return String();
603     };
604 
showWindow()605     virtual void showWindow() {};
closeWindow()606     virtual void closeWindow() {};
607 
attachWindow()608     virtual void attachWindow() {};
detachWindow()609     virtual void detachWindow() {};
610 
highlight(Node *)611     virtual void highlight(Node *) {};
hideHighlight()612     virtual void hideHighlight() {};
inspectedURLChanged(const String & newURL)613     virtual void inspectedURLChanged(const String &newURL) {};
614 };
615 
616 }
617 
618 #endif // ENABLE(SVG)
619 
620 #endif // SVGImageEmptyClients_h
621 
622