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()275 virtual void dispatchDidChangeIcons() { } 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 386 #if USE(V8) didCreateScriptContextForFrame()387 virtual void didCreateScriptContextForFrame() { } didDestroyScriptContextForFrame()388 virtual void didDestroyScriptContextForFrame() { } didCreateIsolatedScriptContext()389 virtual void didCreateIsolatedScriptContext() { } allowScriptExtension(const String & extensionName,int extensionGroup)390 virtual bool allowScriptExtension(const String& extensionName, int extensionGroup) { return false; } 391 #endif 392 registerForIconNotification(bool)393 virtual void registerForIconNotification(bool) { } 394 395 #ifdef ANDROID_APPLE_TOUCH_ICON dispatchDidReceiveTouchIconURL(const String & url,bool precomposed)396 virtual void dispatchDidReceiveTouchIconURL(const String& url, bool precomposed) { } 397 #endif 398 399 #if PLATFORM(MAC) accessibilityRemoteObject()400 virtual RemoteAXObjectRef accessibilityRemoteObject() { return 0; } willCacheResponse(DocumentLoader *,unsigned long,NSCachedURLResponse * response)401 virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; } 402 #endif 403 #if USE(CFNETWORK) shouldCacheResponse(DocumentLoader *,unsigned long,const ResourceResponse &,const unsigned char *,unsigned long long)404 virtual bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&, const unsigned char*, unsigned long long) { return true; } 405 #endif 406 createNetworkingContext()407 virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() { return PassRefPtr<FrameNetworkingContext>(); } 408 }; 409 410 class EmptyTextCheckerClient : public TextCheckerClient { 411 public: ignoreWordInSpellDocument(const String &)412 virtual void ignoreWordInSpellDocument(const String&) { } learnWord(const String &)413 virtual void learnWord(const String&) { } checkSpellingOfString(const UChar *,int,int *,int *)414 virtual void checkSpellingOfString(const UChar*, int, int*, int*) { } getAutoCorrectSuggestionForMisspelledWord(const String &)415 virtual String getAutoCorrectSuggestionForMisspelledWord(const String&) { return String(); } checkGrammarOfString(const UChar *,int,Vector<GrammarDetail> &,int *,int *)416 virtual void checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) { } 417 418 #if USE(UNIFIED_TEXT_CHECKING) checkTextOfParagraph(const UChar *,int,TextCheckingTypeMask,Vector<TextCheckingResult> &)419 virtual void checkTextOfParagraph(const UChar*, int, TextCheckingTypeMask, Vector<TextCheckingResult>&) { }; 420 #endif 421 getGuessesForWord(const String &,const String &,Vector<String> &)422 virtual void getGuessesForWord(const String&, const String&, Vector<String>&) { } requestCheckingOfString(SpellChecker *,int,TextCheckingTypeMask,const String &)423 virtual void requestCheckingOfString(SpellChecker*, int, TextCheckingTypeMask, const String&) { } 424 }; 425 426 class EmptyEditorClient : public EditorClient { 427 WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED; 428 public: EmptyEditorClient()429 EmptyEditorClient() { } ~EmptyEditorClient()430 virtual ~EmptyEditorClient() { } pageDestroyed()431 virtual void pageDestroyed() { } 432 shouldDeleteRange(Range *)433 virtual bool shouldDeleteRange(Range*) { return false; } shouldShowDeleteInterface(HTMLElement *)434 virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; } smartInsertDeleteEnabled()435 virtual bool smartInsertDeleteEnabled() { return false; } isSelectTrailingWhitespaceEnabled()436 virtual bool isSelectTrailingWhitespaceEnabled() { return false; } isContinuousSpellCheckingEnabled()437 virtual bool isContinuousSpellCheckingEnabled() { return false; } toggleContinuousSpellChecking()438 virtual void toggleContinuousSpellChecking() { } isGrammarCheckingEnabled()439 virtual bool isGrammarCheckingEnabled() { return false; } toggleGrammarChecking()440 virtual void toggleGrammarChecking() { } spellCheckerDocumentTag()441 virtual int spellCheckerDocumentTag() { return -1; } 442 selectWordBeforeMenuEvent()443 virtual bool selectWordBeforeMenuEvent() { return false; } isEditable()444 virtual bool isEditable() { return false; } 445 shouldBeginEditing(Range *)446 virtual bool shouldBeginEditing(Range*) { return false; } shouldEndEditing(Range *)447 virtual bool shouldEndEditing(Range*) { return false; } shouldInsertNode(Node *,Range *,EditorInsertAction)448 virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) { return false; } 449 // virtual bool shouldInsertNode(Node*, Range* replacingRange, WebViewInsertAction) { return false; } shouldInsertText(const String &,Range *,EditorInsertAction)450 virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) { return false; } shouldChangeSelectedRange(Range *,Range *,EAffinity,bool)451 virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) { return false; } 452 shouldApplyStyle(CSSStyleDeclaration *,Range *)453 virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*) { return false; } shouldMoveRangeAfterDelete(Range *,Range *)454 virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; } 455 // virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) { return false; } 456 // virtual bool doCommandBySelector(SEL selector) { return false; } 457 // didBeginEditing()458 virtual void didBeginEditing() { } respondToChangedContents()459 virtual void respondToChangedContents() { } respondToChangedSelection()460 virtual void respondToChangedSelection() { } didEndEditing()461 virtual void didEndEditing() { } didWriteSelectionToPasteboard()462 virtual void didWriteSelectionToPasteboard() { } didSetSelectionTypesForPasteboard()463 virtual void didSetSelectionTypesForPasteboard() { } 464 // virtual void webViewDidChangeTypingStyle:(NSNotification *)notification { } 465 // virtual void webViewDidChangeSelection:(NSNotification *)notification { } 466 // virtual NSUndoManager* undoManagerForWebView:(WebView *)webView { return 0; } 467 registerCommandForUndo(PassRefPtr<EditCommand>)468 virtual void registerCommandForUndo(PassRefPtr<EditCommand>) { } registerCommandForRedo(PassRefPtr<EditCommand>)469 virtual void registerCommandForRedo(PassRefPtr<EditCommand>) { } clearUndoRedoOperations()470 virtual void clearUndoRedoOperations() { } 471 canCopyCut(bool defaultValue)472 virtual bool canCopyCut(bool defaultValue) const { return defaultValue; } canPaste(bool defaultValue)473 virtual bool canPaste(bool defaultValue) const { return defaultValue; } canUndo()474 virtual bool canUndo() const { return false; } canRedo()475 virtual bool canRedo() const { return false; } 476 undo()477 virtual void undo() { } redo()478 virtual void redo() { } 479 handleKeyboardEvent(KeyboardEvent *)480 virtual void handleKeyboardEvent(KeyboardEvent*) { } handleInputMethodKeydown(KeyboardEvent *)481 virtual void handleInputMethodKeydown(KeyboardEvent*) { } 482 textFieldDidBeginEditing(Element *)483 virtual void textFieldDidBeginEditing(Element*) { } textFieldDidEndEditing(Element *)484 virtual void textFieldDidEndEditing(Element*) { } textDidChangeInTextField(Element *)485 virtual void textDidChangeInTextField(Element*) { } doTextFieldCommandFromEvent(Element *,KeyboardEvent *)486 virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) { return false; } textWillBeDeletedInTextField(Element *)487 virtual void textWillBeDeletedInTextField(Element*) { } textDidChangeInTextArea(Element *)488 virtual void textDidChangeInTextArea(Element*) { } 489 490 #if PLATFORM(MAC) markedTextAbandoned(Frame *)491 virtual void markedTextAbandoned(Frame*) { } 492 userVisibleString(NSURL *)493 virtual NSString* userVisibleString(NSURL*) { return 0; } documentFragmentFromAttributedString(NSAttributedString *,Vector<RefPtr<ArchiveResource>> &)494 virtual DocumentFragment* documentFragmentFromAttributedString(NSAttributedString*, Vector<RefPtr<ArchiveResource> >&) { return 0; }; setInsertionPasteboard(NSPasteboard *)495 virtual void setInsertionPasteboard(NSPasteboard*) { }; canonicalizeURL(NSURL *)496 virtual NSURL* canonicalizeURL(NSURL*) { return 0; } canonicalizeURLString(NSString *)497 virtual NSURL* canonicalizeURLString(NSString*) { return 0; } 498 #ifdef BUILDING_ON_TIGER pasteboardTypesForSelection(Frame *)499 virtual NSArray* pasteboardTypesForSelection(Frame*) { return 0; } 500 #endif 501 #endif 502 #if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) uppercaseWord()503 virtual void uppercaseWord() { } lowercaseWord()504 virtual void lowercaseWord() { } capitalizeWord()505 virtual void capitalizeWord() { } showSubstitutionsPanel(bool)506 virtual void showSubstitutionsPanel(bool) { } substitutionsPanelIsShowing()507 virtual bool substitutionsPanelIsShowing() { return false; } toggleSmartInsertDelete()508 virtual void toggleSmartInsertDelete() { } isAutomaticQuoteSubstitutionEnabled()509 virtual bool isAutomaticQuoteSubstitutionEnabled() { return false; } toggleAutomaticQuoteSubstitution()510 virtual void toggleAutomaticQuoteSubstitution() { } isAutomaticLinkDetectionEnabled()511 virtual bool isAutomaticLinkDetectionEnabled() { return false; } toggleAutomaticLinkDetection()512 virtual void toggleAutomaticLinkDetection() { } isAutomaticDashSubstitutionEnabled()513 virtual bool isAutomaticDashSubstitutionEnabled() { return false; } toggleAutomaticDashSubstitution()514 virtual void toggleAutomaticDashSubstitution() { } isAutomaticTextReplacementEnabled()515 virtual bool isAutomaticTextReplacementEnabled() { return false; } toggleAutomaticTextReplacement()516 virtual void toggleAutomaticTextReplacement() { } isAutomaticSpellingCorrectionEnabled()517 virtual bool isAutomaticSpellingCorrectionEnabled() { return false; } toggleAutomaticSpellingCorrection()518 virtual void toggleAutomaticSpellingCorrection() { } 519 #endif textChecker()520 TextCheckerClient* textChecker() { return &m_textCheckerClient; } 521 522 #if SUPPORT_AUTOCORRECTION_PANEL showCorrectionPanel(CorrectionPanelInfo::PanelType,const FloatRect &,const String &,const String &,const Vector<String> &)523 virtual void showCorrectionPanel(CorrectionPanelInfo::PanelType, const FloatRect&, const String&, const String&, const Vector<String>&) { } dismissCorrectionPanel(ReasonForDismissingCorrectionPanel)524 virtual void dismissCorrectionPanel(ReasonForDismissingCorrectionPanel) { } dismissCorrectionPanelSoon(ReasonForDismissingCorrectionPanel)525 virtual String dismissCorrectionPanelSoon(ReasonForDismissingCorrectionPanel) { return String(); } recordAutocorrectionResponse(AutocorrectionResponseType,const String &,const String &)526 virtual void recordAutocorrectionResponse(AutocorrectionResponseType, const String&, const String&) { } 527 #endif updateSpellingUIWithGrammarString(const String &,const GrammarDetail &)528 virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) { } updateSpellingUIWithMisspelledWord(const String &)529 virtual void updateSpellingUIWithMisspelledWord(const String&) { } showSpellingUI(bool)530 virtual void showSpellingUI(bool) { } spellingUIIsShowing()531 virtual bool spellingUIIsShowing() { return false; } 532 willSetInputMethodState()533 virtual void willSetInputMethodState() { } setInputMethodState(bool)534 virtual void setInputMethodState(bool) { } 535 536 private: 537 EmptyTextCheckerClient m_textCheckerClient; 538 }; 539 540 #if ENABLE(CONTEXT_MENUS) 541 class EmptyContextMenuClient : public ContextMenuClient { 542 WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED; 543 public: EmptyContextMenuClient()544 EmptyContextMenuClient() { } ~EmptyContextMenuClient()545 virtual ~EmptyContextMenuClient() { } contextMenuDestroyed()546 virtual void contextMenuDestroyed() { } 547 548 #if USE(CROSS_PLATFORM_CONTEXT_MENUS) customizeMenu(PassOwnPtr<ContextMenu>)549 virtual PassOwnPtr<ContextMenu> customizeMenu(PassOwnPtr<ContextMenu>) { return 0; } 550 #else getCustomMenuFromDefaultItems(ContextMenu *)551 virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; } 552 #endif contextMenuItemSelected(ContextMenuItem *,const ContextMenu *)553 virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { } 554 downloadURL(const KURL &)555 virtual void downloadURL(const KURL&) { } copyImageToClipboard(const HitTestResult &)556 virtual void copyImageToClipboard(const HitTestResult&) { } searchWithGoogle(const Frame *)557 virtual void searchWithGoogle(const Frame*) { } lookUpInDictionary(Frame *)558 virtual void lookUpInDictionary(Frame*) { } isSpeaking()559 virtual bool isSpeaking() { return false; } speak(const String &)560 virtual void speak(const String&) { } stopSpeaking()561 virtual void stopSpeaking() { } 562 563 #if PLATFORM(MAC) searchWithSpotlight()564 virtual void searchWithSpotlight() { } 565 #endif 566 }; 567 #endif // ENABLE(CONTEXT_MENUS) 568 569 #if ENABLE(DRAG_SUPPORT) 570 class EmptyDragClient : public DragClient { 571 WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED; 572 public: EmptyDragClient()573 EmptyDragClient() { } ~EmptyDragClient()574 virtual ~EmptyDragClient() {} willPerformDragDestinationAction(DragDestinationAction,DragData *)575 virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { } willPerformDragSourceAction(DragSourceAction,const IntPoint &,Clipboard *)576 virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) { } actionMaskForDrag(DragData *)577 virtual DragDestinationAction actionMaskForDrag(DragData*) { return DragDestinationActionNone; } dragSourceActionMaskForPoint(const IntPoint &)578 virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) { return DragSourceActionNone; } startDrag(DragImageRef,const IntPoint &,const IntPoint &,Clipboard *,Frame *,bool)579 virtual void startDrag(DragImageRef, const IntPoint&, const IntPoint&, Clipboard*, Frame*, bool) { } dragControllerDestroyed()580 virtual void dragControllerDestroyed() { } 581 }; 582 #endif // ENABLE(DRAG_SUPPORT) 583 584 class EmptyInspectorClient : public InspectorClient { 585 WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED; 586 public: EmptyInspectorClient()587 EmptyInspectorClient() { } ~EmptyInspectorClient()588 virtual ~EmptyInspectorClient() { } 589 inspectorDestroyed()590 virtual void inspectorDestroyed() { } 591 openInspectorFrontend(InspectorController *)592 virtual void openInspectorFrontend(InspectorController*) { } 593 highlight(Node *)594 virtual void highlight(Node*) { } hideHighlight()595 virtual void hideHighlight() { } 596 sendMessageToFrontend(const String &)597 virtual bool sendMessageToFrontend(const String&) { return false; } 598 }; 599 600 class EmptyDeviceMotionClient : public DeviceMotionClient { 601 public: setController(DeviceMotionController *)602 virtual void setController(DeviceMotionController*) { } startUpdating()603 virtual void startUpdating() { } stopUpdating()604 virtual void stopUpdating() { } currentDeviceMotion()605 virtual DeviceMotionData* currentDeviceMotion() const { return 0; } deviceMotionControllerDestroyed()606 virtual void deviceMotionControllerDestroyed() { } 607 }; 608 609 class EmptyDeviceOrientationClient : public DeviceOrientationClient { 610 public: setController(DeviceOrientationController *)611 virtual void setController(DeviceOrientationController*) { } startUpdating()612 virtual void startUpdating() { } stopUpdating()613 virtual void stopUpdating() { } lastOrientation()614 virtual DeviceOrientation* lastOrientation() const { return 0; } deviceOrientationControllerDestroyed()615 virtual void deviceOrientationControllerDestroyed() { } 616 }; 617 618 } 619 620 #endif // EmptyClients_h 621