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*) { return false; }
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; }
236 #if ENABLE(TIZEN_INDEXED_DATABASE)
237 virtual bool exceededIndexedDatabaseQuota(Frame*, int64_t) { return false; }
240 #if ENABLE(TIZEN_FILE_SYSTEM)
241 virtual bool exceededLocalFileSystemQuota(Frame* frame, int64_t currentUsage) { return false; }
246 class EmptyFrameLoaderClient : public FrameLoaderClient {
247 WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
249 EmptyFrameLoaderClient() { }
250 virtual ~EmptyFrameLoaderClient() { }
251 virtual void frameLoaderDestroyed() { }
253 virtual bool hasWebView() const { return true; } // mainly for assertions
255 virtual void makeRepresentation(DocumentLoader*) { }
256 virtual void forceLayout() { }
257 virtual void forceLayoutForNonHTML() { }
259 virtual void setCopiesOnScroll() { }
261 virtual void detachedFromParent2() { }
262 virtual void detachedFromParent3() { }
264 virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceResponse&) { }
266 virtual void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) { }
267 virtual bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) { return false; }
268 virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) { }
269 virtual void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
270 virtual void dispatchDidCancelAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) { }
271 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
272 virtual bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long, const ProtectionSpace&) { return false; }
274 virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) { }
275 virtual void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) { }
276 virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) { }
277 virtual void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) { }
278 virtual bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) { return false; }
280 virtual void dispatchDidHandleOnloadEvents() { }
281 virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() { }
282 virtual void dispatchDidCancelClientRedirect() { }
283 virtual void dispatchWillPerformClientRedirect(const KURL&, double, double) { }
284 virtual void dispatchDidChangeLocationWithinPage() { }
285 virtual void dispatchDidPushStateWithinPage() { }
286 virtual void dispatchDidReplaceStateWithinPage() { }
287 virtual void dispatchDidPopStateWithinPage() { }
288 virtual void dispatchWillClose() { }
289 virtual void dispatchDidReceiveIcon() { }
290 virtual void dispatchDidStartProvisionalLoad() { }
291 virtual void dispatchDidReceiveTitle(const StringWithDirection&) { }
292 virtual void dispatchDidChangeIcons(IconType) { }
293 virtual void dispatchDidCommitLoad() { }
294 virtual void dispatchDidFailProvisionalLoad(const ResourceError&) { }
295 virtual void dispatchDidFailLoad(const ResourceError&) { }
296 virtual void dispatchDidFinishDocumentLoad() { }
297 virtual void dispatchDidFinishLoad() { }
298 virtual void dispatchDidFirstLayout() { }
299 virtual void dispatchDidFirstVisuallyNonEmptyLayout() { }
300 virtual void dispatchDidNewFirstVisuallyNonEmptyLayout() { }
302 virtual Frame* dispatchCreatePage(const NavigationAction&) { return 0; }
303 virtual void dispatchShow() { }
305 virtual void dispatchDecidePolicyForResponse(FramePolicyFunction, const ResourceResponse&, const ResourceRequest&) { }
306 virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) OVERRIDE;
307 virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) OVERRIDE;
308 virtual void cancelPolicyCheck() { }
310 virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
312 virtual void dispatchWillSendSubmitEvent(PassRefPtr<FormState>) OVERRIDE;
313 virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) OVERRIDE;
315 virtual void revertToProvisionalState(DocumentLoader*) { }
316 virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
318 virtual void willChangeEstimatedProgress() { }
319 virtual void didChangeEstimatedProgress() { }
320 virtual void postProgressStartedNotification() { }
321 virtual void postProgressEstimateChangedNotification() { }
322 virtual void postProgressFinishedNotification() { }
324 virtual void setMainFrameDocumentReady(bool) { }
326 virtual void startDownload(const ResourceRequest&, const String& suggestedName = String()) { UNUSED_PARAM(suggestedName); }
328 virtual void willChangeTitle(DocumentLoader*) { }
329 virtual void didChangeTitle(DocumentLoader*) { }
331 virtual void committedLoad(DocumentLoader*, const char*, int) { }
332 virtual void finishedLoading(DocumentLoader*) { }
334 virtual ResourceError cancelledError(const ResourceRequest&) { ResourceError error("", 0, "", ""); error.setIsCancellation(true); return error; }
335 virtual ResourceError blockedError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
336 virtual ResourceError cannotShowURLError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
337 virtual ResourceError interruptedForPolicyChangeError(const ResourceRequest&) { return ResourceError("", 0, "", ""); }
339 virtual ResourceError cannotShowMIMETypeError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
340 virtual ResourceError fileDoesNotExistError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
341 virtual ResourceError pluginWillHandleLoadError(const ResourceResponse&) { return ResourceError("", 0, "", ""); }
343 virtual bool shouldFallBack(const ResourceError&) { return false; }
345 virtual bool canHandleRequest(const ResourceRequest&) const { return false; }
346 virtual bool canShowMIMEType(const String&) const { return false; }
347 virtual bool canShowMIMETypeAsHTML(const String&) const { return false; }
348 virtual bool representationExistsForURLScheme(const String&) const { return false; }
349 virtual String generatedMIMETypeForURLScheme(const String&) const { return ""; }
351 virtual void frameLoadCompleted() { }
352 virtual void restoreViewState() { }
353 virtual void provisionalLoadStarted() { }
354 virtual bool shouldTreatURLAsSameAsCurrent(const KURL&) const { return false; }
355 virtual void didFinishLoad() { }
356 virtual void prepareForDataSourceReplacement() { }
358 virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) OVERRIDE;
359 virtual void setTitle(const StringWithDirection&, const KURL&) { }
361 virtual String userAgent(const KURL&) { return ""; }
363 virtual void savePlatformDataToCachedFrame(CachedFrame*) { }
364 virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { }
365 virtual void transitionToCommittedForNewPage() { }
367 virtual void didSaveToPageCache() { }
368 virtual void didRestoreFromPageCache() { }
370 virtual void dispatchDidBecomeFrameset(bool) { }
372 virtual void updateGlobalHistory() { }
373 virtual void updateGlobalHistoryRedirectLinks() { }
374 virtual bool shouldGoToHistoryItem(HistoryItem*) const { return false; }
375 virtual bool shouldStopLoadingForHistoryItem(HistoryItem*) const { return false; }
376 virtual void updateGlobalHistoryItemForPage() { }
377 virtual void saveViewStateToItem(HistoryItem*) { }
378 virtual bool canCachePage() const { return false; }
379 virtual void didDisplayInsecureContent() { }
380 virtual void didRunInsecureContent(SecurityOrigin*, const KURL&) { }
381 virtual void didDetectXSS(const KURL&, bool) { }
382 virtual PassRefPtr<Frame> createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) OVERRIDE;
383 virtual PassRefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool) OVERRIDE;
384 virtual PassRefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) OVERRIDE;
385 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
386 virtual PassRefPtr<Widget> createMediaPlayerProxyPlugin(const IntSize&, HTMLMediaElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) OVERRIDE;
387 virtual void hideMediaPlayerProxyPlugin(Widget*) { }
388 virtual void showMediaPlayerProxyPlugin(Widget*) { }
391 virtual ObjectContentType objectContentType(const KURL&, const String&, bool) { return ObjectContentType(); }
392 virtual String overrideMediaType() const { return String(); }
394 virtual void redirectDataToPlugin(Widget*) { }
395 virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) { }
396 virtual void documentElementAvailable() { }
397 virtual void didPerformFirstNavigation() const { }
399 virtual void registerForIconNotification(bool) { }
402 virtual void didCreateScriptContext(v8::Handle<v8::Context>, int extensionGroup, int worldId) { }
403 virtual void willReleaseScriptContext(v8::Handle<v8::Context>, int worldId) { }
404 virtual bool allowScriptExtension(const String& extensionName, int extensionGroup, int worldId) { return false; }
408 virtual RemoteAXObjectRef accessibilityRemoteObject() { return 0; }
409 virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; }
411 #if PLATFORM(WIN) && USE(CFNETWORK)
412 // FIXME: Windows should use willCacheResponse - <https://bugs.webkit.org/show_bug.cgi?id=57257>.
413 virtual bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&, const unsigned char*, unsigned long long) { return true; }
416 virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() OVERRIDE;
418 #if ENABLE(WEB_INTENTS)
419 virtual void dispatchIntent(PassRefPtr<IntentRequest>) OVERRIDE;
422 #if ENABLE(TIZEN_CERTIFICATE_HANDLING)
423 virtual bool dispatchDecidePolicyForCertificateError(bool, const String&, const String&, int) { return false; }
427 class EmptyTextCheckerClient : public TextCheckerClient {
429 virtual bool shouldEraseMarkersAfterChangeSelection(TextCheckingType) const { return true; }
430 virtual void ignoreWordInSpellDocument(const String&) { }
431 virtual void learnWord(const String&) { }
432 virtual void checkSpellingOfString(const UChar*, int, int*, int*) { }
433 virtual String getAutoCorrectSuggestionForMisspelledWord(const String&) { return String(); }
434 virtual void checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*) { }
436 #if USE(UNIFIED_TEXT_CHECKING)
437 virtual void checkTextOfParagraph(const UChar*, int, TextCheckingTypeMask, Vector<TextCheckingResult>&) { };
440 virtual void getGuessesForWord(const String&, const String&, Vector<String>&) { }
441 virtual void requestCheckingOfString(PassRefPtr<TextCheckingRequest>) OVERRIDE;
444 class EmptyEditorClient : public EditorClient {
445 WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
447 EmptyEditorClient() { }
448 virtual ~EmptyEditorClient() { }
449 virtual void pageDestroyed() { }
450 virtual void frameWillDetachPage(Frame*) { }
452 virtual bool shouldDeleteRange(Range*) { return false; }
453 virtual bool shouldShowDeleteInterface(HTMLElement*) { return false; }
454 virtual bool smartInsertDeleteEnabled() { return false; }
455 virtual bool isSelectTrailingWhitespaceEnabled() { return false; }
456 virtual bool isContinuousSpellCheckingEnabled() { return false; }
457 virtual void toggleContinuousSpellChecking() { }
458 virtual bool isGrammarCheckingEnabled() { return false; }
459 virtual void toggleGrammarChecking() { }
460 virtual int spellCheckerDocumentTag() { return -1; }
462 virtual bool selectWordBeforeMenuEvent() { return false; }
463 virtual bool isEditable() { return false; }
465 virtual bool shouldBeginEditing(Range*) { return false; }
466 virtual bool shouldEndEditing(Range*) { return false; }
467 virtual bool shouldInsertNode(Node*, Range*, EditorInsertAction) { return false; }
468 virtual bool shouldInsertText(const String&, Range*, EditorInsertAction) { return false; }
469 virtual bool shouldChangeSelectedRange(Range*, Range*, EAffinity, bool) { return false; }
471 virtual bool shouldApplyStyle(StylePropertySet*, Range*) { return false; }
472 virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; }
474 virtual void didBeginEditing() { }
475 virtual void respondToChangedContents() { }
476 virtual void respondToChangedSelection(Frame*) { }
477 virtual void didEndEditing() { }
478 virtual void didWriteSelectionToPasteboard() { }
479 virtual void didSetSelectionTypesForPasteboard() { }
481 virtual void registerUndoStep(PassRefPtr<UndoStep>) OVERRIDE;
482 virtual void registerRedoStep(PassRefPtr<UndoStep>) OVERRIDE;
483 virtual void clearUndoRedoOperations() { }
485 virtual bool canCopyCut(Frame*, bool defaultValue) const { return defaultValue; }
486 virtual bool canPaste(Frame*, bool defaultValue) const { return defaultValue; }
487 virtual bool canUndo() const { return false; }
488 virtual bool canRedo() const { return false; }
490 virtual void undo() { }
491 virtual void redo() { }
493 virtual void handleKeyboardEvent(KeyboardEvent*) { }
494 virtual void handleInputMethodKeydown(KeyboardEvent*) { }
496 virtual void textFieldDidBeginEditing(Element*) { }
497 virtual void textFieldDidEndEditing(Element*) { }
498 virtual void textDidChangeInTextField(Element*) { }
499 virtual bool doTextFieldCommandFromEvent(Element*, KeyboardEvent*) { return false; }
500 virtual void textWillBeDeletedInTextField(Element*) { }
501 virtual void textDidChangeInTextArea(Element*) { }
504 virtual void markedTextAbandoned(Frame*) { }
506 virtual NSString* userVisibleString(NSURL*) { return 0; }
507 virtual DocumentFragment* documentFragmentFromAttributedString(NSAttributedString*, Vector<RefPtr<ArchiveResource> >&) { return 0; };
508 virtual void setInsertionPasteboard(const String&) { };
509 virtual NSURL* canonicalizeURL(NSURL*) { return 0; }
510 virtual NSURL* canonicalizeURLString(NSString*) { return 0; }
514 virtual void uppercaseWord() { }
515 virtual void lowercaseWord() { }
516 virtual void capitalizeWord() { }
518 #if USE(AUTOMATIC_TEXT_REPLACEMENT)
519 virtual void showSubstitutionsPanel(bool) { }
520 virtual bool substitutionsPanelIsShowing() { return false; }
521 virtual void toggleSmartInsertDelete() { }
522 virtual bool isAutomaticQuoteSubstitutionEnabled() { return false; }
523 virtual void toggleAutomaticQuoteSubstitution() { }
524 virtual bool isAutomaticLinkDetectionEnabled() { return false; }
525 virtual void toggleAutomaticLinkDetection() { }
526 virtual bool isAutomaticDashSubstitutionEnabled() { return false; }
527 virtual void toggleAutomaticDashSubstitution() { }
528 virtual bool isAutomaticTextReplacementEnabled() { return false; }
529 virtual void toggleAutomaticTextReplacement() { }
530 virtual bool isAutomaticSpellingCorrectionEnabled() { return false; }
531 virtual void toggleAutomaticSpellingCorrection() { }
534 virtual bool shouldShowUnicodeMenu() { return false; }
536 TextCheckerClient* textChecker() { return &m_textCheckerClient; }
538 virtual void updateSpellingUIWithGrammarString(const String&, const GrammarDetail&) { }
539 virtual void updateSpellingUIWithMisspelledWord(const String&) { }
540 virtual void showSpellingUI(bool) { }
541 virtual bool spellingUIIsShowing() { return false; }
543 virtual void willSetInputMethodState() { }
544 virtual void setInputMethodState(bool) { }
546 #if ENABLE(TIZEN_CLIPBOARD) || ENABLE(TIZEN_PASTEBOARD)
547 virtual void setClipboardData(const String& data, const String& type) { }
548 virtual void setClipboardDataForPaste(const String& data, const String& type) { }
549 virtual void clearClipboardData() { }
552 #if ENABLE(TIZEN_ISF_PORT)
553 virtual void didCancelComposition(Node*) { }
557 EmptyTextCheckerClient m_textCheckerClient;
560 #if ENABLE(CONTEXT_MENUS)
561 class EmptyContextMenuClient : public ContextMenuClient {
562 WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
564 EmptyContextMenuClient() { }
565 virtual ~EmptyContextMenuClient() { }
566 virtual void contextMenuDestroyed() { }
568 #if USE(CROSS_PLATFORM_CONTEXT_MENUS)
569 virtual PassOwnPtr<ContextMenu> customizeMenu(PassOwnPtr<ContextMenu>) OVERRIDE;
571 virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; }
573 virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { }
575 virtual void downloadURL(const KURL&) { }
576 virtual void copyImageToClipboard(const HitTestResult&) { }
577 virtual void searchWithGoogle(const Frame*) { }
578 virtual void lookUpInDictionary(Frame*) { }
579 virtual bool isSpeaking() { return false; }
580 virtual void speak(const String&) { }
581 virtual void stopSpeaking() { }
584 virtual void searchWithSpotlight() { }
587 #if USE(ACCESSIBILITY_CONTEXT_MENUS)
588 virtual void showContextMenu() { }
591 #endif // ENABLE(CONTEXT_MENUS)
593 #if ENABLE(DRAG_SUPPORT)
594 class EmptyDragClient : public DragClient {
595 WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
597 EmptyDragClient() { }
598 virtual ~EmptyDragClient() {}
599 virtual void willPerformDragDestinationAction(DragDestinationAction, DragData*) { }
600 virtual void willPerformDragSourceAction(DragSourceAction, const IntPoint&, Clipboard*) { }
601 virtual DragDestinationAction actionMaskForDrag(DragData*) { return DragDestinationActionNone; }
602 virtual DragSourceAction dragSourceActionMaskForPoint(const IntPoint&) { return DragSourceActionNone; }
603 virtual void startDrag(DragImageRef, const IntPoint&, const IntPoint&, Clipboard*, Frame*, bool) { }
604 virtual void dragControllerDestroyed() { }
606 #endif // ENABLE(DRAG_SUPPORT)
608 class EmptyInspectorClient : public InspectorClient {
609 WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
611 EmptyInspectorClient() { }
612 virtual ~EmptyInspectorClient() { }
614 virtual void inspectorDestroyed() { }
616 virtual InspectorFrontendChannel* openInspectorFrontend(InspectorController*) { return 0; }
617 virtual void closeInspectorFrontend() { }
618 virtual void bringFrontendToFront() { }
620 virtual void highlight() { }
621 virtual void hideHighlight() { }
624 class EmptyDeviceMotionClient : public DeviceMotionClient {
626 virtual void setController(DeviceMotionController*) { }
627 virtual void startUpdating() { }
628 virtual void stopUpdating() { }
629 virtual DeviceMotionData* lastMotion() const { return 0; }
630 virtual void deviceMotionControllerDestroyed() { }
633 class EmptyDeviceOrientationClient : public DeviceOrientationClient {
635 virtual void setController(DeviceOrientationController*) { }
636 virtual void startUpdating() { }
637 virtual void stopUpdating() { }
638 virtual DeviceOrientationData* lastOrientation() const { return 0; }
639 virtual void deviceOrientationControllerDestroyed() { }
642 void fillWithEmptyClients(Page::PageClients&);
646 #endif // EmptyClients_h