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