1 /*
2  * Copyright (C) 2006 Eric Seidel (eric@webkit.org)
3  * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
4  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #ifndef EmptyClients_h
29 #define EmptyClients_h
30 
31 #include "ChromeClient.h"
32 #include "Console.h"
33 #include "ContextMenuClient.h"
34 #include "DeviceMotionClient.h"
35 #include "DeviceOrientationClient.h"
36 #include "DocumentLoader.h"
37 #include "DragClient.h"
38 #include "EditCommand.h"
39 #include "EditorClient.h"
40 #include "TextCheckerClient.h"
41 #include "FloatRect.h"
42 #include "FocusDirection.h"
43 #include "FrameLoaderClient.h"
44 #include "FrameNetworkingContext.h"
45 #include "InspectorClient.h"
46 #include "PluginHalterClient.h"
47 #include "PopupMenu.h"
48 #include "ResourceError.h"
49 #include "SearchPopupMenu.h"
50 
51 /*
52  This file holds empty Client stubs for use by WebCore.
53  Viewless element needs to create a dummy Page->Frame->FrameView tree for use in parsing or executing JavaScript.
54  This tree depends heavily on Clients (usually provided by WebKit classes).
55 
56  This file was first created for SVGImage as it had no way to access the current Page (nor should it,
57  since Images are not tied to a page).
58  See http://bugs.webkit.org/show_bug.cgi?id=5971 for the original discussion about this file.
59 
60  Ideally, whenever you change a Client class, you should add a stub here.
61  Brittle, yes.  Unfortunate, yes.  Hopefully temporary.
62 */
63 
64 namespace WebCore {
65 
66 class SharedGraphicsContext3D;
67 
68 class EmptyPopupMenu : public PopupMenu {
69 public:
show(const IntRect &,FrameView *,int)70     virtual void show(const IntRect&, FrameView*, int) {}
hide()71     virtual void hide() {}
updateFromElement()72     virtual void updateFromElement() {}
disconnectClient()73     virtual void disconnectClient() {}
74 };
75 
76 class EmptySearchPopupMenu : public SearchPopupMenu {
77 public:
popupMenu()78     virtual PopupMenu* popupMenu() { return m_popup.get(); }
saveRecentSearches(const AtomicString &,const Vector<String> &)79     virtual void saveRecentSearches(const AtomicString&, const Vector<String>&) {}
loadRecentSearches(const AtomicString &,Vector<String> &)80     virtual void loadRecentSearches(const AtomicString&, Vector<String>&) {}
enabled()81     virtual bool enabled() { return false; }
82 
83 private:
84     RefPtr<EmptyPopupMenu> m_popup;
85 };
86 
87 class EmptyChromeClient : public ChromeClient {
88 public:
~EmptyChromeClient()89     virtual ~EmptyChromeClient() { }
chromeDestroyed()90     virtual void chromeDestroyed() { }
91 
webView()92     virtual void* webView() const { return 0; }
setWindowRect(const FloatRect &)93     virtual void setWindowRect(const FloatRect&) { }
windowRect()94     virtual FloatRect windowRect() { return FloatRect(); }
95 
pageRect()96     virtual FloatRect pageRect() { return FloatRect(); }
97 
scaleFactor()98     virtual float scaleFactor() { return 1.f; }
99 
focus()100     virtual void focus() { }
unfocus()101     virtual void unfocus() { }
102 
canTakeFocus(FocusDirection)103     virtual bool canTakeFocus(FocusDirection) { return false; }
takeFocus(FocusDirection)104     virtual void takeFocus(FocusDirection) { }
105 
focusedNodeChanged(Node *)106     virtual void focusedNodeChanged(Node*) { }
focusedFrameChanged(Frame *)107     virtual void focusedFrameChanged(Frame*) { }
108 
createWindow(Frame *,const FrameLoadRequest &,const WindowFeatures &,const NavigationAction &)109     virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&) { return 0; }
show()110     virtual void show() { }
111 
canRunModal()112     virtual bool canRunModal() { return false; }
runModal()113     virtual void runModal() { }
114 
setToolbarsVisible(bool)115     virtual void setToolbarsVisible(bool) { }
toolbarsVisible()116     virtual bool toolbarsVisible() { return false; }
117 
setStatusbarVisible(bool)118     virtual void setStatusbarVisible(bool) { }
statusbarVisible()119     virtual bool statusbarVisible() { return false; }
120 
setScrollbarsVisible(bool)121     virtual void setScrollbarsVisible(bool) { }
scrollbarsVisible()122     virtual bool scrollbarsVisible() { return false; }
123 
setMenubarVisible(bool)124     virtual void setMenubarVisible(bool) { }
menubarVisible()125     virtual bool menubarVisible() { return false; }
126 
setResizable(bool)127     virtual void setResizable(bool) { }
128 
addMessageToConsole(MessageSource,MessageType,MessageLevel,const String &,unsigned,const String &)129     virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, unsigned, const String&) { }
130 
canRunBeforeUnloadConfirmPanel()131     virtual bool canRunBeforeUnloadConfirmPanel() { return false; }
runBeforeUnloadConfirmPanel(const String &,Frame *)132     virtual bool runBeforeUnloadConfirmPanel(const String&, Frame*) { return true; }
133 
closeWindowSoon()134     virtual void closeWindowSoon() { }
135 
runJavaScriptAlert(Frame *,const String &)136     virtual void runJavaScriptAlert(Frame*, const String&) { }
runJavaScriptConfirm(Frame *,const String &)137     virtual bool runJavaScriptConfirm(Frame*, const String&) { return false; }
runJavaScriptPrompt(Frame *,const String &,const String &,String &)138     virtual bool runJavaScriptPrompt(Frame*, const String&, const String&, String&) { return false; }
shouldInterruptJavaScript()139     virtual bool shouldInterruptJavaScript() { return false; }
140 
selectItemWritingDirectionIsNatural()141     virtual bool selectItemWritingDirectionIsNatural() { return false; }
selectItemAlignmentFollowsMenuWritingDirection()142     virtual bool selectItemAlignmentFollowsMenuWritingDirection() { return false; }
createPopupMenu(PopupMenuClient *)143     virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const { return adoptRef(new EmptyPopupMenu()); }
createSearchPopupMenu(PopupMenuClient *)144     virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const { return adoptRef(new EmptySearchPopupMenu()); }
145 
146 #if ENABLE(CONTEXT_MENUS)
showContextMenu()147     virtual void showContextMenu() { }
148 #endif
149 
150 #if ENABLE(REGISTER_PROTOCOL_HANDLER)
registerProtocolHandler(const String &,const String &,const String &,const String &)151     virtual void registerProtocolHandler(const String&, const String&, const String&, const String&) { }
152 #endif
153 
setStatusbarText(const String &)154     virtual void setStatusbarText(const String&) { }
155 
keyboardUIMode()156     virtual KeyboardUIMode keyboardUIMode() { return KeyboardAccessDefault; }
157 
windowResizerRect()158     virtual IntRect windowResizerRect() const { return IntRect(); }
159 
invalidateWindow(const IntRect &,bool)160     virtual void invalidateWindow(const IntRect&, bool) { }
invalidateContentsAndWindow(const IntRect &,bool)161     virtual void invalidateContentsAndWindow(const IntRect&, bool) { }
invalidateContentsForSlowScroll(const IntRect &,bool)162     virtual void invalidateContentsForSlowScroll(const IntRect&, bool) {};
scroll(const IntSize &,const IntRect &,const IntRect &)163     virtual void scroll(const IntSize&, const IntRect&, const IntRect&) { }
164 #if ENABLE(TILED_BACKING_STORE)
delegatedScrollRequested(const IntPoint &)165     virtual void delegatedScrollRequested(const IntPoint&) { }
166 #endif
167 #if ENABLE(REQUEST_ANIMATION_FRAME)
scheduleAnimation()168     virtual void scheduleAnimation() { }
169 #endif
170 
screenToWindow(const IntPoint & p)171     virtual IntPoint screenToWindow(const IntPoint& p) const { return p; }
windowToScreen(const IntRect & r)172     virtual IntRect windowToScreen(const IntRect& r) const { return r; }
platformPageClient()173     virtual PlatformPageClient platformPageClient() const { return 0; }
contentsSizeChanged(Frame *,const IntSize &)174     virtual void contentsSizeChanged(Frame*, const IntSize&) const { }
175 
scrollbarsModeDidChange()176     virtual void scrollbarsModeDidChange() const { }
mouseDidMoveOverElement(const HitTestResult &,unsigned)177     virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) { }
178 
setToolTip(const String &,TextDirection)179     virtual void setToolTip(const String&, TextDirection) { }
180 
print(Frame *)181     virtual void print(Frame*) { }
182 
183 #if ENABLE(DATABASE)
exceededDatabaseQuota(Frame *,const String &)184     virtual void exceededDatabaseQuota(Frame*, const String&) { }
185 #endif
186 
187 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
reachedMaxAppCacheSize(int64_t)188     virtual void reachedMaxAppCacheSize(int64_t) { }
reachedApplicationCacheOriginQuota(SecurityOrigin *)189     virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*) { }
190 #endif
191 
192 #if ENABLE(NOTIFICATIONS)
notificationPresenter()193     virtual NotificationPresenter* notificationPresenter() const { return 0; }
194 #endif
195 
196 #if ENABLE(DIRECTORY_UPLOAD)
enumerateChosenDirectory(const String &,FileChooser *)197     virtual void enumerateChosenDirectory(const String&, FileChooser*) { }
198 #endif
199 
runOpenPanel(Frame *,PassRefPtr<FileChooser>)200     virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) { }
chooseIconForFiles(const Vector<String> &,FileChooser *)201     virtual void chooseIconForFiles(const Vector<String>&, FileChooser*) { }
202 
formStateDidChange(const Node *)203     virtual void formStateDidChange(const Node*) { }
204 
formDidFocus(const Node *)205     virtual void formDidFocus(const Node*) { }
formDidBlur(const Node *)206     virtual void formDidBlur(const Node*) { }
207 
setCursor(const Cursor &)208     virtual void setCursor(const Cursor&) { }
209 
scrollRectIntoView(const IntRect &,const ScrollView *)210     virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const {}
211 
requestGeolocationPermissionForFrame(Frame *,Geolocation *)212     virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*) {}
cancelGeolocationPermissionRequestForFrame(Frame *,Geolocation *)213     virtual void cancelGeolocationPermissionRequestForFrame(Frame*, Geolocation*) {}
214 
215 #if USE(ACCELERATED_COMPOSITING)
attachRootGraphicsLayer(Frame *,GraphicsLayer *)216     virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*) {}
setNeedsOneShotDrawingSynchronization()217     virtual void setNeedsOneShotDrawingSynchronization() {}
scheduleCompositingLayerSync()218     virtual void scheduleCompositingLayerSync() {}
219 #endif
220 
221 #if PLATFORM(WIN)
setLastSetCursorToCurrentCursor()222     virtual void setLastSetCursorToCurrentCursor() { }
223 #endif
224 #if ENABLE(TOUCH_EVENTS)
needTouchEvents(bool)225     virtual void needTouchEvents(bool) { }
226 #endif
227 };
228 
229 class EmptyFrameLoaderClient : public FrameLoaderClient {
230     WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
231 public:
EmptyFrameLoaderClient()232     EmptyFrameLoaderClient() { }
~EmptyFrameLoaderClient()233     virtual ~EmptyFrameLoaderClient() {  }
frameLoaderDestroyed()234     virtual void frameLoaderDestroyed() { }
235 
hasWebView()236     virtual bool hasWebView() const { return true; } // mainly for assertions
237 
makeRepresentation(DocumentLoader *)238     virtual void makeRepresentation(DocumentLoader*) { }
forceLayout()239     virtual void forceLayout() { }
forceLayoutForNonHTML()240     virtual void forceLayoutForNonHTML() { }
241 
setCopiesOnScroll()242     virtual void setCopiesOnScroll() { }
243 
detachedFromParent2()244     virtual void detachedFromParent2() { }
detachedFromParent3()245     virtual void detachedFromParent3() { }
246 
download(ResourceHandle *,const ResourceRequest &,const ResourceRequest &,const ResourceResponse &)247     virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&) { }
248 
assignIdentifierToInitialRequest(unsigned long,DocumentLoader *,const ResourceRequest &)249     virtual void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) { }
shouldUseCredentialStorage(DocumentLoader *,unsigned long)250     virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) { return false; }
dispatchWillSendRequest(DocumentLoader *,unsigned long,ResourceRequest &,const ResourceResponse &)251     virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) { }
dispatchDidReceiveAuthenticationChallenge(DocumentLoader *,unsigned long,const AuthenticationChallenge &)252     virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
dispatchDidCancelAuthenticationChallenge(DocumentLoader *,unsigned long,const AuthenticationChallenge &)253     virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
254 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
canAuthenticateAgainstProtectionSpace(DocumentLoader *,unsigned long,const ProtectionSpace &)255     virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long, const ProtectionSpace&) { return false; }
256 #endif
dispatchDidReceiveResponse(DocumentLoader *,unsigned long,const ResourceResponse &)257     virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) { }
dispatchDidReceiveContentLength(DocumentLoader *,unsigned long,int)258     virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) { }
dispatchDidFinishLoading(DocumentLoader *,unsigned long)259     virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) { }
dispatchDidFailLoading(DocumentLoader *,unsigned long,const ResourceError &)260     virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) { }
dispatchDidLoadResourceFromMemoryCache(DocumentLoader *,const ResourceRequest &,const ResourceResponse &,int)261     virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) { return false; }
262 
dispatchDidHandleOnloadEvents()263     virtual void dispatchDidHandleOnloadEvents() { }
dispatchDidReceiveServerRedirectForProvisionalLoad()264     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { }
dispatchDidCancelClientRedirect()265     virtual void dispatchDidCancelClientRedirect() { }
dispatchWillPerformClientRedirect(const KURL &,double,double)266     virtual void dispatchWillPerformClientRedirect(const KURL&, double, double) { }
dispatchDidChangeLocationWithinPage()267     virtual void dispatchDidChangeLocationWithinPage() { }
dispatchDidPushStateWithinPage()268     virtual void dispatchDidPushStateWithinPage() { }
dispatchDidReplaceStateWithinPage()269     virtual void dispatchDidReplaceStateWithinPage() { }
dispatchDidPopStateWithinPage()270     virtual void dispatchDidPopStateWithinPage() { }
dispatchWillClose()271     virtual void dispatchWillClose() { }
dispatchDidReceiveIcon()272     virtual void dispatchDidReceiveIcon() { }
dispatchDidStartProvisionalLoad()273     virtual void dispatchDidStartProvisionalLoad() { }
dispatchDidReceiveTitle(const StringWithDirection &)274     virtual void dispatchDidReceiveTitle(const StringWithDirection&) { }
dispatchDidChangeIcons(IconType)275     virtual void dispatchDidChangeIcons(IconType) { }
dispatchDidCommitLoad()276     virtual void dispatchDidCommitLoad() { }
dispatchDidFailProvisionalLoad(const ResourceError &)277     virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { }
dispatchDidFailLoad(const ResourceError &)278     virtual void dispatchDidFailLoad(const ResourceError&) { }
dispatchDidFinishDocumentLoad()279     virtual void dispatchDidFinishDocumentLoad() { }
dispatchDidFinishLoad()280     virtual void dispatchDidFinishLoad() { }
dispatchDidFirstLayout()281     virtual void dispatchDidFirstLayout() { }
dispatchDidFirstVisuallyNonEmptyLayout()282     virtual void dispatchDidFirstVisuallyNonEmptyLayout() { }
283 
dispatchCreatePage(const NavigationAction &)284     virtual Frame* dispatchCreatePage(const NavigationAction&) { return 0; }
dispatchShow()285     virtual void dispatchShow() { }
286 
dispatchDecidePolicyForResponse(FramePolicyFunction,const ResourceResponse &,const ResourceRequest &)287     virtual void dispatchDecidePolicyForResponse(FramePolicyFunction, const ResourceResponse&, const ResourceRequest&) { }
dispatchDecidePolicyForNewWindowAction(FramePolicyFunction,const NavigationAction &,const ResourceRequest &,PassRefPtr<FormState>,const String &)288     virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) { }
dispatchDecidePolicyForNavigationAction(FramePolicyFunction,const NavigationAction &,const ResourceRequest &,PassRefPtr<FormState>)289     virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) { }
cancelPolicyCheck()290     virtual void cancelPolicyCheck() { }
291 
dispatchUnableToImplementPolicy(const ResourceError &)292     virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
293 
dispatchWillSendSubmitEvent(HTMLFormElement *)294     virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) { }
dispatchWillSubmitForm(FramePolicyFunction,PassRefPtr<FormState>)295     virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) { }
296 
dispatchDidLoadMainResource(DocumentLoader *)297     virtual void dispatchDidLoadMainResource(DocumentLoader*) { }
revertToProvisionalState(DocumentLoader *)298     virtual void revertToProvisionalState(DocumentLoader*) { }
setMainDocumentError(DocumentLoader *,const ResourceError &)299     virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
300 
willChangeEstimatedProgress()301     virtual void willChangeEstimatedProgress() { }
didChangeEstimatedProgress()302     virtual void didChangeEstimatedProgress() { }
postProgressStartedNotification()303     virtual void postProgressStartedNotification() { }
postProgressEstimateChangedNotification()304     virtual void postProgressEstimateChangedNotification() { }
postProgressFinishedNotification()305     virtual void postProgressFinishedNotification() { }
306 
setMainFrameDocumentReady(bool)307     virtual void setMainFrameDocumentReady(bool) { }
308 
startDownload(const ResourceRequest &)309     virtual void startDownload(const ResourceRequest&) { }
310 
willChangeTitle(DocumentLoader *)311     virtual void willChangeTitle(DocumentLoader*) { }
didChangeTitle(DocumentLoader *)312     virtual void didChangeTitle(DocumentLoader*) { }
313 
committedLoad(DocumentLoader *,const char *,int)314     virtual void committedLoad(DocumentLoader*, const char*, int) { }
finishedLoading(DocumentLoader *)315     virtual void finishedLoading(DocumentLoader*) { }
316 
cancelledError(const ResourceRequest &)317     virtual ResourceError cancelledError(const ResourceRequest&) { ResourceError error("", 0, "", ""); error.setIsCancellation(true); return error; }
blockedError(const ResourceRequest &)318     virtual ResourceError blockedError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
cannotShowURLError(const ResourceRequest &)319     virtual ResourceError cannotShowURLError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
interruptForPolicyChangeError(const ResourceRequest &)320     virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
321 
cannotShowMIMETypeError(const ResourceResponse &)322     virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
fileDoesNotExistError(const ResourceResponse &)323     virtual ResourceError fileDoesNotExistError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
pluginWillHandleLoadError(const ResourceResponse &)324     virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
325 
shouldFallBack(const ResourceError &)326     virtual bool shouldFallBack(const ResourceError&) { return false; }
327 
canHandleRequest(const ResourceRequest &)328     virtual bool canHandleRequest(const ResourceRequest&) const { return false; }
canShowMIMEType(const String &)329     virtual bool canShowMIMEType(const String&) const { return false; }
canShowMIMETypeAsHTML(const String &)330     virtual bool canShowMIMETypeAsHTML(const String&) const { return false; }
representationExistsForURLScheme(const String &)331     virtual bool representationExistsForURLScheme(const String&) const { return false; }
generatedMIMETypeForURLScheme(const String &)332     virtual String generatedMIMETypeForURLScheme(const String&) const { return ""; }
333 
frameLoadCompleted()334     virtual void frameLoadCompleted() { }
restoreViewState()335     virtual void restoreViewState() { }
provisionalLoadStarted()336     virtual void provisionalLoadStarted() { }
shouldTreatURLAsSameAsCurrent(const KURL &)337     virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const { return false; }
didFinishLoad()338     virtual void didFinishLoad() { }
prepareForDataSourceReplacement()339     virtual void prepareForDataSourceReplacement() { }
340 
createDocumentLoader(const ResourceRequest & request,const SubstituteData & substituteData)341     virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) { return DocumentLoader::create(request, substituteData); }
setTitle(const StringWithDirection &,const KURL &)342     virtual void setTitle(const StringWithDirection&, const KURL&) { }
343 
userAgent(const KURL &)344     virtual String userAgent(const KURL&) { return ""; }
345 
savePlatformDataToCachedFrame(CachedFrame *)346     virtual void savePlatformDataToCachedFrame(CachedFrame*) { }
transitionToCommittedFromCachedFrame(CachedFrame *)347     virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { }
transitionToCommittedForNewPage()348     virtual void transitionToCommittedForNewPage() { }
349 
didSaveToPageCache()350     virtual void didSaveToPageCache() { }
didRestoreFromPageCache()351     virtual void didRestoreFromPageCache() { }
352 
dispatchDidBecomeFrameset(bool)353     virtual void dispatchDidBecomeFrameset(bool) { }
354 
updateGlobalHistory()355     virtual void updateGlobalHistory() { }
updateGlobalHistoryRedirectLinks()356     virtual void updateGlobalHistoryRedirectLinks() { }
shouldGoToHistoryItem(HistoryItem *)357     virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; }
shouldStopLoadingForHistoryItem(HistoryItem *)358     virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const { return false; }
dispatchDidAddBackForwardItem(HistoryItem *)359     virtual void dispatchDidAddBackForwardItem(HistoryItem*) const { }
dispatchDidRemoveBackForwardItem(HistoryItem *)360     virtual void dispatchDidRemoveBackForwardItem(HistoryItem*) const { }
dispatchDidChangeBackForwardIndex()361     virtual void dispatchDidChangeBackForwardIndex() const { }
updateGlobalHistoryItemForPage()362     virtual void updateGlobalHistoryItemForPage() { }
saveViewStateToItem(HistoryItem *)363     virtual void saveViewStateToItem(HistoryItem*) { }
canCachePage()364     virtual bool canCachePage() const { return false; }
didDisplayInsecureContent()365     virtual void didDisplayInsecureContent() { }
didRunInsecureContent(SecurityOrigin *,const KURL &)366     virtual void didRunInsecureContent(SecurityOrigin*, const KURL&) { }
createFrame(const KURL &,const String &,HTMLFrameOwnerElement *,const String &,bool,int,int)367     virtual PassRefPtr<Frame> createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) { return 0; }
didTransferChildFrameToNewDocument(Page *)368     virtual void didTransferChildFrameToNewDocument(Page*) { }
transferLoadingResourceFromPage(unsigned long,DocumentLoader *,const ResourceRequest &,Page *)369     virtual void transferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*) { }
createPlugin(const IntSize &,HTMLPlugInElement *,const KURL &,const Vector<String> &,const Vector<String> &,const String &,bool)370     virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool) { return 0; }
createJavaAppletWidget(const IntSize &,HTMLAppletElement *,const KURL &,const Vector<String> &,const Vector<String> &)371     virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) { return 0; }
372 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
createMediaPlayerProxyPlugin(const IntSize &,HTMLMediaElement *,const KURL &,const Vector<String> &,const Vector<String> &,const String &)373     virtual PassRefPtr<Widget> createMediaPlayerProxyPlugin(const IntSize&, HTMLMediaElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) { return 0; }
hideMediaPlayerProxyPlugin(Widget *)374     virtual void hideMediaPlayerProxyPlugin(Widget*) { }
showMediaPlayerProxyPlugin(Widget *)375     virtual void showMediaPlayerProxyPlugin(Widget*) { }
376 #endif
377 
objectContentType(const KURL &,const String &,bool)378     virtual ObjectContentType objectContentType(const KURL&, const String&, bool) { return ObjectContentType(); }
overrideMediaType()379     virtual String overrideMediaType() const { return String(); }
380 
redirectDataToPlugin(Widget *)381     virtual void redirectDataToPlugin(Widget*) { }
dispatchDidClearWindowObjectInWorld(DOMWrapperWorld *)382     virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) { }
documentElementAvailable()383     virtual void documentElementAvailable() { }
didPerformFirstNavigation()384     virtual void didPerformFirstNavigation() const { }
385 
registerForIconNotification(bool)386     virtual void registerForIconNotification(bool) { }
387 
388 #if USE(V8)
didCreateScriptContextForFrame()389     virtual void didCreateScriptContextForFrame() { }
didDestroyScriptContextForFrame()390     virtual void didDestroyScriptContextForFrame() { }
didCreateIsolatedScriptContext()391     virtual void didCreateIsolatedScriptContext() { }
allowScriptExtension(const String & extensionName,int extensionGroup)392     virtual bool allowScriptExtension(const String& extensionName, int extensionGroup) { return false; }
393 #endif
394 
395 #if PLATFORM(MAC)
accessibilityRemoteObject()396     virtual RemoteAXObjectRef accessibilityRemoteObject() { return 0; }
willCacheResponse(DocumentLoader *,unsigned long,NSCachedURLResponse * response)397     virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; }
398 #endif
399 #if PLATFORM(WIN) && USE(CFNETWORK)
400     // FIXME: Windows should use willCacheResponse - <https://bugs.webkit.org/show_bug.cgi?id=57257>.
shouldCacheResponse(DocumentLoader *,unsigned long,const ResourceResponse &,const unsigned char *,unsigned long long)401     virtual bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&, const unsigned char*, unsigned long long) { return true; }
402 #endif
403 
createNetworkingContext()404     virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() { return PassRefPtr<FrameNetworkingContext>(); }
405 };
406 
407 class EmptyTextCheckerClient : public TextCheckerClient {
408 public:
ignoreWordInSpellDocument(const String &)409     virtual void ignoreWordInSpellDocument(const String&) { }
learnWord(const String &)410     virtual void learnWord(const String&) { }
checkSpellingOfString(const UChar *,int,int *,int *)411     virtual void checkSpellingOfString(const UChar*, int, int*, int*) { }
getAutoCorrectSuggestionForMisspelledWord(const String &)412     virtual String getAutoCorrectSuggestionForMisspelledWord(const String&) { return String(); }
checkGrammarOfString(const UChar *,int,Vector<GrammarDetail> &,int *,int *)413     virtual void checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) { }
414 
415 #if USE(UNIFIED_TEXT_CHECKING)
checkTextOfParagraph(const UChar *,int,TextCheckingTypeMask,Vector<TextCheckingResult> &)416     virtual void checkTextOfParagraph(const UChar*, int, TextCheckingTypeMask, Vector<TextCheckingResult>&) { };
417 #endif
418 
getGuessesForWord(const String &,const String &,Vector<String> &)419     virtual void getGuessesForWord(const String&, const String&, Vector<String>&) { }
requestCheckingOfString(SpellChecker *,int,TextCheckingTypeMask,const String &)420     virtual void requestCheckingOfString(SpellChecker*, int, TextCheckingTypeMask, const String&) { }
421 };
422 
423 class EmptyEditorClient : public EditorClient {
424     WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
425 public:
EmptyEditorClient()426     EmptyEditorClient() { }
~EmptyEditorClient()427     virtual ~EmptyEditorClient() { }
pageDestroyed()428     virtual void pageDestroyed() { }
429 
shouldDeleteRange(Range *)430     virtual bool shouldDeleteRange(Range*) { return false; }
shouldShowDeleteInterface(HTMLElement *)431     virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; }
smartInsertDeleteEnabled()432     virtual bool smartInsertDeleteEnabled() { return false; }
isSelectTrailingWhitespaceEnabled()433     virtual bool isSelectTrailingWhitespaceEnabled() { return false; }
isContinuousSpellCheckingEnabled()434     virtual bool isContinuousSpellCheckingEnabled() { return false; }
toggleContinuousSpellChecking()435     virtual void toggleContinuousSpellChecking() { }
isGrammarCheckingEnabled()436     virtual bool isGrammarCheckingEnabled() { return false; }
toggleGrammarChecking()437     virtual void toggleGrammarChecking() { }
spellCheckerDocumentTag()438     virtual int spellCheckerDocumentTag() { return -1; }
439 
selectWordBeforeMenuEvent()440     virtual bool selectWordBeforeMenuEvent() { return false; }
isEditable()441     virtual bool isEditable() { return false; }
442 
shouldBeginEditing(Range *)443     virtual bool shouldBeginEditing(Range*) { return false; }
shouldEndEditing(Range *)444     virtual bool shouldEndEditing(Range*) { return false; }
shouldInsertNode(Node *,Range *,EditorInsertAction)445     virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) { return false; }
446     //  virtual bool shouldInsertNode(Node*, Range* replacingRange, WebViewInsertAction) { return false; }
shouldInsertText(const String &,Range *,EditorInsertAction)447     virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) { return false; }
shouldChangeSelectedRange(Range *,Range *,EAffinity,bool)448     virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) { return false; }
449 
shouldApplyStyle(CSSStyleDeclaration *,Range *)450     virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*) { return false; }
shouldMoveRangeAfterDelete(Range *,Range *)451     virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; }
452     //  virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) { return false; }
453     //  virtual bool doCommandBySelector(SEL selector) { return false; }
454     //
didBeginEditing()455     virtual void didBeginEditing() { }
respondToChangedContents()456     virtual void respondToChangedContents() { }
respondToChangedSelection()457     virtual void respondToChangedSelection() { }
didEndEditing()458     virtual void didEndEditing() { }
didWriteSelectionToPasteboard()459     virtual void didWriteSelectionToPasteboard() { }
didSetSelectionTypesForPasteboard()460     virtual void didSetSelectionTypesForPasteboard() { }
461     //  virtual void webViewDidChangeTypingStyle:(NSNotification *)notification { }
462     //  virtual void webViewDidChangeSelection:(NSNotification *)notification { }
463     //  virtual NSUndoManager* undoManagerForWebView:(WebView *)webView { return 0; }
464 
registerCommandForUndo(PassRefPtr<EditCommand>)465     virtual void registerCommandForUndo(PassRefPtr<EditCommand>) { }
registerCommandForRedo(PassRefPtr<EditCommand>)466     virtual void registerCommandForRedo(PassRefPtr<EditCommand>) { }
clearUndoRedoOperations()467     virtual void clearUndoRedoOperations() { }
468 
canCopyCut(Frame *,bool defaultValue)469     virtual bool canCopyCut(Frame*, bool defaultValue) const { return defaultValue; }
canPaste(Frame *,bool defaultValue)470     virtual bool canPaste(Frame*, bool defaultValue) const { return defaultValue; }
canUndo()471     virtual bool canUndo() const { return false; }
canRedo()472     virtual bool canRedo() const { return false; }
473 
undo()474     virtual void undo() { }
redo()475     virtual void redo() { }
476 
handleKeyboardEvent(KeyboardEvent *)477     virtual void handleKeyboardEvent(KeyboardEvent*) { }
handleInputMethodKeydown(KeyboardEvent *)478     virtual void handleInputMethodKeydown(KeyboardEvent*) { }
479 
textFieldDidBeginEditing(Element *)480     virtual void textFieldDidBeginEditing(Element*) { }
textFieldDidEndEditing(Element *)481     virtual void textFieldDidEndEditing(Element*) { }
textDidChangeInTextField(Element *)482     virtual void textDidChangeInTextField(Element*) { }
doTextFieldCommandFromEvent(Element *,KeyboardEvent *)483     virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) { return false; }
textWillBeDeletedInTextField(Element *)484     virtual void textWillBeDeletedInTextField(Element*) { }
textDidChangeInTextArea(Element *)485     virtual void textDidChangeInTextArea(Element*) { }
486 
487 #if PLATFORM(MAC)
markedTextAbandoned(Frame *)488     virtual void markedTextAbandoned(Frame*) { }
489 
userVisibleString(NSURL *)490     virtual NSString* userVisibleString(NSURL*) { return 0; }
documentFragmentFromAttributedString(NSAttributedString *,Vector<RefPtr<ArchiveResource>> &)491     virtual DocumentFragment* documentFragmentFromAttributedString(NSAttributedString*, Vector<RefPtr<ArchiveResource> >&) { return 0; };
setInsertionPasteboard(NSPasteboard *)492     virtual void setInsertionPasteboard(NSPasteboard*) { };
canonicalizeURL(NSURL *)493     virtual NSURL* canonicalizeURL(NSURL*) { return 0; }
canonicalizeURLString(NSString *)494     virtual NSURL* canonicalizeURLString(NSString*) { return 0; }
495 #endif
496 #if PLATFORM(MAC) && !defined(BUILDING_ON_LEOPARD)
uppercaseWord()497     virtual void uppercaseWord() { }
lowercaseWord()498     virtual void lowercaseWord() { }
capitalizeWord()499     virtual void capitalizeWord() { }
showSubstitutionsPanel(bool)500     virtual void showSubstitutionsPanel(bool) { }
substitutionsPanelIsShowing()501     virtual bool substitutionsPanelIsShowing() { return false; }
toggleSmartInsertDelete()502     virtual void toggleSmartInsertDelete() { }
isAutomaticQuoteSubstitutionEnabled()503     virtual bool isAutomaticQuoteSubstitutionEnabled() { return false; }
toggleAutomaticQuoteSubstitution()504     virtual void toggleAutomaticQuoteSubstitution() { }
isAutomaticLinkDetectionEnabled()505     virtual bool isAutomaticLinkDetectionEnabled() { return false; }
toggleAutomaticLinkDetection()506     virtual void toggleAutomaticLinkDetection() { }
isAutomaticDashSubstitutionEnabled()507     virtual bool isAutomaticDashSubstitutionEnabled() { return false; }
toggleAutomaticDashSubstitution()508     virtual void toggleAutomaticDashSubstitution() { }
isAutomaticTextReplacementEnabled()509     virtual bool isAutomaticTextReplacementEnabled() { return false; }
toggleAutomaticTextReplacement()510     virtual void toggleAutomaticTextReplacement() { }
isAutomaticSpellingCorrectionEnabled()511     virtual bool isAutomaticSpellingCorrectionEnabled() { return false; }
toggleAutomaticSpellingCorrection()512     virtual void toggleAutomaticSpellingCorrection() { }
513 #endif
textChecker()514     TextCheckerClient* textChecker() { return &m_textCheckerClient; }
515 
516 #if SUPPORT_AUTOCORRECTION_PANEL
showCorrectionPanel(CorrectionPanelInfo::PanelType,const FloatRect &,const String &,const String &,const Vector<String> &)517     virtual void showCorrectionPanel(CorrectionPanelInfo::PanelType, const FloatRect&, const String&, const String&, const Vector<String>&) { }
dismissCorrectionPanel(ReasonForDismissingCorrectionPanel)518     virtual void dismissCorrectionPanel(ReasonForDismissingCorrectionPanel) { }
dismissCorrectionPanelSoon(ReasonForDismissingCorrectionPanel)519     virtual String dismissCorrectionPanelSoon(ReasonForDismissingCorrectionPanel) { return String(); }
recordAutocorrectionResponse(AutocorrectionResponseType,const String &,const String &)520     virtual void recordAutocorrectionResponse(AutocorrectionResponseType, const String&, const String&) { }
521 #endif
updateSpellingUIWithGrammarString(const String &,const GrammarDetail &)522     virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) { }
updateSpellingUIWithMisspelledWord(const String &)523     virtual void updateSpellingUIWithMisspelledWord(const String&) { }
showSpellingUI(bool)524     virtual void showSpellingUI(bool) { }
spellingUIIsShowing()525     virtual bool spellingUIIsShowing() { return false; }
526 
willSetInputMethodState()527     virtual void willSetInputMethodState() { }
setInputMethodState(bool)528     virtual void setInputMethodState(bool) { }
529 
530 private:
531     EmptyTextCheckerClient m_textCheckerClient;
532 };
533 
534 #if ENABLE(CONTEXT_MENUS)
535 class EmptyContextMenuClient : public ContextMenuClient {
536     WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
537 public:
EmptyContextMenuClient()538     EmptyContextMenuClient() { }
~EmptyContextMenuClient()539     virtual ~EmptyContextMenuClient() {  }
contextMenuDestroyed()540     virtual void contextMenuDestroyed() { }
541 
542 #if USE(CROSS_PLATFORM_CONTEXT_MENUS)
customizeMenu(PassOwnPtr<ContextMenu>)543     virtual PassOwnPtr<ContextMenu> customizeMenu(PassOwnPtr<ContextMenu>) { return nullptr; }
544 #else
getCustomMenuFromDefaultItems(ContextMenu *)545     virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; }
546 #endif
contextMenuItemSelected(ContextMenuItem *,const ContextMenu *)547     virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { }
548 
downloadURL(const KURL &)549     virtual void downloadURL(const KURL&) { }
copyImageToClipboard(const HitTestResult &)550     virtual void copyImageToClipboard(const HitTestResult&) { }
searchWithGoogle(const Frame *)551     virtual void searchWithGoogle(const Frame*) { }
lookUpInDictionary(Frame *)552     virtual void lookUpInDictionary(Frame*) { }
isSpeaking()553     virtual bool isSpeaking() { return false; }
speak(const String &)554     virtual void speak(const String&) { }
stopSpeaking()555     virtual void stopSpeaking() { }
556 
557 #if PLATFORM(MAC)
searchWithSpotlight()558     virtual void searchWithSpotlight() { }
559 #endif
560 };
561 #endif // ENABLE(CONTEXT_MENUS)
562 
563 #if ENABLE(DRAG_SUPPORT)
564 class EmptyDragClient : public DragClient {
565     WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
566 public:
EmptyDragClient()567     EmptyDragClient() { }
~EmptyDragClient()568     virtual ~EmptyDragClient() {}
willPerformDragDestinationAction(DragDestinationAction,DragData *)569     virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { }
willPerformDragSourceAction(DragSourceAction,const IntPoint &,Clipboard *)570     virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) { }
actionMaskForDrag(DragData *)571     virtual DragDestinationAction actionMaskForDrag(DragData*) { return DragDestinationActionNone; }
dragSourceActionMaskForPoint(const IntPoint &)572     virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) { return DragSourceActionNone; }
startDrag(DragImageRef,const IntPoint &,const IntPoint &,Clipboard *,Frame *,bool)573     virtual void startDrag(DragImageRef, const IntPoint&, const IntPoint&, Clipboard*, Frame*, bool) { }
dragControllerDestroyed()574     virtual void dragControllerDestroyed() { }
575 };
576 #endif // ENABLE(DRAG_SUPPORT)
577 
578 class EmptyInspectorClient : public InspectorClient {
579     WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
580 public:
EmptyInspectorClient()581     EmptyInspectorClient() { }
~EmptyInspectorClient()582     virtual ~EmptyInspectorClient() { }
583 
inspectorDestroyed()584     virtual void inspectorDestroyed() { }
585 
openInspectorFrontend(InspectorController *)586     virtual void openInspectorFrontend(InspectorController*) { }
587 
highlight(Node *)588     virtual void highlight(Node*) { }
hideHighlight()589     virtual void hideHighlight() { }
590 
sendMessageToFrontend(const String &)591     virtual bool sendMessageToFrontend(const String&) { return false; }
592 };
593 
594 class EmptyDeviceMotionClient : public DeviceMotionClient {
595 public:
setController(DeviceMotionController *)596     virtual void setController(DeviceMotionController*) { }
startUpdating()597     virtual void startUpdating() { }
stopUpdating()598     virtual void stopUpdating() { }
currentDeviceMotion()599     virtual DeviceMotionData* currentDeviceMotion() const { return 0; }
deviceMotionControllerDestroyed()600     virtual void deviceMotionControllerDestroyed() { }
601 };
602 
603 class EmptyDeviceOrientationClient : public DeviceOrientationClient {
604 public:
setController(DeviceOrientationController *)605     virtual void setController(DeviceOrientationController*) { }
startUpdating()606     virtual void startUpdating() { }
stopUpdating()607     virtual void stopUpdating() { }
lastOrientation()608     virtual DeviceOrientation* lastOrientation() const { return 0; }
deviceOrientationControllerDestroyed()609     virtual void deviceOrientationControllerDestroyed() { }
610 };
611 
612 }
613 
614 #endif // EmptyClients_h
615