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 * 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 COMPUTER, 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 COMPUTER, 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 "DragClient.h"
37 #include "EditorClient.h"
38 #include "TextCheckerClient.h"
39 #include "FloatRect.h"
40 #include "FocusDirection.h"
41 #include "FrameLoaderClient.h"
42 #include "InspectorClient.h"
44 #include "ResourceError.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 {
69 virtual ~EmptyChromeClient() { }
70 virtual void chromeDestroyed() { }
72 virtual void* webView() const { return 0; }
73 virtual void setWindowRect(const FloatRect&) { }
74 virtual FloatRect windowRect() { return FloatRect(); }
76 virtual FloatRect pageRect() { return FloatRect(); }
78 virtual void focus() { }
79 virtual void unfocus() { }
81 virtual bool canTakeFocus(FocusDirection) { return false; }
82 virtual void takeFocus(FocusDirection) { }
84 virtual void focusedNodeChanged(Node*) { }
85 virtual void focusedFrameChanged(Frame*) { }
87 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&) { return 0; }
88 virtual void show() { }
90 virtual bool canRunModal() { return false; }
91 virtual void runModal() { }
93 virtual void setToolbarsVisible(bool) { }
94 virtual bool toolbarsVisible() { return false; }
96 virtual void setStatusbarVisible(bool) { }
97 virtual bool statusbarVisible() { return false; }
99 virtual void setScrollbarsVisible(bool) { }
100 virtual bool scrollbarsVisible() { return false; }
102 virtual void setMenubarVisible(bool) { }
103 virtual bool menubarVisible() { return false; }
105 virtual void setResizable(bool) { }
107 virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, unsigned, const String&) { }
109 virtual bool canRunBeforeUnloadConfirmPanel() { return false; }
110 virtual bool runBeforeUnloadConfirmPanel(const String&, Frame*) { return true; }
112 virtual void closeWindowSoon() { }
114 virtual void runJavaScriptAlert(Frame*, const String&) { }
115 virtual bool runJavaScriptConfirm(Frame*, const String&) { return false; }
116 virtual bool runJavaScriptPrompt(Frame*, const String&, const String&, String&) { return false; }
117 virtual bool shouldInterruptJavaScript() { return false; }
119 virtual bool selectItemWritingDirectionIsNatural() { return false; }
120 virtual bool selectItemAlignmentFollowsMenuWritingDirection() { return false; }
121 virtual bool hasOpenedPopup() const OVERRIDE { return false; }
122 virtual PassRefPtr<PopupMenu> createPopupMenu(PopupMenuClient*) const OVERRIDE;
123 virtual PassRefPtr<SearchPopupMenu> createSearchPopupMenu(PopupMenuClient*) const OVERRIDE;
124 #if ENABLE(PAGE_POPUP)
125 virtual PagePopup* openPagePopup(PagePopupClient*, const IntRect&) OVERRIDE { return 0; }
126 virtual void closePagePopup(PagePopup*) OVERRIDE { }
127 virtual void setPagePopupDriver(PagePopupDriver*) OVERRIDE { }
128 virtual void resetPagePopupDriver() OVERRIDE { }
131 #if ENABLE(REGISTER_PROTOCOL_HANDLER)
132 virtual void registerProtocolHandler(const String&, const String&, const String&, const String&) { }
135 #if ENABLE(TIZEN_REGISTER_CONTENT_HANDLER)
136 virtual void registerContentHandler(const String&, const String&, const String&, const String&) { }
137 virtual CustomHandlersState isContentHandlerRegistered(const String&, const String&, const String&) { return CustomHandlersDeclined; }
138 virtual void unregisterContentHandler(const String&, const String&, const String&) { }
141 #if ENABLE(TIZEN_SEARCH_PROVIDER)
142 virtual void addSearchProvider(const String&, const String&) { }
143 virtual unsigned long isSearchProviderInstalled(const String&, const String&) { return 0; }
145 #if ENABLE(CUSTOM_SCHEME_HANDLER)
146 virtual CustomHandlersState isProtocolHandlerRegistered(const String&, const String&, const String&) { return CustomHandlersDeclined; }
147 virtual void unregisterProtocolHandler(const String&, const String&, const String&) { }
150 virtual void setStatusbarText(const String&) { }
152 virtual KeyboardUIMode keyboardUIMode() { return KeyboardAccessDefault; }
154 virtual IntRect windowResizerRect() const { return IntRect(); }
156 virtual void invalidateRootView(const IntRect&, bool) OVERRIDE { }
157 virtual void invalidateContentsAndRootView(const IntRect&, bool) OVERRIDE { }
158 virtual void invalidateContentsForSlowScroll(const IntRect&, bool) OVERRIDE { }
159 virtual void scroll(const IntSize&, const IntRect&, const IntRect&) { }
160 #if USE(TILED_BACKING_STORE)
161 virtual void delegatedScrollRequested(const IntPoint&) { }
163 #if ENABLE(REQUEST_ANIMATION_FRAME) && !USE(REQUEST_ANIMATION_FRAME_TIMER)
164 virtual void scheduleAnimation() { }
167 virtual IntPoint screenToRootView(const IntPoint& p) const OVERRIDE { return p; }
168 virtual IntRect rootViewToScreen(const IntRect& r) const OVERRIDE { return r; }
169 virtual PlatformPageClient platformPageClient() const { return 0; }
170 virtual void contentsSizeChanged(Frame*, const IntSize&) const { }
172 virtual void scrollbarsModeDidChange() const { }
173 virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) { }
175 virtual void setToolTip(const String&, TextDirection) { }
177 virtual void print(Frame*) { }
179 #if ENABLE(SQL_DATABASE)
180 virtual void exceededDatabaseQuota(Frame*, const String&) { }
183 virtual void reachedMaxAppCacheSize(int64_t) { }
184 virtual void reachedApplicationCacheOriginQuota(SecurityOrigin*, int64_t) { }
185 #if ENABLE(TIZEN_APPLICATION_CACHE)
186 virtual bool requestApplicationCachePermission(Frame*) { }
189 #if ENABLE(DIRECTORY_UPLOAD)
190 virtual void enumerateChosenDirectory(FileChooser*) { }
193 #if ENABLE(INPUT_TYPE_COLOR)
194 virtual PassOwnPtr<ColorChooser> createColorChooser(ColorChooserClient*, const Color&) OVERRIDE;
197 virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) OVERRIDE;
198 virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*) { }
200 virtual void formStateDidChange(const Node*) { }
202 virtual void elementDidFocus(const Node*) { }
203 virtual void elementDidBlur(const Node*) { }
205 virtual void setCursor(const Cursor&) { }
206 virtual void setCursorHiddenUntilMouseMoves(bool) { }
208 virtual void scrollRectIntoView(const IntRect&) const { }
210 #if USE(ACCELERATED_COMPOSITING)
211 virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*) {}
212 virtual void setNeedsOneShotDrawingSynchronization() {}
213 virtual void scheduleCompositingLayerSync() {}
214 #if ENABLE(TIZEN_CSS_OVERFLOW_SCROLL_ACCELERATION)
215 virtual void addOrUpdateScrollingLayer(Node*, GraphicsLayer* scrollingLayer, GraphicsLayer* contentsLayer, const IntSize& scrollSize) { }
216 virtual void removeScrollingLayer(Node*, GraphicsLayer*, GraphicsLayer*) { }
221 virtual void setLastSetCursorToCurrentCursor() { }
223 #if ENABLE(TOUCH_EVENTS)
224 virtual void needTouchEvents(bool) { }
227 virtual void numWheelEventHandlersChanged(unsigned) OVERRIDE { }
229 virtual bool shouldRubberBandInDirection(WebCore::ScrollDirection) const { return false; }
231 #if ENABLE(TIZEN_WEBKIT2_HISTORICAL_RESTORE_VISIBLE_CONTENT_RECT)
232 virtual void requestVisibleContentRectRestore(const IntPoint& scrollOffset, float scale) { }
233 virtual float contentsScaleFactor() const { return 1.0; }
237 class EmptyFrameLoaderClient : public FrameLoaderClient {
238 WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
240 EmptyFrameLoaderClient() { }
241 virtual ~EmptyFrameLoaderClient() { }
242 virtual void frameLoaderDestroyed() { }
244 virtual bool hasWebView() const { return true; } // mainly for assertions
246 virtual void makeRepresentation(DocumentLoader*) { }
247 virtual void forceLayout() { }
248 virtual void forceLayoutForNonHTML() { }
250 virtual void setCopiesOnScroll() { }
252 virtual void detachedFromParent2() { }
253 virtual void detachedFromParent3() { }
255 virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceResponse&) { }
257 virtual void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) { }
258 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) { return false; }
259 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) { }
260 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
261 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
262 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
263 virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long, const ProtectionSpace&) { return false; }
265 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) { }
266 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) { }
267 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) { }
268 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) { }
269 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) { return false; }
271 virtual void dispatchDidHandleOnloadEvents() { }
272 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { }
273 virtual void dispatchDidCancelClientRedirect() { }
274 virtual void dispatchWillPerformClientRedirect(const KURL&, double, double) { }
275 virtual void dispatchDidChangeLocationWithinPage() { }
276 virtual void dispatchDidPushStateWithinPage() { }
277 virtual void dispatchDidReplaceStateWithinPage() { }
278 virtual void dispatchDidPopStateWithinPage() { }
279 virtual void dispatchWillClose() { }
280 virtual void dispatchDidReceiveIcon() { }
281 virtual void dispatchDidStartProvisionalLoad() { }
282 virtual void dispatchDidReceiveTitle(const StringWithDirection&) { }
283 virtual void dispatchDidChangeIcons(IconType) { }
284 virtual void dispatchDidCommitLoad() { }
285 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { }
286 virtual void dispatchDidFailLoad(const ResourceError&) { }
287 virtual void dispatchDidFinishDocumentLoad() { }
288 virtual void dispatchDidFinishLoad() { }
289 virtual void dispatchDidFirstLayout() { }
290 virtual void dispatchDidFirstVisuallyNonEmptyLayout() { }
291 virtual void dispatchDidNewFirstVisuallyNonEmptyLayout() { }
293 virtual Frame* dispatchCreatePage(const NavigationAction&) { return 0; }
294 virtual void dispatchShow() { }
296 virtual void dispatchDecidePolicyForResponse(FramePolicyFunction, const ResourceResponse&, const ResourceRequest&) { }
297 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) OVERRIDE;
298 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) OVERRIDE;
299 virtual void cancelPolicyCheck() { }
301 virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
303 virtual void dispatchWillSendSubmitEvent(PassRefPtr<FormState>) OVERRIDE;
304 virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) OVERRIDE;
306 virtual void revertToProvisionalState(DocumentLoader*) { }
307 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
309 virtual void willChangeEstimatedProgress() { }
310 virtual void didChangeEstimatedProgress() { }
311 virtual void postProgressStartedNotification() { }
312 virtual void postProgressEstimateChangedNotification() { }
313 virtual void postProgressFinishedNotification() { }
315 virtual void setMainFrameDocumentReady(bool) { }
317 virtual void startDownload(const ResourceRequest&, const String& suggestedName = String()) { UNUSED_PARAM(suggestedName); }
319 virtual void willChangeTitle(DocumentLoader*) { }
320 virtual void didChangeTitle(DocumentLoader*) { }
322 virtual void committedLoad(DocumentLoader*, const char*, int) { }
323 virtual void finishedLoading(DocumentLoader*) { }
325 virtual ResourceError cancelledError(const ResourceRequest&) { ResourceError error("", 0, "", ""); error.setIsCancellation(true); return error; }
326 virtual ResourceError blockedError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
327 virtual ResourceError cannotShowURLError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
328 virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
330 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
331 virtual ResourceError fileDoesNotExistError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
332 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
334 virtual bool shouldFallBack(const ResourceError&) { return false; }
336 virtual bool canHandleRequest(const ResourceRequest&) const { return false; }
337 virtual bool canShowMIMEType(const String&) const { return false; }
338 virtual bool canShowMIMETypeAsHTML(const String&) const { return false; }
339 virtual bool representationExistsForURLScheme(const String&) const { return false; }
340 virtual String generatedMIMETypeForURLScheme(const String&) const { return ""; }
342 virtual void frameLoadCompleted() { }
343 virtual void restoreViewState() { }
344 virtual void provisionalLoadStarted() { }
345 virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const { return false; }
346 virtual void didFinishLoad() { }
347 virtual void prepareForDataSourceReplacement() { }
349 virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) OVERRIDE;
350 virtual void setTitle(const StringWithDirection&, const KURL&) { }
352 virtual String userAgent(const KURL&) { return ""; }
354 virtual void savePlatformDataToCachedFrame(CachedFrame*) { }
355 virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { }
356 virtual void transitionToCommittedForNewPage() { }
358 virtual void didSaveToPageCache() { }
359 virtual void didRestoreFromPageCache() { }
361 virtual void dispatchDidBecomeFrameset(bool) { }
363 virtual void updateGlobalHistory() { }
364 virtual void updateGlobalHistoryRedirectLinks() { }
365 virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; }
366 virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const { return false; }
367 virtual void updateGlobalHistoryItemForPage() { }
368 virtual void saveViewStateToItem(HistoryItem*) { }
369 virtual bool canCachePage() const { return false; }
370 virtual void didDisplayInsecureContent() { }
371 virtual void didRunInsecureContent(SecurityOrigin*, const KURL&) { }
372 virtual void didDetectXSS(const KURL&, bool) { }
373 virtual PassRefPtr<Frame> createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) OVERRIDE;
374 virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool) OVERRIDE;
375 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) OVERRIDE;
376 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
377 virtual PassRefPtr<Widget> createMediaPlayerProxyPlugin(const IntSize&, HTMLMediaElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) OVERRIDE;
378 virtual void hideMediaPlayerProxyPlugin(Widget*) { }
379 virtual void showMediaPlayerProxyPlugin(Widget*) { }
382 virtual ObjectContentType objectContentType(const KURL&, const String&, bool) { return ObjectContentType(); }
383 virtual String overrideMediaType() const { return String(); }
385 virtual void redirectDataToPlugin(Widget*) { }
386 virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) { }
387 virtual void documentElementAvailable() { }
388 virtual void didPerformFirstNavigation() const { }
390 virtual void registerForIconNotification(bool) { }
393 virtual void didCreateScriptContext(v8::Handle<v8::Context>, int extensionGroup, int worldId) { }
394 virtual void willReleaseScriptContext(v8::Handle<v8::Context>, int worldId) { }
395 virtual bool allowScriptExtension(const String& extensionName, int extensionGroup, int worldId) { return false; }
399 virtual RemoteAXObjectRef accessibilityRemoteObject() { return 0; }
400 virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; }
402 #if PLATFORM(WIN) && USE(CFNETWORK)
403 // FIXME: Windows should use willCacheResponse - <https://bugs.webkit.org/show_bug.cgi?id=57257>.
404 virtual bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&, const unsigned char*, unsigned long long) { return true; }
407 virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() OVERRIDE;
409 #if ENABLE(WEB_INTENTS)
410 virtual void dispatchIntent(PassRefPtr<IntentRequest>) OVERRIDE;
413 #if ENABLE(TIZEN_CERTIFICATE_HANDLING)
414 virtual bool dispatchDecidePolicyForCertificateError(bool, const String&, const String&, int) { return false; }
418 class EmptyTextCheckerClient : public TextCheckerClient {
420 virtual bool shouldEraseMarkersAfterChangeSelection(TextCheckingType) const { return true; }
421 virtual void ignoreWordInSpellDocument(const String&) { }
422 virtual void learnWord(const String&) { }
423 virtual void checkSpellingOfString(const UChar*, int, int*, int*) { }
424 virtual String getAutoCorrectSuggestionForMisspelledWord(const String&) { return String(); }
425 virtual void checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) { }
427 #if USE(UNIFIED_TEXT_CHECKING)
428 virtual void checkTextOfParagraph(const UChar*, int, TextCheckingTypeMask, Vector<TextCheckingResult>&) { };
431 virtual void getGuessesForWord(const String&, const String&, Vector<String>&) { }
432 virtual void requestCheckingOfString(PassRefPtr<TextCheckingRequest>) OVERRIDE;
435 class EmptyEditorClient : public EditorClient {
436 WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
438 EmptyEditorClient() { }
439 virtual ~EmptyEditorClient() { }
440 virtual void pageDestroyed() { }
441 virtual void frameWillDetachPage(Frame*) { }
443 virtual bool shouldDeleteRange(Range*) { return false; }
444 virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; }
445 virtual bool smartInsertDeleteEnabled() { return false; }
446 virtual bool isSelectTrailingWhitespaceEnabled() { return false; }
447 virtual bool isContinuousSpellCheckingEnabled() { return false; }
448 virtual void toggleContinuousSpellChecking() { }
449 virtual bool isGrammarCheckingEnabled() { return false; }
450 virtual void toggleGrammarChecking() { }
451 virtual int spellCheckerDocumentTag() { return -1; }
453 virtual bool selectWordBeforeMenuEvent() { return false; }
454 virtual bool isEditable() { return false; }
456 virtual bool shouldBeginEditing(Range*) { return false; }
457 virtual bool shouldEndEditing(Range*) { return false; }
458 virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) { return false; }
459 virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) { return false; }
460 virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) { return false; }
462 virtual bool shouldApplyStyle(StylePropertySet*, Range*) { return false; }
463 virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; }
465 virtual void didBeginEditing() { }
466 virtual void respondToChangedContents() { }
467 virtual void respondToChangedSelection(Frame*) { }
468 virtual void didEndEditing() { }
469 virtual void didWriteSelectionToPasteboard() { }
470 virtual void didSetSelectionTypesForPasteboard() { }
472 virtual void registerUndoStep(PassRefPtr<UndoStep>) OVERRIDE;
473 virtual void registerRedoStep(PassRefPtr<UndoStep>) OVERRIDE;
474 virtual void clearUndoRedoOperations() { }
476 virtual bool canCopyCut(Frame*, bool defaultValue) const { return defaultValue; }
477 virtual bool canPaste(Frame*, bool defaultValue) const { return defaultValue; }
478 virtual bool canUndo() const { return false; }
479 virtual bool canRedo() const { return false; }
481 virtual void undo() { }
482 virtual void redo() { }
484 virtual void handleKeyboardEvent(KeyboardEvent*) { }
485 virtual void handleInputMethodKeydown(KeyboardEvent*) { }
487 virtual void textFieldDidBeginEditing(Element*) { }
488 virtual void textFieldDidEndEditing(Element*) { }
489 virtual void textDidChangeInTextField(Element*) { }
490 virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) { return false; }
491 virtual void textWillBeDeletedInTextField(Element*) { }
492 virtual void textDidChangeInTextArea(Element*) { }
495 virtual void markedTextAbandoned(Frame*) { }
497 virtual NSString* userVisibleString(NSURL*) { return 0; }
498 virtual DocumentFragment* documentFragmentFromAttributedString(NSAttributedString*, Vector<RefPtr<ArchiveResource> >&) { return 0; };
499 virtual void setInsertionPasteboard(const String&) { };
500 virtual NSURL* canonicalizeURL(NSURL*) { return 0; }
501 virtual NSURL* canonicalizeURLString(NSString*) { return 0; }
505 virtual void uppercaseWord() { }
506 virtual void lowercaseWord() { }
507 virtual void capitalizeWord() { }
509 #if USE(AUTOMATIC_TEXT_REPLACEMENT)
510 virtual void showSubstitutionsPanel(bool) { }
511 virtual bool substitutionsPanelIsShowing() { return false; }
512 virtual void toggleSmartInsertDelete() { }
513 virtual bool isAutomaticQuoteSubstitutionEnabled() { return false; }
514 virtual void toggleAutomaticQuoteSubstitution() { }
515 virtual bool isAutomaticLinkDetectionEnabled() { return false; }
516 virtual void toggleAutomaticLinkDetection() { }
517 virtual bool isAutomaticDashSubstitutionEnabled() { return false; }
518 virtual void toggleAutomaticDashSubstitution() { }
519 virtual bool isAutomaticTextReplacementEnabled() { return false; }
520 virtual void toggleAutomaticTextReplacement() { }
521 virtual bool isAutomaticSpellingCorrectionEnabled() { return false; }
522 virtual void toggleAutomaticSpellingCorrection() { }
525 virtual bool shouldShowUnicodeMenu() { return false; }
527 TextCheckerClient* textChecker() { return &m_textCheckerClient; }
529 virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) { }
530 virtual void updateSpellingUIWithMisspelledWord(const String&) { }
531 virtual void showSpellingUI(bool) { }
532 virtual bool spellingUIIsShowing() { return false; }
534 virtual void willSetInputMethodState() { }
535 virtual void setInputMethodState(bool) { }
537 #if ENABLE(TIZEN_CLIPBOARD) || ENABLE(TIZEN_PASTEBOARD)
538 virtual void setClipboardData(const String& data, const String& type) { }
539 virtual void setClipboardDataForPaste(const String& data, const String& type) { }
540 virtual void clearClipboardData() { }
543 #if ENABLE(TIZEN_ISF_PORT)
544 virtual void didCancelComposition(Node*) { }
548 EmptyTextCheckerClient m_textCheckerClient;
551 #if ENABLE(CONTEXT_MENUS)
552 class EmptyContextMenuClient : public ContextMenuClient {
553 WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
555 EmptyContextMenuClient() { }
556 virtual ~EmptyContextMenuClient() { }
557 virtual void contextMenuDestroyed() { }
559 #if USE(CROSS_PLATFORM_CONTEXT_MENUS)
560 virtual PassOwnPtr<ContextMenu> customizeMenu(PassOwnPtr<ContextMenu>) OVERRIDE;
562 virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; }
564 virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { }
566 virtual void downloadURL(const KURL&) { }
567 virtual void copyImageToClipboard(const HitTestResult&) { }
568 virtual void searchWithGoogle(const Frame*) { }
569 virtual void lookUpInDictionary(Frame*) { }
570 virtual bool isSpeaking() { return false; }
571 virtual void speak(const String&) { }
572 virtual void stopSpeaking() { }
575 virtual void searchWithSpotlight() { }
578 #if USE(ACCESSIBILITY_CONTEXT_MENUS)
579 virtual void showContextMenu() { }
582 #endif // ENABLE(CONTEXT_MENUS)
584 #if ENABLE(DRAG_SUPPORT)
585 class EmptyDragClient : public DragClient {
586 WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
588 EmptyDragClient() { }
589 virtual ~EmptyDragClient() {}
590 virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { }
591 virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) { }
592 virtual DragDestinationAction actionMaskForDrag(DragData*) { return DragDestinationActionNone; }
593 virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) { return DragSourceActionNone; }
594 virtual void startDrag(DragImageRef, const IntPoint&, const IntPoint&, Clipboard*, Frame*, bool) { }
595 virtual void dragControllerDestroyed() { }
597 #endif // ENABLE(DRAG_SUPPORT)
599 class EmptyInspectorClient : public InspectorClient {
600 WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
602 EmptyInspectorClient() { }
603 virtual ~EmptyInspectorClient() { }
605 virtual void inspectorDestroyed() { }
607 virtual InspectorFrontendChannel* openInspectorFrontend(InspectorController*) { return 0; }
608 virtual void closeInspectorFrontend() { }
609 virtual void bringFrontendToFront() { }
611 virtual void highlight() { }
612 virtual void hideHighlight() { }
615 class EmptyDeviceMotionClient : public DeviceMotionClient {
617 virtual void setController(DeviceMotionController*) { }
618 virtual void startUpdating() { }
619 virtual void stopUpdating() { }
620 virtual DeviceMotionData* lastMotion() const { return 0; }
621 virtual void deviceMotionControllerDestroyed() { }
624 class EmptyDeviceOrientationClient : public DeviceOrientationClient {
626 virtual void setController(DeviceOrientationController*) { }
627 virtual void startUpdating() { }
628 virtual void stopUpdating() { }
629 virtual DeviceOrientationData* lastOrientation() const { return 0; }
630 virtual void deviceOrientationControllerDestroyed() { }
633 void fillWithEmptyClients(Page::PageClients&);
637 #endif // EmptyClients_h