2 * Copyright (C) 2006 Eric Seidel (eric@webkit.org)
3 * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved.
4 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
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.
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.
28 #ifndef EmptyClients_h
29 #define EmptyClients_h
31 #include "ChromeClient.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 "FloatRect.h"
41 #include "FocusDirection.h"
42 #include "FrameLoaderClient.h"
43 #include "InspectorClient.h"
44 #include "PluginHalterClient.h"
45 #include "PopupMenu.h"
46 #include "ResourceError.h"
47 #include "SearchPopupMenu.h"
49 #if USE(GLES2_RENDERING)
50 #include "GLES2Context.h"
54 This file holds empty Client stubs for use by WebCore.
55 Viewless element needs to create a dummy Page->Frame->FrameView tree for use in parsing or executing JavaScript.
56 This tree depends heavily on Clients (usually provided by WebKit classes).
58 This file was first created for SVGImage as it had no way to access the current Page (nor should it,
59 since Images are not tied to a page).
60 See http://bugs.webkit.org/show_bug.cgi?id=5971 for the original discussion about this file.
62 Ideally, whenever you change a Client class, you should add a stub here.
63 Brittle, yes. Unfortunate, yes. Hopefully temporary.
68 class EmptyPopupMenu : public PopupMenu {
70 virtual void show(const IntRect&, FrameView*, int) {}
71 virtual void hide() {}
72 virtual void updateFromElement() {}
73 virtual void disconnectClient() {}
76 class EmptySearchPopupMenu : public SearchPopupMenu {
78 virtual PopupMenu* popupMenu() { return m_popup.get(); }
79 virtual void saveRecentSearches(const AtomicString&, const Vector<String>&) {}
80 virtual void loadRecentSearches(const AtomicString&, Vector<String>&) {}
81 virtual bool enabled() { return false; }
84 RefPtr<EmptyPopupMenu> m_popup;
87 class EmptyChromeClient : public ChromeClient {
89 virtual ~EmptyChromeClient() { }
90 virtual void chromeDestroyed() { }
92 virtual void setWindowRect(const FloatRect&) { }
93 virtual FloatRect windowRect() { return FloatRect(); }
95 virtual FloatRect pageRect() { return FloatRect(); }
97 virtual float scaleFactor() { return 1.f; }
99 #if ENABLE(ANDROID_INSTALLABLE_WEB_APPS)
100 virtual void webAppCanBeInstalled() { }
103 virtual void focus() { }
104 virtual void unfocus() { }
106 virtual bool canTakeFocus(FocusDirection) { return false; }
107 virtual void takeFocus(FocusDirection) { }
109 virtual void focusedNodeChanged(Node*) { }
111 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&) { return 0; }
112 virtual void show() { }
114 virtual bool canRunModal() { return false; }
115 virtual void runModal() { }
117 virtual void setToolbarsVisible(bool) { }
118 virtual bool toolbarsVisible() { return false; }
120 virtual void setStatusbarVisible(bool) { }
121 virtual bool statusbarVisible() { return false; }
123 virtual void setScrollbarsVisible(bool) { }
124 virtual bool scrollbarsVisible() { return false; }
126 virtual void setMenubarVisible(bool) { }
127 virtual bool menubarVisible() { return false; }
129 virtual void setResizable(bool) { }
131 virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, unsigned, const String&) { }
133 virtual bool canRunBeforeUnloadConfirmPanel() { return false; }
134 virtual bool runBeforeUnloadConfirmPanel(const String&, Frame*) { return true; }
136 virtual void closeWindowSoon() { }
138 virtual void runJavaScriptAlert(Frame*, const String&) { }
139 virtual bool runJavaScriptConfirm(Frame*, const String&) { return false; }
140 virtual bool runJavaScriptPrompt(Frame*, const String&, const String&, String&) { return false; }
141 virtual bool shouldInterruptJavaScript() { return false; }
143 virtual bool selectItemWritingDirectionIsNatural() { return false; }
144 virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const { return adoptRef(new EmptyPopupMenu()); }
145 virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const { return adoptRef(new EmptySearchPopupMenu()); }
147 virtual void setStatusbarText(const String&) { }
149 virtual bool tabsToLinks() const { return false; }
151 virtual IntRect windowResizerRect() const { return IntRect(); }
153 virtual void invalidateWindow(const IntRect&, bool) { }
154 virtual void invalidateContentsAndWindow(const IntRect&, bool) { }
155 virtual void invalidateContentsForSlowScroll(const IntRect&, bool) {};
156 virtual void scroll(const IntSize&, const IntRect&, const IntRect&) { }
158 virtual IntPoint screenToWindow(const IntPoint& p) const { return p; }
159 virtual IntRect windowToScreen(const IntRect& r) const { return r; }
160 virtual PlatformPageClient platformPageClient() const { return 0; }
161 virtual void contentsSizeChanged(Frame*, const IntSize&) const { }
163 virtual void scrollbarsModeDidChange() const { }
164 virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) { }
166 virtual void setToolTip(const String&, TextDirection) { }
168 virtual void print(Frame*) { }
171 virtual void exceededDatabaseQuota(Frame*, const String&) { }
174 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
175 virtual void reachedMaxAppCacheSize(int64_t) { }
176 virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*) { }
179 #if ENABLE(NOTIFICATIONS)
180 virtual NotificationPresenter* notificationPresenter() const { return 0; }
183 virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) { }
184 virtual void chooseIconForFiles(const Vector<String>&, FileChooser*) { }
186 virtual void formStateDidChange(const Node*) { }
188 virtual void formDidFocus(const Node*) { }
189 virtual void formDidBlur(const Node*) { }
191 virtual PassOwnPtr<HTMLParserQuirks> createHTMLParserQuirks() { return 0; }
193 virtual void setCursor(const Cursor&) { }
195 virtual void scrollRectIntoView(const IntRect&, const ScrollView*) const {}
197 virtual void requestGeolocationPermissionForFrame(Frame*, Geolocation*) {}
198 virtual void cancelGeolocationPermissionRequestForFrame(Frame*, Geolocation*) {}
200 #if USE(ACCELERATED_COMPOSITING)
201 virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*) {};
202 virtual void setNeedsOneShotDrawingSynchronization() {};
203 virtual void scheduleCompositingLayerSync() {};
206 #if USE(GLES2_RENDERING)
207 virtual PassOwnPtr<GLES2Context> getOnscreenGLES2Context() { return 0; }
208 virtual PassOwnPtr<GLES2Context> getOffscreenGLES2Context() { return 0; }
212 virtual void setLastSetCursorToCurrentCursor() { }
214 #if ENABLE(TOUCH_EVENTS)
215 virtual void needTouchEvents(bool) { }
219 class EmptyFrameLoaderClient : public FrameLoaderClient, public Noncopyable {
221 virtual ~EmptyFrameLoaderClient() { }
222 virtual void frameLoaderDestroyed() { }
224 virtual bool hasWebView() const { return true; } // mainly for assertions
226 virtual void makeRepresentation(DocumentLoader*) { }
227 virtual void forceLayout() { }
228 virtual void forceLayoutForNonHTML() { }
230 virtual void setCopiesOnScroll() { }
232 virtual void detachedFromParent2() { }
233 virtual void detachedFromParent3() { }
235 virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceRequest&, const ResourceResponse&) { }
237 virtual void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) { }
238 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) { return false; }
239 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) { }
240 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
241 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
242 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
243 virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long, const ProtectionSpace&) { return false; }
245 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) { }
246 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) { }
247 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) { }
248 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) { }
249 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) { return false; }
251 virtual void dispatchDidHandleOnloadEvents() { }
252 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { }
253 virtual void dispatchDidCancelClientRedirect() { }
254 virtual void dispatchWillPerformClientRedirect(const KURL&, double, double) { }
255 virtual void dispatchDidChangeLocationWithinPage() { }
256 virtual void dispatchDidPushStateWithinPage() { }
257 virtual void dispatchDidReplaceStateWithinPage() { }
258 virtual void dispatchDidPopStateWithinPage() { }
259 virtual void dispatchWillClose() { }
260 virtual void dispatchDidReceiveIcon() { }
261 virtual void dispatchDidStartProvisionalLoad() { }
262 virtual void dispatchDidReceiveTitle(const String&) { }
263 virtual void dispatchDidChangeIcons() { }
264 virtual void dispatchDidCommitLoad() { }
265 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { }
266 virtual void dispatchDidFailLoad(const ResourceError&) { }
267 virtual void dispatchDidFinishDocumentLoad() { }
268 virtual void dispatchDidFinishLoad() { }
269 virtual void dispatchDidFirstLayout() { }
270 virtual void dispatchDidFirstVisuallyNonEmptyLayout() { }
272 virtual Frame* dispatchCreatePage() { return 0; }
273 virtual void dispatchShow() { }
275 virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction, const String&, const ResourceRequest&) { }
276 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) { }
277 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) { }
278 virtual void cancelPolicyCheck() { }
280 virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
282 virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) { }
283 virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) { }
285 virtual void dispatchDidLoadMainResource(DocumentLoader*) { }
286 virtual void revertToProvisionalState(DocumentLoader*) { }
287 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
289 virtual void willChangeEstimatedProgress() { }
290 virtual void didChangeEstimatedProgress() { }
291 virtual void postProgressStartedNotification() { }
292 virtual void postProgressEstimateChangedNotification() { }
293 virtual void postProgressFinishedNotification() { }
295 virtual void setMainFrameDocumentReady(bool) { }
297 virtual void startDownload(const ResourceRequest&) { }
299 virtual void willChangeTitle(DocumentLoader*) { }
300 virtual void didChangeTitle(DocumentLoader*) { }
302 virtual void committedLoad(DocumentLoader*, const char*, int) { }
303 virtual void finishedLoading(DocumentLoader*) { }
305 virtual ResourceError cancelledError(const ResourceRequest&) { ResourceError error("", 0, "", ""); error.setIsCancellation(true); return error; }
306 virtual ResourceError blockedError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
307 virtual ResourceError cannotShowURLError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
308 virtual ResourceError interruptForPolicyChangeError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
310 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
311 virtual ResourceError fileDoesNotExistError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
312 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
314 virtual bool shouldFallBack(const ResourceError&) { return false; }
316 virtual bool canHandleRequest(const ResourceRequest&) const { return false; }
317 virtual bool canShowMIMEType(const String&) const { return false; }
318 virtual bool representationExistsForURLScheme(const String&) const { return false; }
319 virtual String generatedMIMETypeForURLScheme(const String&) const { return ""; }
321 virtual void frameLoadCompleted() { }
322 virtual void restoreViewState() { }
323 virtual void provisionalLoadStarted() { }
324 virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const { return false; }
325 virtual void didFinishLoad() { }
326 virtual void prepareForDataSourceReplacement() { }
328 virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) { return DocumentLoader::create(request, substituteData); }
329 virtual void setTitle(const String&, const KURL&) { }
331 virtual String userAgent(const KURL&) { return ""; }
333 virtual void savePlatformDataToCachedFrame(CachedFrame*) { }
334 virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { }
335 virtual void transitionToCommittedForNewPage() { }
337 virtual void updateGlobalHistory() { }
338 virtual void updateGlobalHistoryRedirectLinks() { }
339 virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; }
340 virtual void dispatchDidAddBackForwardItem(HistoryItem*) const { }
341 virtual void dispatchDidRemoveBackForwardItem(HistoryItem*) const { };
342 virtual void dispatchDidChangeBackForwardIndex() const { }
343 virtual void saveViewStateToItem(HistoryItem*) { }
344 virtual bool canCachePage() const { return false; }
345 virtual void didDisplayInsecureContent() { }
346 virtual void didRunInsecureContent(SecurityOrigin*) { }
347 virtual PassRefPtr<Frame> createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) { return 0; }
348 virtual void didTransferChildFrameToNewDocument() { }
349 virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool) { return 0; }
350 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) { return 0; }
351 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
352 virtual PassRefPtr<Widget> createMediaPlayerProxyPlugin(const IntSize&, HTMLMediaElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) { return 0; }
353 virtual void hideMediaPlayerProxyPlugin(Widget*) { }
354 virtual void showMediaPlayerProxyPlugin(Widget*) { }
357 virtual ObjectContentType objectContentType(const KURL&, const String&) { return ObjectContentType(); }
358 virtual String overrideMediaType() const { return String(); }
360 virtual void redirectDataToPlugin(Widget*) { }
361 virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) { }
362 virtual void documentElementAvailable() { }
363 virtual void didPerformFirstNavigation() const { }
366 virtual void didCreateScriptContextForFrame() { }
367 virtual void didDestroyScriptContextForFrame() { }
368 virtual void didCreateIsolatedScriptContext() { }
371 virtual void registerForIconNotification(bool) { }
373 #ifdef ANDROID_APPLE_TOUCH_ICON
374 virtual void dispatchDidReceiveTouchIconURL(const String& url, bool precomposed) { }
378 virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; }
381 virtual bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&, const unsigned char*, unsigned long long) { return true; }
386 class EmptyEditorClient : public EditorClient, public Noncopyable {
388 virtual ~EmptyEditorClient() { }
389 virtual void pageDestroyed() { }
391 virtual bool shouldDeleteRange(Range*) { return false; }
392 virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; }
393 virtual bool smartInsertDeleteEnabled() { return false; }
394 virtual bool isSelectTrailingWhitespaceEnabled() { return false; }
395 virtual bool isContinuousSpellCheckingEnabled() { return false; }
396 virtual void toggleContinuousSpellChecking() { }
397 virtual bool isGrammarCheckingEnabled() { return false; }
398 virtual void toggleGrammarChecking() { }
399 virtual int spellCheckerDocumentTag() { return -1; }
401 virtual bool selectWordBeforeMenuEvent() { return false; }
402 virtual bool isEditable() { return false; }
404 virtual bool shouldBeginEditing(Range*) { return false; }
405 virtual bool shouldEndEditing(Range*) { return false; }
406 virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) { return false; }
407 // virtual bool shouldInsertNode(Node*, Range* replacingRange, WebViewInsertAction) { return false; }
408 virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) { return false; }
409 virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) { return false; }
411 virtual bool shouldApplyStyle(CSSStyleDeclaration*, Range*) { return false; }
412 virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; }
413 // virtual bool shouldChangeTypingStyle(CSSStyleDeclaration* fromStyle, CSSStyleDeclaration* toStyle) { return false; }
414 // virtual bool doCommandBySelector(SEL selector) { return false; }
416 virtual void didBeginEditing() { }
417 virtual void respondToChangedContents() { }
418 virtual void respondToChangedSelection() { }
419 virtual void didEndEditing() { }
420 virtual void didWriteSelectionToPasteboard() { }
421 virtual void didSetSelectionTypesForPasteboard() { }
422 // virtual void webViewDidChangeTypingStyle:(NSNotification *)notification { }
423 // virtual void webViewDidChangeSelection:(NSNotification *)notification { }
424 // virtual NSUndoManager* undoManagerForWebView:(WebView *)webView { return 0; }
426 virtual void registerCommandForUndo(PassRefPtr<EditCommand>) { }
427 virtual void registerCommandForRedo(PassRefPtr<EditCommand>) { }
428 virtual void clearUndoRedoOperations() { }
430 virtual bool canUndo() const { return false; }
431 virtual bool canRedo() const { return false; }
433 virtual void undo() { }
434 virtual void redo() { }
436 virtual void handleKeyboardEvent(KeyboardEvent*) { }
437 virtual void handleInputMethodKeydown(KeyboardEvent*) { }
439 virtual void textFieldDidBeginEditing(Element*) { }
440 virtual void textFieldDidEndEditing(Element*) { }
441 virtual void textDidChangeInTextField(Element*) { }
442 virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) { return false; }
443 virtual void textWillBeDeletedInTextField(Element*) { }
444 virtual void textDidChangeInTextArea(Element*) { }
447 virtual void markedTextAbandoned(Frame*) { }
449 virtual NSString* userVisibleString(NSURL*) { return 0; }
450 #ifdef BUILDING_ON_TIGER
451 virtual NSArray* pasteboardTypesForSelection(Frame*) { return 0; }
454 #if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
455 virtual void uppercaseWord() { }
456 virtual void lowercaseWord() { }
457 virtual void capitalizeWord() { }
458 virtual void showSubstitutionsPanel(bool) { }
459 virtual bool substitutionsPanelIsShowing() { return false; }
460 virtual void toggleSmartInsertDelete() { }
461 virtual bool isAutomaticQuoteSubstitutionEnabled() { return false; }
462 virtual void toggleAutomaticQuoteSubstitution() { }
463 virtual bool isAutomaticLinkDetectionEnabled() { return false; }
464 virtual void toggleAutomaticLinkDetection() { }
465 virtual bool isAutomaticDashSubstitutionEnabled() { return false; }
466 virtual void toggleAutomaticDashSubstitution() { }
467 virtual bool isAutomaticTextReplacementEnabled() { return false; }
468 virtual void toggleAutomaticTextReplacement() { }
469 virtual bool isAutomaticSpellingCorrectionEnabled() { return false; }
470 virtual void toggleAutomaticSpellingCorrection() { }
472 virtual void ignoreWordInSpellDocument(const String&) { }
473 virtual void learnWord(const String&) { }
474 virtual void checkSpellingOfString(const UChar*, int, int*, int*) { }
475 virtual String getAutoCorrectSuggestionForMisspelledWord(const String&) { return String(); }
476 virtual void checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) { }
477 #if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
478 virtual void checkTextOfParagraph(const UChar*, int, uint64_t, Vector<TextCheckingResult>&) { };
480 virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) { }
481 virtual void updateSpellingUIWithMisspelledWord(const String&) { }
482 virtual void showSpellingUI(bool) { }
483 virtual bool spellingUIIsShowing() { return false; }
484 virtual void getGuessesForWord(const String&, Vector<String>&) { }
485 virtual void willSetInputMethodState() { }
486 virtual void setInputMethodState(bool) { }
491 #if ENABLE(CONTEXT_MENUS)
492 class EmptyContextMenuClient : public ContextMenuClient, public Noncopyable {
494 virtual ~EmptyContextMenuClient() { }
495 virtual void contextMenuDestroyed() { }
497 virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; }
498 virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { }
500 virtual void downloadURL(const KURL&) { }
501 virtual void copyImageToClipboard(const HitTestResult&) { }
502 virtual void searchWithGoogle(const Frame*) { }
503 virtual void lookUpInDictionary(Frame*) { }
504 virtual bool isSpeaking() { return false; }
505 virtual void speak(const String&) { }
506 virtual void stopSpeaking() { }
509 virtual void searchWithSpotlight() { }
512 #endif // ENABLE(CONTEXT_MENUS)
514 #if ENABLE(DRAG_SUPPORT)
515 class EmptyDragClient : public DragClient, public Noncopyable {
517 virtual ~EmptyDragClient() {}
518 virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { }
519 virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) { }
520 virtual DragDestinationAction actionMaskForDrag(DragData*) { return DragDestinationActionNone; }
521 virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) { return DragSourceActionNone; }
522 virtual void startDrag(DragImageRef, const IntPoint&, const IntPoint&, Clipboard*, Frame*, bool) { }
523 virtual DragImageRef createDragImageForLink(KURL&, const String&, Frame*) { return 0; }
524 virtual void dragControllerDestroyed() { }
526 #endif // ENABLE(DRAG_SUPPORT)
528 class EmptyInspectorClient : public InspectorClient, public Noncopyable {
530 virtual ~EmptyInspectorClient() { }
532 virtual void inspectorDestroyed() { }
534 virtual void openInspectorFrontend(InspectorController*) { }
536 virtual void highlight(Node*) { }
537 virtual void hideHighlight() { }
539 virtual void populateSetting(const String&, String*) { }
540 virtual void storeSetting(const String&, const String&) { }
541 virtual bool sendMessageToFrontend(const String&) { return false; }
544 class EmptyDeviceMotionClient : public DeviceMotionClient {
546 virtual void setController(DeviceMotionController*) { }
547 virtual void startUpdating() { }
548 virtual void stopUpdating() { }
549 virtual DeviceMotionData* currentDeviceMotion() const { return 0; }
552 class EmptyDeviceOrientationClient : public DeviceOrientationClient {
554 virtual void setController(DeviceOrientationController*) { }
555 virtual void startUpdating() { }
556 virtual void stopUpdating() { }
557 virtual DeviceOrientation* lastOrientation() const { return 0; }
562 #endif // EmptyClients_h