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 100 #if ENABLE(ANDROID_INSTALLABLE_WEB_APPS) webAppCanBeInstalled()101 virtual void webAppCanBeInstalled() { } 102 #endif 103 focus()104 virtual void focus() { } unfocus()105 virtual void unfocus() { } 106 canTakeFocus(FocusDirection)107 virtual bool canTakeFocus(FocusDirection) { return false; } takeFocus(FocusDirection)108 virtual void takeFocus(FocusDirection) { } 109 focusedNodeChanged(Node *)110 virtual void focusedNodeChanged(Node*) { } focusedFrameChanged(Frame *)111 virtual void focusedFrameChanged(Frame*) { } 112 createWindow(Frame *,const FrameLoadRequest &,const WindowFeatures &,const NavigationAction &)113 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&) { return 0; } show()114 virtual void show() { } 115 canRunModal()116 virtual bool canRunModal() { return false; } runModal()117 virtual void runModal() { } 118 setToolbarsVisible(bool)119 virtual void setToolbarsVisible(bool) { } toolbarsVisible()120 virtual bool toolbarsVisible() { return false; } 121 setStatusbarVisible(bool)122 virtual void setStatusbarVisible(bool) { } statusbarVisible()123 virtual bool statusbarVisible() { return false; } 124 setScrollbarsVisible(bool)125 virtual void setScrollbarsVisible(bool) { } scrollbarsVisible()126 virtual bool scrollbarsVisible() { return false; } 127 setMenubarVisible(bool)128 virtual void setMenubarVisible(bool) { } menubarVisible()129 virtual bool menubarVisible() { return false; } 130 setResizable(bool)131 virtual void setResizable(bool) { } 132 addMessageToConsole(MessageSource,MessageType,MessageLevel,const String &,unsigned,const String &)133 virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, unsigned, const String&) { } 134 canRunBeforeUnloadConfirmPanel()135 virtual bool canRunBeforeUnloadConfirmPanel() { return false; } runBeforeUnloadConfirmPanel(const String &,Frame *)136 virtual bool runBeforeUnloadConfirmPanel(const String&, Frame*) { return true; } 137 closeWindowSoon()138 virtual void closeWindowSoon() { } 139 runJavaScriptAlert(Frame *,const String &)140 virtual void runJavaScriptAlert(Frame*, const String&) { } runJavaScriptConfirm(Frame *,const String &)141 virtual bool runJavaScriptConfirm(Frame*, const String&) { return false; } runJavaScriptPrompt(Frame *,const String &,const String &,String &)142 virtual bool runJavaScriptPrompt(Frame*, const String&, const String&, String&) { return false; } shouldInterruptJavaScript()143 virtual bool shouldInterruptJavaScript() { return false; } 144 selectItemWritingDirectionIsNatural()145 virtual bool selectItemWritingDirectionIsNatural() { return false; } selectItemAlignmentFollowsMenuWritingDirection()146 virtual bool selectItemAlignmentFollowsMenuWritingDirection() { return false; } createPopupMenu(PopupMenuClient *)147 virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const { return adoptRef(new EmptyPopupMenu()); } createSearchPopupMenu(PopupMenuClient *)148 virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const { return adoptRef(new EmptySearchPopupMenu()); } 149 150 #if ENABLE(CONTEXT_MENUS) showContextMenu()151 virtual void showContextMenu() { } 152 #endif 153 154 #if ENABLE(REGISTER_PROTOCOL_HANDLER) registerProtocolHandler(const String &,const String &,const String &,const String &)155 virtual void registerProtocolHandler(const String&, const String&, const String&, const String&) { } 156 #endif 157 setStatusbarText(const String &)158 virtual void setStatusbarText(const String&) { } 159 keyboardUIMode()160 virtual KeyboardUIMode keyboardUIMode() { return KeyboardAccessDefault; } 161 windowResizerRect()162 virtual IntRect windowResizerRect() const { return IntRect(); } 163 invalidateWindow(const IntRect &,bool)164 virtual void invalidateWindow(const IntRect&, bool) { } invalidateContentsAndWindow(const IntRect &,bool)165 virtual void invalidateContentsAndWindow(const IntRect&, bool) { } invalidateContentsForSlowScroll(const IntRect &,bool)166 virtual void invalidateContentsForSlowScroll(const IntRect&, bool) {}; scroll(const IntSize &,const IntRect &,const IntRect &)167 virtual void scroll(const IntSize&, const IntRect&, const IntRect&) { } 168 #if ENABLE(TILED_BACKING_STORE) delegatedScrollRequested(const IntPoint &)169 virtual void delegatedScrollRequested(const IntPoint&) { } 170 #endif 171 #if ENABLE(REQUEST_ANIMATION_FRAME) scheduleAnimation()172 virtual void scheduleAnimation() { } 173 #endif 174 screenToWindow(const IntPoint & p)175 virtual IntPoint screenToWindow(const IntPoint& p) const { return p; } windowToScreen(const IntRect & r)176 virtual IntRect windowToScreen(const IntRect& r) const { return r; } platformPageClient()177 virtual PlatformPageClient platformPageClient() const { return 0; } contentsSizeChanged(Frame *,const IntSize &)178 virtual void contentsSizeChanged(Frame*, const IntSize&) const { } 179 scrollbarsModeDidChange()180 virtual void scrollbarsModeDidChange() const { } mouseDidMoveOverElement(const HitTestResult &,unsigned)181 virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) { } 182 setToolTip(const String &,TextDirection)183 virtual void setToolTip(const String&, TextDirection) { } 184 print(Frame *)185 virtual void print(Frame*) { } 186 187 #if ENABLE(DATABASE) exceededDatabaseQuota(Frame *,const String &)188 virtual void exceededDatabaseQuota(Frame*, const String&) { } 189 #endif 190 191 #if ENABLE(OFFLINE_WEB_APPLICATIONS) reachedMaxAppCacheSize(int64_t)192 virtual void reachedMaxAppCacheSize(int64_t) { } reachedApplicationCacheOriginQuota(SecurityOrigin *)193 virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*) { } 194 #endif 195 196 #if ENABLE(NOTIFICATIONS) notificationPresenter()197 virtual NotificationPresenter* notificationPresenter() const { return 0; } 198 #endif 199 200 #if ENABLE(DIRECTORY_UPLOAD) enumerateChosenDirectory(const String &,FileChooser *)201 virtual void enumerateChosenDirectory(const String&, FileChooser*) { } 202 #endif 203 runOpenPanel(Frame *,PassRefPtr<FileChooser>)204 virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) { } chooseIconForFiles(const Vector<String> &,FileChooser *)205 virtual void chooseIconForFiles(const Vector<String>&, FileChooser*) { } 206 formStateDidChange(const Node *)207 virtual void formStateDidChange(const Node*) { } 208 formDidFocus(const Node *)209 virtual void formDidFocus(const Node*) { } formDidBlur(const Node *)210 virtual void formDidBlur(const Node*) { } 211 setCursor(const Cursor &)212 virtual void setCursor(const Cursor&) { } 213 scrollRectIntoView(const IntRect &,const ScrollView *)214 virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const {} 215 requestGeolocationPermissionForFrame(Frame *,Geolocation *)216 virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*) {} cancelGeolocationPermissionRequestForFrame(Frame *,Geolocation *)217 virtual void cancelGeolocationPermissionRequestForFrame(Frame*, Geolocation*) {} 218 219 #if USE(ACCELERATED_COMPOSITING) attachRootGraphicsLayer(Frame *,GraphicsLayer *)220 virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*) {} setNeedsOneShotDrawingSynchronization()221 virtual void setNeedsOneShotDrawingSynchronization() {} scheduleCompositingLayerSync()222 virtual void scheduleCompositingLayerSync() {} 223 #endif 224 225 #if PLATFORM(WIN) setLastSetCursorToCurrentCursor()226 virtual void setLastSetCursorToCurrentCursor() { } 227 #endif 228 #if ENABLE(TOUCH_EVENTS) needTouchEvents(bool)229 virtual void needTouchEvents(bool) { } 230 #endif 231 }; 232 233 class EmptyFrameLoaderClient : public FrameLoaderClient { 234 WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED; 235 public: EmptyFrameLoaderClient()236 EmptyFrameLoaderClient() { } ~EmptyFrameLoaderClient()237 virtual ~EmptyFrameLoaderClient() { } frameLoaderDestroyed()238 virtual void frameLoaderDestroyed() { } 239 hasWebView()240 virtual bool hasWebView() const { return true; } // mainly for assertions 241 makeRepresentation(DocumentLoader *)242 virtual void makeRepresentation(DocumentLoader*) { } forceLayout()243 virtual void forceLayout() { } forceLayoutForNonHTML()244 virtual void forceLayoutForNonHTML() { } 245 setCopiesOnScroll()246 virtual void setCopiesOnScroll() { } 247 detachedFromParent2()248 virtual void detachedFromParent2() { } detachedFromParent3()249 virtual void detachedFromParent3() { } 250 download(ResourceHandle *,const ResourceRequest &,const ResourceRequest &,const ResourceResponse &)251 virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&) { } 252 assignIdentifierToInitialRequest(unsigned long,DocumentLoader *,const ResourceRequest &)253 virtual void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) { } shouldUseCredentialStorage(DocumentLoader *,unsigned long)254 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) { return false; } dispatchWillSendRequest(DocumentLoader *,unsigned long,ResourceRequest &,const ResourceResponse &)255 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) { } dispatchDidReceiveAuthenticationChallenge(DocumentLoader *,unsigned long,const AuthenticationChallenge &)256 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { } dispatchDidCancelAuthenticationChallenge(DocumentLoader *,unsigned long,const AuthenticationChallenge &)257 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { } 258 #if USE(PROTECTION_SPACE_AUTH_CALLBACK) canAuthenticateAgainstProtectionSpace(DocumentLoader *,unsigned long,const ProtectionSpace &)259 virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long, const ProtectionSpace&) { return false; } 260 #endif dispatchDidReceiveResponse(DocumentLoader *,unsigned long,const ResourceResponse &)261 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) { } dispatchDidReceiveContentLength(DocumentLoader *,unsigned long,int)262 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) { } dispatchDidFinishLoading(DocumentLoader *,unsigned long)263 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) { } dispatchDidFailLoading(DocumentLoader *,unsigned long,const ResourceError &)264 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) { } dispatchDidLoadResourceFromMemoryCache(DocumentLoader *,const ResourceRequest &,const ResourceResponse &,int)265 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) { return false; } 266 dispatchDidHandleOnloadEvents()267 virtual void dispatchDidHandleOnloadEvents() { } dispatchDidReceiveServerRedirectForProvisionalLoad()268 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { } dispatchDidCancelClientRedirect()269 virtual void dispatchDidCancelClientRedirect() { } dispatchWillPerformClientRedirect(const KURL &,double,double)270 virtual void dispatchWillPerformClientRedirect(const KURL&, double, double) { } dispatchDidChangeLocationWithinPage()271 virtual void dispatchDidChangeLocationWithinPage() { } dispatchDidPushStateWithinPage()272 virtual void dispatchDidPushStateWithinPage() { } dispatchDidReplaceStateWithinPage()273 virtual void dispatchDidReplaceStateWithinPage() { } dispatchDidPopStateWithinPage()274 virtual void dispatchDidPopStateWithinPage() { } dispatchWillClose()275 virtual void dispatchWillClose() { } dispatchDidReceiveIcon()276 virtual void dispatchDidReceiveIcon() { } dispatchDidStartProvisionalLoad()277 virtual void dispatchDidStartProvisionalLoad() { } dispatchDidReceiveTitle(const StringWithDirection &)278 virtual void dispatchDidReceiveTitle(const StringWithDirection&) { } dispatchDidChangeIcons()279 virtual void dispatchDidChangeIcons() { } dispatchDidCommitLoad()280 virtual void dispatchDidCommitLoad() { } dispatchDidFailProvisionalLoad(const ResourceError &)281 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { } dispatchDidFailLoad(const ResourceError &)282 virtual void dispatchDidFailLoad(const ResourceError&) { } dispatchDidFinishDocumentLoad()283 virtual void dispatchDidFinishDocumentLoad() { } dispatchDidFinishLoad()284 virtual void dispatchDidFinishLoad() { } dispatchDidFirstLayout()285 virtual void dispatchDidFirstLayout() { } dispatchDidFirstVisuallyNonEmptyLayout()286 virtual void dispatchDidFirstVisuallyNonEmptyLayout() { } 287 dispatchCreatePage(const NavigationAction &)288 virtual Frame* dispatchCreatePage(const NavigationAction&) { return 0; } dispatchShow()289 virtual void dispatchShow() { } 290 dispatchDecidePolicyForResponse(FramePolicyFunction,const ResourceResponse &,const ResourceRequest &)291 virtual void dispatchDecidePolicyForResponse(FramePolicyFunction, const ResourceResponse&, const ResourceRequest&) { } dispatchDecidePolicyForNewWindowAction(FramePolicyFunction,const NavigationAction &,const ResourceRequest &,PassRefPtr<FormState>,const String &)292 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) { } dispatchDecidePolicyForNavigationAction(FramePolicyFunction,const NavigationAction &,const ResourceRequest &,PassRefPtr<FormState>)293 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) { } cancelPolicyCheck()294 virtual void cancelPolicyCheck() { } 295 dispatchUnableToImplementPolicy(const ResourceError &)296 virtual void dispatchUnableToImplementPolicy(const ResourceError&) { } 297 dispatchWillSendSubmitEvent(HTMLFormElement *)298 virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) { } dispatchWillSubmitForm(FramePolicyFunction,PassRefPtr<FormState>)299 virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) { } 300 dispatchDidLoadMainResource(DocumentLoader *)301 virtual void dispatchDidLoadMainResource(DocumentLoader*) { } revertToProvisionalState(DocumentLoader *)302 virtual void revertToProvisionalState(DocumentLoader*) { } setMainDocumentError(DocumentLoader *,const ResourceError &)303 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { } 304 willChangeEstimatedProgress()305 virtual void willChangeEstimatedProgress() { } didChangeEstimatedProgress()306 virtual void didChangeEstimatedProgress() { } postProgressStartedNotification()307 virtual void postProgressStartedNotification() { } postProgressEstimateChangedNotification()308 virtual void postProgressEstimateChangedNotification() { } postProgressFinishedNotification()309 virtual void postProgressFinishedNotification() { } 310 setMainFrameDocumentReady(bool)311 virtual void setMainFrameDocumentReady(bool) { } 312 startDownload(const ResourceRequest &)313 virtual void startDownload(const ResourceRequest&) { } 314 willChangeTitle(DocumentLoader *)315 virtual void willChangeTitle(DocumentLoader*) { } didChangeTitle(DocumentLoader *)316 virtual void didChangeTitle(DocumentLoader*) { } 317 committedLoad(DocumentLoader *,const char *,int)318 virtual void committedLoad(DocumentLoader*, const char*, int) { } finishedLoading(DocumentLoader *)319 virtual void finishedLoading(DocumentLoader*) { } 320 cancelledError(const ResourceRequest &)321 virtual ResourceError cancelledError(const ResourceRequest&) { ResourceError error("", 0, "", ""); error.setIsCancellation(true); return error; } blockedError(const ResourceRequest &)322 virtual ResourceError blockedError(const ResourceRequest&) { return ResourceError("", 0, "", ""); } cannotShowURLError(const ResourceRequest &)323 virtual ResourceError cannotShowURLError(const ResourceRequest&) { return ResourceError("", 0, "", ""); } interruptForPolicyChangeError(const ResourceRequest &)324 virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&) { return ResourceError("", 0, "", ""); } 325 cannotShowMIMETypeError(const ResourceResponse &)326 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) { return ResourceError("", 0, "", ""); } fileDoesNotExistError(const ResourceResponse &)327 virtual ResourceError fileDoesNotExistError(const ResourceResponse&) { return ResourceError("", 0, "", ""); } pluginWillHandleLoadError(const ResourceResponse &)328 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) { return ResourceError("", 0, "", ""); } 329 shouldFallBack(const ResourceError &)330 virtual bool shouldFallBack(const ResourceError&) { return false; } 331 canHandleRequest(const ResourceRequest &)332 virtual bool canHandleRequest(const ResourceRequest&) const { return false; } canShowMIMEType(const String &)333 virtual bool canShowMIMEType(const String&) const { return false; } canShowMIMETypeAsHTML(const String &)334 virtual bool canShowMIMETypeAsHTML(const String&) const { return false; } representationExistsForURLScheme(const String &)335 virtual bool representationExistsForURLScheme(const String&) const { return false; } generatedMIMETypeForURLScheme(const String &)336 virtual String generatedMIMETypeForURLScheme(const String&) const { return ""; } 337 frameLoadCompleted()338 virtual void frameLoadCompleted() { } restoreViewState()339 virtual void restoreViewState() { } provisionalLoadStarted()340 virtual void provisionalLoadStarted() { } shouldTreatURLAsSameAsCurrent(const KURL &)341 virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const { return false; } didFinishLoad()342 virtual void didFinishLoad() { } prepareForDataSourceReplacement()343 virtual void prepareForDataSourceReplacement() { } 344 createDocumentLoader(const ResourceRequest & request,const SubstituteData & substituteData)345 virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) { return DocumentLoader::create(request, substituteData); } setTitle(const StringWithDirection &,const KURL &)346 virtual void setTitle(const StringWithDirection&, const KURL&) { } 347 userAgent(const KURL &)348 virtual String userAgent(const KURL&) { return ""; } 349 savePlatformDataToCachedFrame(CachedFrame *)350 virtual void savePlatformDataToCachedFrame(CachedFrame*) { } transitionToCommittedFromCachedFrame(CachedFrame *)351 virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { } transitionToCommittedForNewPage()352 virtual void transitionToCommittedForNewPage() { } 353 didSaveToPageCache()354 virtual void didSaveToPageCache() { } didRestoreFromPageCache()355 virtual void didRestoreFromPageCache() { } 356 dispatchDidBecomeFrameset(bool)357 virtual void dispatchDidBecomeFrameset(bool) { } 358 updateGlobalHistory()359 virtual void updateGlobalHistory() { } updateGlobalHistoryRedirectLinks()360 virtual void updateGlobalHistoryRedirectLinks() { } shouldGoToHistoryItem(HistoryItem *)361 virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; } shouldStopLoadingForHistoryItem(HistoryItem *)362 virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const { return false; } dispatchDidAddBackForwardItem(HistoryItem *)363 virtual void dispatchDidAddBackForwardItem(HistoryItem*) const { } dispatchDidRemoveBackForwardItem(HistoryItem *)364 virtual void dispatchDidRemoveBackForwardItem(HistoryItem*) const { } dispatchDidChangeBackForwardIndex()365 virtual void dispatchDidChangeBackForwardIndex() const { } updateGlobalHistoryItemForPage()366 virtual void updateGlobalHistoryItemForPage() { } saveViewStateToItem(HistoryItem *)367 virtual void saveViewStateToItem(HistoryItem*) { } canCachePage()368 virtual bool canCachePage() const { return false; } didDisplayInsecureContent()369 virtual void didDisplayInsecureContent() { } didRunInsecureContent(SecurityOrigin *,const KURL &)370 virtual void didRunInsecureContent(SecurityOrigin*, const KURL&) { } createFrame(const KURL &,const String &,HTMLFrameOwnerElement *,const String &,bool,int,int)371 virtual PassRefPtr<Frame> createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) { return 0; } didTransferChildFrameToNewDocument(Page *)372 virtual void didTransferChildFrameToNewDocument(Page*) { } transferLoadingResourceFromPage(unsigned long,DocumentLoader *,const ResourceRequest &,Page *)373 virtual void transferLoadingResourceFromPage(unsigned long, DocumentLoader*, const ResourceRequest&, Page*) { } createPlugin(const IntSize &,HTMLPlugInElement *,const KURL &,const Vector<String> &,const Vector<String> &,const String &,bool)374 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> &)375 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) { return 0; } 376 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) createMediaPlayerProxyPlugin(const IntSize &,HTMLMediaElement *,const KURL &,const Vector<String> &,const Vector<String> &,const String &)377 virtual PassRefPtr<Widget> createMediaPlayerProxyPlugin(const IntSize&, HTMLMediaElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) { return 0; } hideMediaPlayerProxyPlugin(Widget *)378 virtual void hideMediaPlayerProxyPlugin(Widget*) { } showMediaPlayerProxyPlugin(Widget *)379 virtual void showMediaPlayerProxyPlugin(Widget*) { } 380 #endif 381 objectContentType(const KURL &,const String &,bool)382 virtual ObjectContentType objectContentType(const KURL&, const String&, bool) { return ObjectContentType(); } overrideMediaType()383 virtual String overrideMediaType() const { return String(); } 384 redirectDataToPlugin(Widget *)385 virtual void redirectDataToPlugin(Widget*) { } dispatchDidClearWindowObjectInWorld(DOMWrapperWorld *)386 virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) { } documentElementAvailable()387 virtual void documentElementAvailable() { } didPerformFirstNavigation()388 virtual void didPerformFirstNavigation() const { } 389 390 #if USE(V8) didCreateScriptContextForFrame()391 virtual void didCreateScriptContextForFrame() { } didDestroyScriptContextForFrame()392 virtual void didDestroyScriptContextForFrame() { } didCreateIsolatedScriptContext()393 virtual void didCreateIsolatedScriptContext() { } allowScriptExtension(const String & extensionName,int extensionGroup)394 virtual bool allowScriptExtension(const String& extensionName, int extensionGroup) { return false; } 395 #endif 396 registerForIconNotification(bool)397 virtual void registerForIconNotification(bool) { } 398 399 #ifdef ANDROID_APPLE_TOUCH_ICON dispatchDidReceiveTouchIconURL(const String & url,bool precomposed)400 virtual void dispatchDidReceiveTouchIconURL(const String& url, bool precomposed) { } 401 #endif 402 403 #if PLATFORM(MAC) accessibilityRemoteObject()404 virtual RemoteAXObjectRef accessibilityRemoteObject() { return 0; } willCacheResponse(DocumentLoader *,unsigned long,NSCachedURLResponse * response)405 virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; } 406 #endif 407 #if USE(CFNETWORK) shouldCacheResponse(DocumentLoader *,unsigned long,const ResourceResponse &,const unsigned char *,unsigned long long)408 virtual bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&, const unsigned char*, unsigned long long) { return true; } 409 #endif 410 createNetworkingContext()411 virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() { return PassRefPtr<FrameNetworkingContext>(); } 412 }; 413 414 class EmptyTextCheckerClient : public TextCheckerClient { 415 public: ignoreWordInSpellDocument(const String &)416 virtual void ignoreWordInSpellDocument(const String&) { } learnWord(const String &)417 virtual void learnWord(const String&) { } checkSpellingOfString(const UChar *,int,int *,int *)418 virtual void checkSpellingOfString(const UChar*, int, int*, int*) { } getAutoCorrectSuggestionForMisspelledWord(const String &)419 virtual String getAutoCorrectSuggestionForMisspelledWord(const String&) { return String(); } checkGrammarOfString(const UChar *,int,Vector<GrammarDetail> &,int *,int *)420 virtual void checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) { } 421 422 #if USE(UNIFIED_TEXT_CHECKING) checkTextOfParagraph(const UChar *,int,TextCheckingTypeMask,Vector<TextCheckingResult> &)423 virtual void checkTextOfParagraph(const UChar*, int, TextCheckingTypeMask, Vector<TextCheckingResult>&) { }; 424 #endif 425 getGuessesForWord(const String &,const String &,Vector<String> &)426 virtual void getGuessesForWord(const String&, const String&, Vector<String>&) { } requestCheckingOfString(SpellChecker *,int,TextCheckingTypeMask,const String &)427 virtual void requestCheckingOfString(SpellChecker*, int, TextCheckingTypeMask, const String&) { } 428 }; 429 430 class EmptyEditorClient : public EditorClient { 431 WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED; 432 public: EmptyEditorClient()433 EmptyEditorClient() { } ~EmptyEditorClient()434 virtual ~EmptyEditorClient() { } pageDestroyed()435 virtual void pageDestroyed() { } 436 shouldDeleteRange(Range *)437 virtual bool shouldDeleteRange(Range*) { return false; } shouldShowDeleteInterface(HTMLElement *)438 virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; } smartInsertDeleteEnabled()439 virtual bool smartInsertDeleteEnabled() { return false; } isSelectTrailingWhitespaceEnabled()440 virtual bool isSelectTrailingWhitespaceEnabled() { return false; } isContinuousSpellCheckingEnabled()441 virtual bool isContinuousSpellCheckingEnabled() { return false; } toggleContinuousSpellChecking()442 virtual void toggleContinuousSpellChecking() { } isGrammarCheckingEnabled()443 virtual bool isGrammarCheckingEnabled() { return false; } toggleGrammarChecking()444 virtual void toggleGrammarChecking() { } spellCheckerDocumentTag()445 virtual int spellCheckerDocumentTag() { return -1; } 446 selectWordBeforeMenuEvent()447 virtual bool selectWordBeforeMenuEvent() { return false; } isEditable()448 virtual bool isEditable() { return false; } 449 shouldBeginEditing(Range *)450 virtual bool shouldBeginEditing(Range*) { return false; } shouldEndEditing(Range *)451 virtual bool shouldEndEditing(Range*) { return false; } shouldInsertNode(Node *,Range *,EditorInsertAction)452 virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) { return false; } 453 // virtual bool shouldInsertNode(Node*, Range* replacingRange, WebViewInsertAction) { return false; } shouldInsertText(const String &,Range *,EditorInsertAction)454 virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) { return false; } shouldChangeSelectedRange(Range *,Range *,EAffinity,bool)455 virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) { return false; } 456 shouldApplyStyle(CSSStyleDeclaration *,Range *)457 virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*) { return false; } shouldMoveRangeAfterDelete(Range *,Range *)458 virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; } 459 // virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) { return false; } 460 // virtual bool doCommandBySelector(SEL selector) { return false; } 461 // didBeginEditing()462 virtual void didBeginEditing() { } respondToChangedContents()463 virtual void respondToChangedContents() { } respondToChangedSelection()464 virtual void respondToChangedSelection() { } didEndEditing()465 virtual void didEndEditing() { } didWriteSelectionToPasteboard()466 virtual void didWriteSelectionToPasteboard() { } didSetSelectionTypesForPasteboard()467 virtual void didSetSelectionTypesForPasteboard() { } 468 // virtual void webViewDidChangeTypingStyle:(NSNotification *)notification { } 469 // virtual void webViewDidChangeSelection:(NSNotification *)notification { } 470 // virtual NSUndoManager* undoManagerForWebView:(WebView *)webView { return 0; } 471 registerCommandForUndo(PassRefPtr<EditCommand>)472 virtual void registerCommandForUndo(PassRefPtr<EditCommand>) { } registerCommandForRedo(PassRefPtr<EditCommand>)473 virtual void registerCommandForRedo(PassRefPtr<EditCommand>) { } clearUndoRedoOperations()474 virtual void clearUndoRedoOperations() { } 475 canCopyCut(bool defaultValue)476 virtual bool canCopyCut(bool defaultValue) const { return defaultValue; } canPaste(bool defaultValue)477 virtual bool canPaste(bool defaultValue) const { return defaultValue; } canUndo()478 virtual bool canUndo() const { return false; } canRedo()479 virtual bool canRedo() const { return false; } 480 undo()481 virtual void undo() { } redo()482 virtual void redo() { } 483 handleKeyboardEvent(KeyboardEvent *)484 virtual void handleKeyboardEvent(KeyboardEvent*) { } handleInputMethodKeydown(KeyboardEvent *)485 virtual void handleInputMethodKeydown(KeyboardEvent*) { } 486 textFieldDidBeginEditing(Element *)487 virtual void textFieldDidBeginEditing(Element*) { } textFieldDidEndEditing(Element *)488 virtual void textFieldDidEndEditing(Element*) { } textDidChangeInTextField(Element *)489 virtual void textDidChangeInTextField(Element*) { } doTextFieldCommandFromEvent(Element *,KeyboardEvent *)490 virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) { return false; } textWillBeDeletedInTextField(Element *)491 virtual void textWillBeDeletedInTextField(Element*) { } textDidChangeInTextArea(Element *)492 virtual void textDidChangeInTextArea(Element*) { } 493 494 #if PLATFORM(MAC) markedTextAbandoned(Frame *)495 virtual void markedTextAbandoned(Frame*) { } 496 userVisibleString(NSURL *)497 virtual NSString* userVisibleString(NSURL*) { return 0; } documentFragmentFromAttributedString(NSAttributedString *,Vector<RefPtr<ArchiveResource>> &)498 virtual DocumentFragment* documentFragmentFromAttributedString(NSAttributedString*, Vector<RefPtr<ArchiveResource> >&) { return 0; }; setInsertionPasteboard(NSPasteboard *)499 virtual void setInsertionPasteboard(NSPasteboard*) { }; canonicalizeURL(NSURL *)500 virtual NSURL* canonicalizeURL(NSURL*) { return 0; } canonicalizeURLString(NSString *)501 virtual NSURL* canonicalizeURLString(NSString*) { return 0; } 502 #ifdef BUILDING_ON_TIGER pasteboardTypesForSelection(Frame *)503 virtual NSArray* pasteboardTypesForSelection(Frame*) { return 0; } 504 #endif 505 #endif 506 #if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) uppercaseWord()507 virtual void uppercaseWord() { } lowercaseWord()508 virtual void lowercaseWord() { } capitalizeWord()509 virtual void capitalizeWord() { } showSubstitutionsPanel(bool)510 virtual void showSubstitutionsPanel(bool) { } substitutionsPanelIsShowing()511 virtual bool substitutionsPanelIsShowing() { return false; } toggleSmartInsertDelete()512 virtual void toggleSmartInsertDelete() { } isAutomaticQuoteSubstitutionEnabled()513 virtual bool isAutomaticQuoteSubstitutionEnabled() { return false; } toggleAutomaticQuoteSubstitution()514 virtual void toggleAutomaticQuoteSubstitution() { } isAutomaticLinkDetectionEnabled()515 virtual bool isAutomaticLinkDetectionEnabled() { return false; } toggleAutomaticLinkDetection()516 virtual void toggleAutomaticLinkDetection() { } isAutomaticDashSubstitutionEnabled()517 virtual bool isAutomaticDashSubstitutionEnabled() { return false; } toggleAutomaticDashSubstitution()518 virtual void toggleAutomaticDashSubstitution() { } isAutomaticTextReplacementEnabled()519 virtual bool isAutomaticTextReplacementEnabled() { return false; } toggleAutomaticTextReplacement()520 virtual void toggleAutomaticTextReplacement() { } isAutomaticSpellingCorrectionEnabled()521 virtual bool isAutomaticSpellingCorrectionEnabled() { return false; } toggleAutomaticSpellingCorrection()522 virtual void toggleAutomaticSpellingCorrection() { } 523 #endif textChecker()524 TextCheckerClient* textChecker() { return &m_textCheckerClient; } 525 526 #if SUPPORT_AUTOCORRECTION_PANEL showCorrectionPanel(CorrectionPanelInfo::PanelType,const FloatRect &,const String &,const String &,const Vector<String> &)527 virtual void showCorrectionPanel(CorrectionPanelInfo::PanelType, const FloatRect&, const String&, const String&, const Vector<String>&) { } dismissCorrectionPanel(ReasonForDismissingCorrectionPanel)528 virtual void dismissCorrectionPanel(ReasonForDismissingCorrectionPanel) { } dismissCorrectionPanelSoon(ReasonForDismissingCorrectionPanel)529 virtual String dismissCorrectionPanelSoon(ReasonForDismissingCorrectionPanel) { return String(); } recordAutocorrectionResponse(AutocorrectionResponseType,const String &,const String &)530 virtual void recordAutocorrectionResponse(AutocorrectionResponseType, const String&, const String&) { } 531 #endif updateSpellingUIWithGrammarString(const String &,const GrammarDetail &)532 virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) { } updateSpellingUIWithMisspelledWord(const String &)533 virtual void updateSpellingUIWithMisspelledWord(const String&) { } showSpellingUI(bool)534 virtual void showSpellingUI(bool) { } spellingUIIsShowing()535 virtual bool spellingUIIsShowing() { return false; } 536 willSetInputMethodState()537 virtual void willSetInputMethodState() { } setInputMethodState(bool)538 virtual void setInputMethodState(bool) { } 539 540 private: 541 EmptyTextCheckerClient m_textCheckerClient; 542 }; 543 544 #if ENABLE(CONTEXT_MENUS) 545 class EmptyContextMenuClient : public ContextMenuClient { 546 WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED; 547 public: EmptyContextMenuClient()548 EmptyContextMenuClient() { } ~EmptyContextMenuClient()549 virtual ~EmptyContextMenuClient() { } contextMenuDestroyed()550 virtual void contextMenuDestroyed() { } 551 552 #if USE(CROSS_PLATFORM_CONTEXT_MENUS) customizeMenu(PassOwnPtr<ContextMenu>)553 virtual PassOwnPtr<ContextMenu> customizeMenu(PassOwnPtr<ContextMenu>) { return 0; } 554 #else getCustomMenuFromDefaultItems(ContextMenu *)555 virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; } 556 #endif contextMenuItemSelected(ContextMenuItem *,const ContextMenu *)557 virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { } 558 downloadURL(const KURL &)559 virtual void downloadURL(const KURL&) { } copyImageToClipboard(const HitTestResult &)560 virtual void copyImageToClipboard(const HitTestResult&) { } searchWithGoogle(const Frame *)561 virtual void searchWithGoogle(const Frame*) { } lookUpInDictionary(Frame *)562 virtual void lookUpInDictionary(Frame*) { } isSpeaking()563 virtual bool isSpeaking() { return false; } speak(const String &)564 virtual void speak(const String&) { } stopSpeaking()565 virtual void stopSpeaking() { } 566 567 #if PLATFORM(MAC) searchWithSpotlight()568 virtual void searchWithSpotlight() { } 569 #endif 570 }; 571 #endif // ENABLE(CONTEXT_MENUS) 572 573 #if ENABLE(DRAG_SUPPORT) 574 class EmptyDragClient : public DragClient { 575 WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED; 576 public: EmptyDragClient()577 EmptyDragClient() { } ~EmptyDragClient()578 virtual ~EmptyDragClient() {} willPerformDragDestinationAction(DragDestinationAction,DragData *)579 virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { } willPerformDragSourceAction(DragSourceAction,const IntPoint &,Clipboard *)580 virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) { } actionMaskForDrag(DragData *)581 virtual DragDestinationAction actionMaskForDrag(DragData*) { return DragDestinationActionNone; } dragSourceActionMaskForPoint(const IntPoint &)582 virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) { return DragSourceActionNone; } startDrag(DragImageRef,const IntPoint &,const IntPoint &,Clipboard *,Frame *,bool)583 virtual void startDrag(DragImageRef, const IntPoint&, const IntPoint&, Clipboard*, Frame*, bool) { } dragControllerDestroyed()584 virtual void dragControllerDestroyed() { } 585 }; 586 #endif // ENABLE(DRAG_SUPPORT) 587 588 class EmptyInspectorClient : public InspectorClient { 589 WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED; 590 public: EmptyInspectorClient()591 EmptyInspectorClient() { } ~EmptyInspectorClient()592 virtual ~EmptyInspectorClient() { } 593 inspectorDestroyed()594 virtual void inspectorDestroyed() { } 595 openInspectorFrontend(InspectorController *)596 virtual void openInspectorFrontend(InspectorController*) { } 597 highlight(Node *)598 virtual void highlight(Node*) { } hideHighlight()599 virtual void hideHighlight() { } 600 sendMessageToFrontend(const String &)601 virtual bool sendMessageToFrontend(const String&) { return false; } 602 }; 603 604 class EmptyDeviceMotionClient : public DeviceMotionClient { 605 public: setController(DeviceMotionController *)606 virtual void setController(DeviceMotionController*) { } startUpdating()607 virtual void startUpdating() { } stopUpdating()608 virtual void stopUpdating() { } currentDeviceMotion()609 virtual DeviceMotionData* currentDeviceMotion() const { return 0; } deviceMotionControllerDestroyed()610 virtual void deviceMotionControllerDestroyed() { } 611 }; 612 613 class EmptyDeviceOrientationClient : public DeviceOrientationClient { 614 public: setController(DeviceOrientationController *)615 virtual void setController(DeviceOrientationController*) { } startUpdating()616 virtual void startUpdating() { } stopUpdating()617 virtual void stopUpdating() { } lastOrientation()618 virtual DeviceOrientation* lastOrientation() const { return 0; } deviceOrientationControllerDestroyed()619 virtual void deviceOrientationControllerDestroyed() { } 620 }; 621 622 } 623 624 #endif // EmptyClients_h 625