OSDN Git Service

AI 145053: add SVG to the browser [disabled by default]
[android-x86/external-webkit.git] / WebCore / loader / EmptyClients.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 EmptyClients_h
27 #define EmptyClients_h
28
29 #include "ChromeClient.h"
30 #include "ContextMenuClient.h"
31 #include "DragClient.h"
32 #include "DocumentLoader.h"
33 #include "EditCommand.h"
34 #include "EditorClient.h"
35 #include "FocusDirection.h"
36 #include "FloatRect.h"
37 #include "FrameLoaderClient.h"
38 #include "InspectorClient.h"
39 #include "ResourceError.h"
40 #include "SharedBuffer.h"
41
42 /*
43  This file holds empty Client stubs for use by WebCore.
44  Viewless element needs to create a dummy Page->Frame->FrameView tree for use in parsing or executing JavaScript.
45  This tree depends heavily on Clients (usually provided by WebKit classes).
46
47  This file was first created for SVGImage as it had no way to access the current Page (nor should it,
48  since Images are not tied to a page).
49  See http://bugs.webkit.org/show_bug.cgi?id=5971 for the original discussion about this file.
50
51  Ideally, whenever you change a Client class, you should add a stub here.
52  Brittle, yes.  Unfortunate, yes.  Hopefully temporary.
53 */
54
55 namespace WebCore {
56
57 class EmptyChromeClient : public ChromeClient {
58 public:
59     virtual ~EmptyChromeClient() { }
60     virtual void chromeDestroyed() { }
61
62     virtual void setWindowRect(const FloatRect&) { }
63     virtual FloatRect windowRect() { return FloatRect(); }
64
65     virtual FloatRect pageRect() { return FloatRect(); }
66
67     virtual float scaleFactor() { return 1.f; }
68
69     virtual void focus() { }
70     virtual void unfocus() { }
71
72     virtual bool canTakeFocus(FocusDirection) { return false; }
73     virtual void takeFocus(FocusDirection) { }
74
75     virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&) { return 0; }
76     virtual void show() { }
77
78     virtual bool canRunModal() { return false; }
79     virtual void runModal() { }
80
81     virtual void setToolbarsVisible(bool) { }
82     virtual bool toolbarsVisible() { return false; }
83
84     virtual void setStatusbarVisible(bool) { }
85     virtual bool statusbarVisible() { return false; }
86
87     virtual void setScrollbarsVisible(bool) { }
88     virtual bool scrollbarsVisible() { return false; }
89
90     virtual void setMenubarVisible(bool) { }
91     virtual bool menubarVisible() { return false; }
92
93     virtual void setResizable(bool) { }
94
95     virtual void addMessageToConsole(const String&, unsigned, const String&) { }
96
97     virtual bool canRunBeforeUnloadConfirmPanel() { return false; }
98     virtual bool runBeforeUnloadConfirmPanel(const String&, Frame*) { return true; }
99
100     virtual void closeWindowSoon() { }
101
102     virtual void runJavaScriptAlert(Frame*, const String&) { }
103     virtual bool runJavaScriptConfirm(Frame*, const String&) { return false; }
104     virtual bool runJavaScriptPrompt(Frame*, const String&, const String&, String&) { return false; }
105     virtual bool shouldInterruptJavaScript() { return false; }
106
107     virtual void setStatusbarText(const String&) { }
108
109     virtual bool tabsToLinks() const { return false; }
110
111     virtual IntRect windowResizerRect() const { return IntRect(); }
112     virtual void addToDirtyRegion(const IntRect&) { }
113     virtual void scrollBackingStore(int, int, const IntRect&, const IntRect&) { }
114     virtual void updateBackingStore() { }
115
116     virtual void repaint(const IntRect&, bool, bool, bool) { }
117     virtual void scroll(const IntSize&, const IntRect&, const IntRect&) { }
118     virtual IntPoint screenToWindow(const IntPoint& p) const { return p; }
119     virtual IntRect windowToScreen(const IntRect& r) const { return r; }
120     virtual PlatformWidget platformWindow() const { return 0; }
121     virtual void contentsSizeChanged(Frame*, const IntSize&) const { }
122
123     virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) { }
124
125     virtual void setToolTip(const String&) { }
126
127     virtual void print(Frame*) { }
128
129     virtual void exceededDatabaseQuota(Frame*, const String&) { }
130
131     virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) { }
132
133     virtual void formStateDidChange(const Node*) { }
134 };
135
136 class EmptyFrameLoaderClient : public FrameLoaderClient {
137 public:
138     virtual ~EmptyFrameLoaderClient() {  }
139     virtual void frameLoaderDestroyed() { }
140
141     virtual bool hasWebView() const { return true; } // mainly for assertions
142
143     virtual void makeRepresentation(DocumentLoader*) { }
144     virtual void forceLayout() { }
145     virtual void forceLayoutForNonHTML() { }
146
147     virtual void setCopiesOnScroll() { }
148
149     virtual void detachedFromParent2() { }
150     virtual void detachedFromParent3() { }
151
152     virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&) { }
153
154     virtual void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) { }
155     virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) { return false; }
156     virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) { }
157     virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
158     virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
159     virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) { }
160     virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) { }
161     virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) { }
162     virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) { }
163     virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) { return false; }
164
165     virtual void dispatchDidHandleOnloadEvents() { }
166     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { }
167     virtual void dispatchDidCancelClientRedirect() { }
168     virtual void dispatchWillPerformClientRedirect(const KURL&, double, double) { }
169     virtual void dispatchDidChangeLocationWithinPage() { }
170     virtual void dispatchWillClose() { }
171     virtual void dispatchDidReceiveIcon() { }
172     virtual void dispatchDidStartProvisionalLoad() { }
173     virtual void dispatchDidReceiveTitle(const String&) { }
174     virtual void dispatchDidCommitLoad() { }
175     virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { }
176     virtual void dispatchDidFailLoad(const ResourceError&) { }
177     virtual void dispatchDidFinishDocumentLoad() { }
178     virtual void dispatchDidFinishLoad() { }
179     virtual void dispatchDidFirstLayout() { }
180     virtual void dispatchDidFirstVisuallyNonEmptyLayout() { }
181
182     virtual Frame* dispatchCreatePage() { return 0; }
183     virtual void dispatchShow() { }
184
185     virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction, const String&, const ResourceRequest&) { }
186     virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) { }
187     virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) { }
188     virtual void cancelPolicyCheck() { }
189
190     virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
191
192     virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) { }
193
194     virtual void dispatchDidLoadMainResource(DocumentLoader*) { }
195     virtual void revertToProvisionalState(DocumentLoader*) { }
196     virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
197
198     virtual void willChangeEstimatedProgress() { }
199     virtual void didChangeEstimatedProgress() { }
200     virtual void postProgressStartedNotification() { }
201     virtual void postProgressEstimateChangedNotification() { }
202     virtual void postProgressFinishedNotification() { }
203
204     virtual void setMainFrameDocumentReady(bool) { }
205
206     virtual void startDownload(const ResourceRequest&) { }
207
208     virtual void willChangeTitle(DocumentLoader*) { }
209     virtual void didChangeTitle(DocumentLoader*) { }
210
211     virtual void committedLoad(DocumentLoader*, const char*, int) { }
212     virtual void finishedLoading(DocumentLoader*) { }
213
214     virtual ResourceError cancelledError(const ResourceRequest&) { return ResourceError(); }
215     virtual ResourceError blockedError(const ResourceRequest&) { return ResourceError(); }
216     virtual ResourceError cannotShowURLError(const ResourceRequest&) { return ResourceError(); }
217     virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&) { return ResourceError(); }
218
219     virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) { return ResourceError(); }
220     virtual ResourceError fileDoesNotExistError(const ResourceResponse&) { return ResourceError(); }
221     virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) { return ResourceError(); }
222
223     virtual bool shouldFallBack(const ResourceError&) { return false; }
224
225     virtual bool canHandleRequest(const ResourceRequest&) const { return false; }
226     virtual bool canShowMIMEType(const String&) const { return false; }
227     virtual bool representationExistsForURLScheme(const String&) const { return false; }
228     virtual String generatedMIMETypeForURLScheme(const String&) const { return ""; }
229
230     virtual void frameLoadCompleted() { }
231     virtual void restoreViewState() { }
232     virtual void provisionalLoadStarted() { }
233     virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const { return false; }
234     virtual void didFinishLoad() { }
235     virtual void prepareForDataSourceReplacement() { }
236
237     virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) { return DocumentLoader::create(request, substituteData); }
238     virtual void setTitle(const String&, const KURL&) { }
239
240     virtual String userAgent(const KURL&) { return ""; }
241
242     virtual void savePlatformDataToCachedFrame(CachedFrame*) { }
243     virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { }
244     virtual void transitionToCommittedForNewPage() { }    
245
246     virtual void updateGlobalHistory() { }
247     virtual void updateGlobalHistoryForRedirectWithoutHistoryItem() { }
248     virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; }
249 #ifdef ANDROID_HISTORY_CLIENT
250     virtual void dispatchDidAddHistoryItem(HistoryItem*) const {}
251     virtual void dispatchDidRemoveHistoryItem(HistoryItem*, int) const {}
252     virtual void dispatchDidChangeHistoryIndex(BackForwardList*) const {}
253 #endif
254     virtual void saveViewStateToItem(HistoryItem*) { }
255     virtual bool canCachePage() const { return false; }
256
257     virtual PassRefPtr<Frame> createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) { return 0; }
258     virtual Widget* createPlugin(const IntSize&, Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool) { return 0; }
259     virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const KURL&, const Vector<String>&, const Vector<String>&) { return 0; }
260
261     virtual ObjectContentType objectContentType(const KURL&, const String&) { return ObjectContentType(); }
262     virtual String overrideMediaType() const { return String(); }
263
264     virtual void redirectDataToPlugin(Widget*) { }
265     virtual void windowObjectCleared() { }
266     virtual void didPerformFirstNavigation() const { }
267
268     virtual void registerForIconNotification(bool) { }
269
270 #if PLATFORM(MAC)
271     virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; }
272 #endif
273
274 };
275
276 class EmptyEditorClient : public EditorClient {
277 public:
278     virtual ~EmptyEditorClient() { }
279     virtual void pageDestroyed() { }
280
281     virtual bool shouldDeleteRange(Range*) { return false; }
282     virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; }
283     virtual bool smartInsertDeleteEnabled() { return false; }
284     virtual bool isSelectTrailingWhitespaceEnabled() { 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(const String&, Range*, EditorInsertAction) { return false; }
299     virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) { return false; }
300
301     virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*) { return false; }
302     virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; }
303     //  virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) { return false; }
304     //  virtual bool doCommandBySelector(SEL selector) { return false; }
305     //
306     virtual void didBeginEditing() { }
307     virtual void respondToChangedContents() { }
308     virtual void respondToChangedSelection() { }
309     virtual void didEndEditing() { }
310     virtual void didWriteSelectionToPasteboard() { }
311     virtual void didSetSelectionTypesForPasteboard() { }
312     //  virtual void webViewDidChangeTypingStyle:(NSNotification *)notification { }
313     //  virtual void webViewDidChangeSelection:(NSNotification *)notification { }
314     //  virtual NSUndoManager* undoManagerForWebView:(WebView *)webView { return 0; }
315
316     virtual void registerCommandForUndo(PassRefPtr<EditCommand>) { }
317     virtual void registerCommandForRedo(PassRefPtr<EditCommand>) { }
318     virtual void clearUndoRedoOperations() { }
319
320     virtual bool canUndo() const { return false; }
321     virtual bool canRedo() const { return false; }
322
323     virtual void undo() { }
324     virtual void redo() { }
325
326     virtual void handleKeyboardEvent(KeyboardEvent*) { }
327     virtual void handleInputMethodKeydown(KeyboardEvent*) { }
328
329     virtual void textFieldDidBeginEditing(Element*) { }
330     virtual void textFieldDidEndEditing(Element*) { }
331     virtual void textDidChangeInTextField(Element*) { }
332     virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) { return false; }
333     virtual void textWillBeDeletedInTextField(Element*) { }
334     virtual void textDidChangeInTextArea(Element*) { }
335
336 #if PLATFORM(MAC)
337     virtual void markedTextAbandoned(Frame*) { }
338
339     virtual NSString* userVisibleString(NSURL*) { return 0; }
340 #ifdef BUILDING_ON_TIGER
341     virtual NSArray* pasteboardTypesForSelection(Frame*) { return 0; }
342 #endif
343 #endif
344     virtual void ignoreWordInSpellDocument(const String&) { }
345     virtual void learnWord(const String&) { }
346     virtual void checkSpellingOfString(const UChar*, int, int*, int*) { }
347     virtual void checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) { }
348     virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) { }
349     virtual void updateSpellingUIWithMisspelledWord(const String&) { }
350     virtual void showSpellingUI(bool) { }
351     virtual bool spellingUIIsShowing() { return false; }
352     virtual void getGuessesForWord(const String&, Vector<String>&) { }
353     virtual void setInputMethodState(bool) { }
354
355
356 };
357
358 class EmptyContextMenuClient : public ContextMenuClient {
359 public:
360     virtual ~EmptyContextMenuClient() {  }
361     virtual void contextMenuDestroyed() { }
362
363     virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; }
364     virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { }
365
366     virtual void downloadURL(const KURL&) { }
367     virtual void copyImageToClipboard(const HitTestResult&) { }
368     virtual void searchWithGoogle(const Frame*) { }
369     virtual void lookUpInDictionary(Frame*) { }
370     virtual void speak(const String&) { }
371     virtual void stopSpeaking() { }
372
373 #if PLATFORM(MAC)
374     virtual void searchWithSpotlight() { }
375 #endif
376 };
377
378 class EmptyDragClient : public DragClient {
379 public:
380     virtual ~EmptyDragClient() {}
381     virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { }
382     virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) { }
383     virtual DragDestinationAction actionMaskForDrag(DragData*) { return DragDestinationActionNone; }
384     virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) { return DragSourceActionNone; }
385     virtual void startDrag(DragImageRef, const IntPoint&, const IntPoint&, Clipboard*, Frame*, bool) { }
386     virtual DragImageRef createDragImageForLink(KURL&, const String&, Frame*) { return 0; }
387     virtual void dragControllerDestroyed() { }
388 };
389
390 class EmptyInspectorClient : public InspectorClient {
391 public:
392     virtual ~EmptyInspectorClient() { }
393
394     virtual void inspectorDestroyed() { }
395
396     virtual Page* createPage() { return 0; };
397
398     virtual String localizedStringsURL() { return String(); }
399
400     virtual void showWindow() { }
401     virtual void closeWindow() { }
402
403     virtual void attachWindow() { }
404     virtual void detachWindow() { }
405
406     virtual void setAttachedWindowHeight(unsigned) { }
407
408     virtual void highlight(Node*) { }
409     virtual void hideHighlight() { }
410     virtual void inspectedURLChanged(const String&) { }
411
412     virtual void populateSetting(const String&, InspectorController::Setting&) { }
413     virtual void storeSetting(const String&, const InspectorController::Setting&) { }
414     virtual void removeSetting(const String&) { }
415 };
416
417 }
418
419 #endif // EmptyClients_h