2 * Copyright (C) 2006 Eric Seidel (eric@webkit.org)
3 * Copyright (C) 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
4 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5 * Copyright (C) 2012 Samsung Electronics. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
24 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 #ifndef EmptyClients_h
30 #define EmptyClients_h
32 #include "ChromeClient.h"
33 #include "ContextMenuClient.h"
34 #include "DeviceMotionClient.h"
35 #include "DeviceOrientationClient.h"
36 #include "DiagnosticLoggingClient.h"
37 #include "DragClient.h"
38 #include "EditorClient.h"
39 #include "TextCheckerClient.h"
40 #include "FloatRect.h"
41 #include "FocusDirection.h"
42 #include "FrameLoaderClient.h"
43 #include "InspectorClient.h"
45 #include "ProgressTrackerClient.h"
46 #include "ResourceError.h"
47 #include "VisitedLinkStore.h"
48 #include <wtf/text/StringView.h>
51 This file holds empty Client stubs for use by WebCore.
52 Viewless element needs to create a dummy Page->Frame->FrameView tree for use in parsing or executing JavaScript.
53 This tree depends heavily on Clients (usually provided by WebKit classes).
55 This file was first created for SVGImage as it had no way to access the current Page (nor should it,
56 since Images are not tied to a page).
57 See http://bugs.webkit.org/show_bug.cgi?id=5971 for the original discussion about this file.
59 Ideally, whenever you change a Client class, you should add a stub here.
60 Brittle, yes. Unfortunate, yes. Hopefully temporary.
65 class GraphicsContext3D;
67 class EmptyChromeClient : public ChromeClient {
68 WTF_MAKE_FAST_ALLOCATED;
70 virtual ~EmptyChromeClient() { }
71 virtual void chromeDestroyed() override { }
73 virtual void setWindowRect(const FloatRect&) override { }
74 virtual FloatRect windowRect() override { return FloatRect(); }
76 virtual FloatRect pageRect() override { return FloatRect(); }
78 virtual void focus() override { }
79 virtual void unfocus() override { }
81 virtual bool canTakeFocus(FocusDirection) override { return false; }
82 virtual void takeFocus(FocusDirection) override { }
84 virtual void focusedElementChanged(Element*) override { }
85 virtual void focusedFrameChanged(Frame*) override { }
87 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&) override { return 0; }
88 virtual void show() override { }
90 virtual bool canRunModal() override { return false; }
91 virtual void runModal() override { }
93 virtual void setToolbarsVisible(bool) override { }
94 virtual bool toolbarsVisible() override { return false; }
96 virtual void setStatusbarVisible(bool) override { }
97 virtual bool statusbarVisible() override { return false; }
99 virtual void setScrollbarsVisible(bool) override { }
100 virtual bool scrollbarsVisible() override { return false; }
102 virtual void setMenubarVisible(bool) override { }
103 virtual bool menubarVisible() override { return false; }
105 virtual void setResizable(bool) override { }
107 virtual void addMessageToConsole(MessageSource, MessageLevel, const String&, unsigned, unsigned, const String&) override { }
109 virtual bool canRunBeforeUnloadConfirmPanel() override { return false; }
110 virtual bool runBeforeUnloadConfirmPanel(const String&, Frame*) override { return true; }
112 virtual void closeWindowSoon() override { }
114 virtual void runJavaScriptAlert(Frame*, const String&) override { }
115 virtual bool runJavaScriptConfirm(Frame*, const String&) override { return false; }
116 virtual bool runJavaScriptPrompt(Frame*, const String&, const String&, String&) override { return false; }
118 virtual bool selectItemWritingDirectionIsNatural() override { return false; }
119 virtual bool selectItemAlignmentFollowsMenuWritingDirection() override { return false; }
120 virtual bool hasOpenedPopup() const override { return false; }
121 virtual RefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const override;
122 virtual RefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const override;
124 virtual void setStatusbarText(const String&) override { }
126 virtual KeyboardUIMode keyboardUIMode() override { return KeyboardAccessDefault; }
128 virtual void invalidateRootView(const IntRect&) override { }
129 virtual void invalidateContentsAndRootView(const IntRect&) override { }
130 virtual void invalidateContentsForSlowScroll(const IntRect&) override { }
131 virtual void scroll(const IntSize&, const IntRect&, const IntRect&) override { }
132 #if USE(COORDINATED_GRAPHICS)
133 virtual void delegatedScrollRequested(const IntPoint&) { }
135 #if ENABLE(REQUEST_ANIMATION_FRAME) && !USE(REQUEST_ANIMATION_FRAME_TIMER)
136 virtual void scheduleAnimation() { }
139 virtual IntPoint screenToRootView(const IntPoint& p) const override { return p; }
140 virtual IntRect rootViewToScreen(const IntRect& r) const override { return r; }
142 virtual IntPoint accessibilityScreenToRootView(const IntPoint& p) const override { return p; };
143 virtual IntRect rootViewToAccessibilityScreen(const IntRect& r) const override { return r; };
145 virtual PlatformPageClient platformPageClient() const override { return 0; }
146 virtual void contentsSizeChanged(Frame*, const IntSize&) const override { }
148 virtual void scrollbarsModeDidChange() const override { }
149 virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) override { }
151 virtual void setToolTip(const String&, TextDirection) override { }
153 virtual void print(Frame*) override { }
155 virtual void exceededDatabaseQuota(Frame*, const String&, DatabaseDetails) override { }
157 virtual void reachedMaxAppCacheSize(int64_t) override { }
158 virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*, int64_t) override { }
160 #if ENABLE(INPUT_TYPE_COLOR)
161 virtual std::unique_ptr<ColorChooser> createColorChooser(ColorChooserClient*, const Color&) override;
164 virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) override;
165 virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*) override { }
167 virtual void elementDidFocus(const Node*) override { }
168 virtual void elementDidBlur(const Node*) override { }
171 virtual void setCursor(const Cursor&) override { }
172 virtual void setCursorHiddenUntilMouseMoves(bool) override { }
175 virtual void scrollRectIntoView(const IntRect&) const override { }
177 virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*) override { }
178 virtual void attachViewOverlayGraphicsLayer(Frame*, GraphicsLayer*) override { }
179 virtual void setNeedsOneShotDrawingSynchronization() override { }
180 virtual void scheduleCompositingLayerFlush() override { }
183 virtual void setLastSetCursorToCurrentCursor() override { }
184 virtual void AXStartFrameLoad() override { }
185 virtual void AXFinishFrameLoad() override { }
189 #if ENABLE(IOS_TOUCH_EVENTS)
190 virtual void didPreventDefaultForEvent() override { }
192 virtual void didReceiveMobileDocType(bool) override { }
193 virtual void setNeedsScrollNotifications(Frame*, bool) override { }
194 virtual void observedContentChange(Frame*) override { }
195 virtual void clearContentChangeObservers(Frame*) override { }
196 virtual void notifyRevealedSelectionByScrollingFrame(Frame*) override { }
197 virtual void didLayout(LayoutType) override { }
198 virtual void didStartOverflowScroll() override { }
199 virtual void didEndOverflowScroll() override { }
201 virtual void suppressFormNotifications() override { }
202 virtual void restoreFormNotifications() override { }
204 virtual void addOrUpdateScrollingLayer(Node*, PlatformLayer*, PlatformLayer*, const IntSize&, bool, bool) override { }
205 virtual void removeScrollingLayer(Node*, PlatformLayer*, PlatformLayer*) override { }
207 virtual void webAppOrientationsUpdated() override { };
208 virtual void showPlaybackTargetPicker(bool) override { };
209 #endif // PLATFORM(IOS)
211 #if ENABLE(ORIENTATION_EVENTS)
212 virtual int deviceOrientation() const override { return 0; }
216 virtual bool isStopping() override { return false; }
219 #if ENABLE(TOUCH_EVENTS)
220 virtual void needTouchEvents(bool) override { }
223 virtual void wheelEventHandlersChanged(bool) override { }
225 virtual bool isEmptyChromeClient() const override { return true; }
227 virtual void didAssociateFormControls(const Vector<RefPtr<Element>>&) override { }
228 virtual bool shouldNotifyOnFormChanges() override { return false; }
231 // FIXME (bug 116233): Get rid of EmptyFrameLoaderClient. It is a travesty.
233 class EmptyFrameLoaderClient : public FrameLoaderClient {
234 WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
236 EmptyFrameLoaderClient() { }
237 virtual ~EmptyFrameLoaderClient() { }
238 virtual void frameLoaderDestroyed() override { }
240 virtual bool hasWebView() const override { return true; } // mainly for assertions
242 virtual void makeRepresentation(DocumentLoader*) override { }
244 virtual bool forceLayoutOnRestoreFromPageCache() override { return false; }
246 virtual void forceLayoutForNonHTML() override { }
248 virtual void setCopiesOnScroll() override { }
250 virtual void detachedFromParent2() override { }
251 virtual void detachedFromParent3() override { }
253 virtual void convertMainResourceLoadToDownload(DocumentLoader*, const ResourceRequest&, const ResourceResponse&) override { }
255 virtual void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) override { }
256 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) override { return false; }
257 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) override { }
258 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) override { }
259 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) override { }
260 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
261 virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long, const ProtectionSpace&) override { return false; }
265 virtual RetainPtr<CFDictionaryRef> connectionProperties(DocumentLoader*, unsigned long) override { return nullptr; }
268 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) override { }
269 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) override { }
270 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) override { }
271 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) override { }
272 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) override { return false; }
274 virtual void dispatchDidHandleOnloadEvents() override { }
275 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() override { }
276 virtual void dispatchDidCancelClientRedirect() override { }
277 virtual void dispatchWillPerformClientRedirect(const URL&, double, double) override { }
278 virtual void dispatchDidChangeLocationWithinPage() override { }
279 virtual void dispatchDidPushStateWithinPage() override { }
280 virtual void dispatchDidReplaceStateWithinPage() override { }
281 virtual void dispatchDidPopStateWithinPage() override { }
282 virtual void dispatchWillClose() override { }
283 virtual void dispatchDidReceiveIcon() override { }
284 virtual void dispatchDidStartProvisionalLoad() override { }
285 virtual void dispatchDidReceiveTitle(const StringWithDirection&) override { }
286 virtual void dispatchDidChangeIcons(IconType) override { }
287 virtual void dispatchDidCommitLoad() override { }
288 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) override { }
289 virtual void dispatchDidFailLoad(const ResourceError&) override { }
290 virtual void dispatchDidFinishDocumentLoad() override { }
291 virtual void dispatchDidFinishLoad() override { }
292 virtual void dispatchDidLayout(LayoutMilestones) override { }
294 virtual Frame* dispatchCreatePage(const NavigationAction&) override { return 0; }
295 virtual void dispatchShow() override { }
297 virtual void dispatchDecidePolicyForResponse(const ResourceResponse&, const ResourceRequest&, FramePolicyFunction) override { }
298 virtual void dispatchDecidePolicyForNewWindowAction(const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&, FramePolicyFunction) override;
299 virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, FramePolicyFunction) override;
300 virtual void cancelPolicyCheck() override { }
302 virtual void dispatchUnableToImplementPolicy(const ResourceError&) override { }
304 virtual void dispatchWillSendSubmitEvent(PassRefPtr<FormState>) override;
305 virtual void dispatchWillSubmitForm(PassRefPtr<FormState>, FramePolicyFunction) override;
307 virtual void revertToProvisionalState(DocumentLoader*) override { }
308 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) override { }
310 virtual void setMainFrameDocumentReady(bool) override { }
312 virtual void startDownload(const ResourceRequest&, const String& suggestedName = String()) override { UNUSED_PARAM(suggestedName); }
314 virtual void willChangeTitle(DocumentLoader*) override { }
315 virtual void didChangeTitle(DocumentLoader*) override { }
317 virtual void willReplaceMultipartContent() override { }
318 virtual void didReplaceMultipartContent() override { }
320 virtual void committedLoad(DocumentLoader*, const char*, int) override { }
321 virtual void finishedLoading(DocumentLoader*) override { }
323 virtual ResourceError cancelledError(const ResourceRequest&) override { ResourceError error("", 0, "", ""); error.setIsCancellation(true); return error; }
324 virtual ResourceError blockedError(const ResourceRequest&) override { return ResourceError("", 0, "", ""); }
325 virtual ResourceError cannotShowURLError(const ResourceRequest&) override { return ResourceError("", 0, "", ""); }
326 virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&) override { return ResourceError("", 0, "", ""); }
328 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) override { return ResourceError("", 0, "", ""); }
329 virtual ResourceError fileDoesNotExistError(const ResourceResponse&) override { return ResourceError("", 0, "", ""); }
330 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) override { return ResourceError("", 0, "", ""); }
332 virtual bool shouldFallBack(const ResourceError&) override { return false; }
334 virtual bool canHandleRequest(const ResourceRequest&) const override { return false; }
335 virtual bool canShowMIMEType(const String&) const override { return false; }
336 virtual bool canShowMIMETypeAsHTML(const String&) const override { return false; }
337 virtual bool representationExistsForURLScheme(const String&) const override { return false; }
338 virtual String generatedMIMETypeForURLScheme(const String&) const override { return ""; }
340 virtual void frameLoadCompleted() override { }
341 virtual void restoreViewState() override { }
342 virtual void provisionalLoadStarted() override { }
343 virtual void didFinishLoad() override { }
344 virtual void prepareForDataSourceReplacement() override { }
346 virtual Ref<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) override;
347 virtual void updateCachedDocumentLoader(DocumentLoader&) override { }
348 virtual void setTitle(const StringWithDirection&, const URL&) override { }
350 virtual String userAgent(const URL&) override { return ""; }
352 virtual void savePlatformDataToCachedFrame(CachedFrame*) override { }
353 virtual void transitionToCommittedFromCachedFrame(CachedFrame*) override { }
355 virtual void didRestoreFrameHierarchyForCachedFrame() override { }
357 virtual void transitionToCommittedForNewPage() override { }
359 virtual void didSaveToPageCache() override { }
360 virtual void didRestoreFromPageCache() override { }
362 virtual void dispatchDidBecomeFrameset(bool) override { }
364 virtual void updateGlobalHistory() override { }
365 virtual void updateGlobalHistoryRedirectLinks() override { }
366 virtual bool shouldGoToHistoryItem(HistoryItem*) const override { return false; }
367 virtual void updateGlobalHistoryItemForPage() override { }
368 virtual void saveViewStateToItem(HistoryItem*) override { }
369 virtual bool canCachePage() const override { return false; }
370 virtual void didDisplayInsecureContent() override { }
371 virtual void didRunInsecureContent(SecurityOrigin*, const URL&) override { }
372 virtual void didDetectXSS(const URL&, bool) override { }
373 virtual RefPtr<Frame> createFrame(const URL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) override;
374 virtual RefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const URL&, const Vector<String>&, const Vector<String>&, const String&, bool) override;
375 virtual void recreatePlugin(Widget*) override;
376 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const URL&, const Vector<String>&, const Vector<String>&) override;
378 virtual ObjectContentType objectContentType(const URL&, const String&, bool) override { return ObjectContentType(); }
379 virtual String overrideMediaType() const override { return String(); }
381 virtual void redirectDataToPlugin(Widget*) override { }
382 virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld&) override { }
384 virtual void registerForIconNotification(bool) override { }
387 virtual RemoteAXObjectRef accessibilityRemoteObject() override { return 0; }
388 virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const override { return response; }
390 #if PLATFORM(WIN) && USE(CFNETWORK)
391 // FIXME: Windows should use willCacheResponse - <https://bugs.webkit.org/show_bug.cgi?id=57257>.
392 virtual bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&, const unsigned char*, unsigned long long) override { return true; }
395 virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() override;
397 #if ENABLE(REQUEST_AUTOCOMPLETE)
398 virtual void didRequestAutocomplete(PassRefPtr<FormState>) override { }
401 virtual bool isEmptyFrameLoaderClient() override { return true; }
404 class EmptyTextCheckerClient : public TextCheckerClient {
406 virtual bool shouldEraseMarkersAfterChangeSelection(TextCheckingType) const override { return true; }
407 virtual void ignoreWordInSpellDocument(const String&) override { }
408 virtual void learnWord(const String&) override { }
409 virtual void checkSpellingOfString(StringView, int*, int*) override { }
410 virtual String getAutoCorrectSuggestionForMisspelledWord(const String&) override { return String(); }
411 virtual void checkGrammarOfString(StringView, Vector<GrammarDetail>&, int*, int*) override { }
413 #if USE(UNIFIED_TEXT_CHECKING)
414 virtual Vector<TextCheckingResult> checkTextOfParagraph(StringView, TextCheckingTypeMask) override { return Vector<TextCheckingResult>(); }
417 virtual void getGuessesForWord(const String&, const String&, Vector<String>&) override { }
418 virtual void requestCheckingOfString(PassRefPtr<TextCheckingRequest>) override;
421 class EmptyEditorClient : public EditorClient {
422 WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
424 EmptyEditorClient() { }
425 virtual ~EmptyEditorClient() { }
426 virtual void pageDestroyed() override { }
428 virtual bool shouldDeleteRange(Range*) override { return false; }
429 virtual bool smartInsertDeleteEnabled() override { return false; }
430 virtual bool isSelectTrailingWhitespaceEnabled() override { return false; }
431 virtual bool isContinuousSpellCheckingEnabled() override { return false; }
432 virtual void toggleContinuousSpellChecking() override { }
433 virtual bool isGrammarCheckingEnabled() override { return false; }
434 virtual void toggleGrammarChecking() override { }
435 virtual int spellCheckerDocumentTag() override { return -1; }
438 virtual bool shouldBeginEditing(Range*) override { return false; }
439 virtual bool shouldEndEditing(Range*) override { return false; }
440 virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) override { return false; }
441 virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) override { return false; }
442 virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) override { return false; }
444 virtual bool shouldApplyStyle(StyleProperties*, Range*) override { return false; }
445 virtual void didApplyStyle() override { }
446 virtual bool shouldMoveRangeAfterDelete(Range*, Range*) override { return false; }
448 virtual void didBeginEditing() override { }
449 virtual void respondToChangedContents() override { }
450 virtual void respondToChangedSelection(Frame*) override { }
451 virtual void didChangeSelectionAndUpdateLayout() override { }
452 virtual void discardedComposition(Frame*) override { }
453 virtual void didEndEditing() override { }
454 virtual void willWriteSelectionToPasteboard(Range*) override { }
455 virtual void didWriteSelectionToPasteboard() override { }
456 virtual void getClientPasteboardDataForRange(Range*, Vector<String>&, Vector<RefPtr<SharedBuffer>>&) override { }
458 virtual void registerUndoStep(PassRefPtr<UndoStep>) override;
459 virtual void registerRedoStep(PassRefPtr<UndoStep>) override;
460 virtual void clearUndoRedoOperations() override { }
462 virtual bool canCopyCut(Frame*, bool defaultValue) const override { return defaultValue; }
463 virtual bool canPaste(Frame*, bool defaultValue) const override { return defaultValue; }
464 virtual bool canUndo() const override { return false; }
465 virtual bool canRedo() const override { return false; }
467 virtual void undo() override { }
468 virtual void redo() override { }
470 virtual void handleKeyboardEvent(KeyboardEvent*) override { }
471 virtual void handleInputMethodKeydown(KeyboardEvent*) override { }
473 virtual void textFieldDidBeginEditing(Element*) override { }
474 virtual void textFieldDidEndEditing(Element*) override { }
475 virtual void textDidChangeInTextField(Element*) override { }
476 virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) override { return false; }
477 virtual void textWillBeDeletedInTextField(Element*) override { }
478 virtual void textDidChangeInTextArea(Element*) override { }
479 virtual void overflowScrollPositionChanged() override { }
482 virtual void startDelayingAndCoalescingContentChangeNotifications() override { }
483 virtual void stopDelayingAndCoalescingContentChangeNotifications() override { }
484 virtual void writeDataToPasteboard(NSDictionary*) override { }
485 virtual NSArray* supportedPasteboardTypesForCurrentSelection() override { return nullptr; }
486 virtual NSArray* readDataFromPasteboard(NSString*, int) override { return nullptr; }
487 virtual bool hasRichlyEditableSelection() override { return false; }
488 virtual int getPasteboardItemsCount() override { return 0; }
489 virtual DocumentFragment* documentFragmentFromDelegate(int) override { return nullptr; }
490 virtual bool performsTwoStepPaste(DocumentFragment*) override { return false; }
491 virtual int pasteboardChangeCount() override { return 0; }
495 virtual NSString* userVisibleString(NSURL*) override { return 0; }
496 virtual DocumentFragment* documentFragmentFromAttributedString(NSAttributedString*, Vector<RefPtr<ArchiveResource>>&) override { return 0; };
497 virtual void setInsertionPasteboard(const String&) override { };
498 virtual NSURL *canonicalizeURL(NSURL*) override { return 0; }
499 virtual NSURL *canonicalizeURLString(NSString*) override { return 0; }
503 virtual void uppercaseWord() override { }
504 virtual void lowercaseWord() override { }
505 virtual void capitalizeWord() override { }
508 #if USE(AUTOMATIC_TEXT_REPLACEMENT)
509 virtual void showSubstitutionsPanel(bool) override { }
510 virtual bool substitutionsPanelIsShowing() override { return false; }
511 virtual void toggleSmartInsertDelete() override { }
512 virtual bool isAutomaticQuoteSubstitutionEnabled() override { return false; }
513 virtual void toggleAutomaticQuoteSubstitution() override { }
514 virtual bool isAutomaticLinkDetectionEnabled() override { return false; }
515 virtual void toggleAutomaticLinkDetection() override { }
516 virtual bool isAutomaticDashSubstitutionEnabled() override { return false; }
517 virtual void toggleAutomaticDashSubstitution() override { }
518 virtual bool isAutomaticTextReplacementEnabled() override { return false; }
519 virtual void toggleAutomaticTextReplacement() override { }
520 virtual bool isAutomaticSpellingCorrectionEnabled() override { return false; }
521 virtual void toggleAutomaticSpellingCorrection() override { }
525 virtual bool shouldShowUnicodeMenu() override { return false; }
527 virtual TextCheckerClient* textChecker() override { return &m_textCheckerClient; }
529 virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) override { }
530 virtual void updateSpellingUIWithMisspelledWord(const String&) override { }
531 virtual void showSpellingUI(bool) override { }
532 virtual bool spellingUIIsShowing() override { return false; }
534 virtual void willSetInputMethodState() override { }
535 virtual void setInputMethodState(bool) override { }
538 EmptyTextCheckerClient m_textCheckerClient;
541 #if ENABLE(CONTEXT_MENUS)
542 class EmptyContextMenuClient : public ContextMenuClient {
543 WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
545 EmptyContextMenuClient() { }
546 virtual ~EmptyContextMenuClient() { }
547 virtual void contextMenuDestroyed() override { }
549 #if USE(CROSS_PLATFORM_CONTEXT_MENUS)
550 virtual std::unique_ptr<ContextMenu> customizeMenu(std::unique_ptr<ContextMenu>) override;
552 virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) override { return 0; }
554 virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) override { }
556 virtual void downloadURL(const URL&) override { }
557 virtual void searchWithGoogle(const Frame*) override { }
558 virtual void lookUpInDictionary(Frame*) override { }
559 virtual bool isSpeaking() override { return false; }
560 virtual void speak(const String&) override { }
561 virtual void stopSpeaking() override { }
563 virtual ContextMenuItem shareMenuItem(const HitTestResult&) override { return ContextMenuItem(); }
566 virtual void searchWithSpotlight() override { }
569 #if USE(ACCESSIBILITY_CONTEXT_MENUS)
570 virtual void showContextMenu() override { }
573 #endif // ENABLE(CONTEXT_MENUS)
575 #if ENABLE(DRAG_SUPPORT)
576 class EmptyDragClient : public DragClient {
577 WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
579 EmptyDragClient() { }
580 virtual ~EmptyDragClient() {}
581 virtual void willPerformDragDestinationAction(DragDestinationAction, DragData&) override { }
582 virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, DataTransfer&) override { }
583 virtual DragDestinationAction actionMaskForDrag(DragData&) override { return DragDestinationActionNone; }
584 virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) override { return DragSourceActionNone; }
585 virtual void startDrag(DragImageRef, const IntPoint&, const IntPoint&, DataTransfer&, Frame&, bool) override { }
586 virtual void dragControllerDestroyed() override { }
588 #endif // ENABLE(DRAG_SUPPORT)
590 class EmptyInspectorClient : public InspectorClient {
591 WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
593 EmptyInspectorClient() { }
594 virtual ~EmptyInspectorClient() { }
596 virtual void inspectorDestroyed() override { }
598 virtual Inspector::FrontendChannel* openInspectorFrontend(InspectorController*) override { return 0; }
599 virtual void closeInspectorFrontend() override { }
600 virtual void bringFrontendToFront() override { }
602 virtual void highlight() override { }
603 virtual void hideHighlight() override { }
606 class EmptyDeviceClient : public DeviceClient {
608 virtual void startUpdating() override { }
609 virtual void stopUpdating() override { }
612 class EmptyDeviceMotionClient : public DeviceMotionClient {
614 virtual void setController(DeviceMotionController*) override { }
615 virtual DeviceMotionData* lastMotion() const override { return 0; }
616 virtual void deviceMotionControllerDestroyed() override { }
619 class EmptyDeviceOrientationClient : public DeviceOrientationClient {
621 virtual void setController(DeviceOrientationController*) override { }
622 virtual DeviceOrientationData* lastOrientation() const override { return 0; }
623 virtual void deviceOrientationControllerDestroyed() override { }
626 class EmptyProgressTrackerClient : public ProgressTrackerClient {
627 virtual void willChangeEstimatedProgress() override { }
628 virtual void didChangeEstimatedProgress() override { }
630 virtual void progressStarted(Frame&) override { }
631 virtual void progressEstimateChanged(Frame&) override { }
632 virtual void progressFinished(Frame&) override { }
635 class EmptyDiagnosticLoggingClient final : public DiagnosticLoggingClient {
636 virtual void logDiagnosticMessage(const String&, const String&, ShouldSample) override { }
637 virtual void logDiagnosticMessageWithResult(const String&, const String&, DiagnosticLoggingResultType, ShouldSample) override { }
638 virtual void logDiagnosticMessageWithValue(const String&, const String&, const String&, ShouldSample) override { }
640 virtual void mainFrameDestroyed() override { }
643 void fillWithEmptyClients(PageConfiguration&);
647 #endif // EmptyClients_h