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