Remove work-around patch for naver
[framework/web/webkit-efl.git] / Source / WebCore / loader / EmptyClients.h
1 /*
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.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
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.
15  *
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.
27  */
28
29 #ifndef EmptyClients_h
30 #define EmptyClients_h
31
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"
43 #include "Page.h"
44 #include "ResourceError.h"
45
46 #if USE(V8)
47 #include <v8.h>
48 #endif
49
50 /*
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).
54
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.
58
59  Ideally, whenever you change a Client class, you should add a stub here.
60  Brittle, yes.  Unfortunate, yes.  Hopefully temporary.
61 */
62
63 namespace WebCore {
64
65 class GraphicsContext3D;
66
67 class EmptyChromeClient : public ChromeClient {
68 public:
69     virtual ~EmptyChromeClient() { }
70     virtual void chromeDestroyed() { }
71
72     virtual void* webView() const { return 0; }
73     virtual void setWindowRect(const FloatRect&) { }
74     virtual FloatRect windowRect() { return FloatRect(); }
75
76     virtual FloatRect pageRect() { return FloatRect(); }
77
78     virtual void focus() { }
79     virtual void unfocus() { }
80
81     virtual bool canTakeFocus(FocusDirection) { return false; }
82     virtual void takeFocus(FocusDirection) { }
83
84     virtual void focusedNodeChanged(Node*) { }
85     virtual void focusedFrameChanged(Frame*) { }
86
87     virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&, const NavigationAction&) { return 0; }
88     virtual void show() { }
89
90     virtual bool canRunModal() { return false; }
91     virtual void runModal() { }
92
93     virtual void setToolbarsVisible(bool) { }
94     virtual bool toolbarsVisible() { return false; }
95
96     virtual void setStatusbarVisible(bool) { }
97     virtual bool statusbarVisible() { return false; }
98
99     virtual void setScrollbarsVisible(bool) { }
100     virtual bool scrollbarsVisible() { return false; }
101
102     virtual void setMenubarVisible(bool) { }
103     virtual bool menubarVisible() { return false; }
104
105     virtual void setResizable(bool) { }
106
107     virtual void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, unsigned, const String&) { }
108
109     virtual bool canRunBeforeUnloadConfirmPanel() { return false; }
110     virtual bool runBeforeUnloadConfirmPanel(const String&, Frame*) { return true; }
111
112     virtual void closeWindowSoon() { }
113
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; }
118
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 { }
129 #endif
130
131 #if ENABLE(REGISTER_PROTOCOL_HANDLER)
132     virtual void registerProtocolHandler(const String&, const String&, const String&, const String&) { }
133 #endif
134
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&) { }
139 #endif
140
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; }
144 #endif
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&) { }
148 #endif
149
150     virtual void setStatusbarText(const String&) { }
151
152     virtual KeyboardUIMode keyboardUIMode() { return KeyboardAccessDefault; }
153
154     virtual IntRect windowResizerRect() const { return IntRect(); }
155
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&) { }
162 #endif
163 #if ENABLE(REQUEST_ANIMATION_FRAME) && !USE(REQUEST_ANIMATION_FRAME_TIMER)
164     virtual void scheduleAnimation() { }
165 #endif
166
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 { }
171
172     virtual void scrollbarsModeDidChange() const { }
173     virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) { }
174
175     virtual void setToolTip(const String&, TextDirection) { }
176
177     virtual void print(Frame*) { }
178
179 #if ENABLE(SQL_DATABASE)
180     virtual void exceededDatabaseQuota(Frame*, const String&) { }
181 #endif
182
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; }
187 #endif
188
189 #if ENABLE(DIRECTORY_UPLOAD)
190     virtual void enumerateChosenDirectory(FileChooser*) { }
191 #endif
192
193 #if ENABLE(INPUT_TYPE_COLOR)
194     virtual PassOwnPtr<ColorChooser> createColorChooser(ColorChooserClient*, const Color&) OVERRIDE;
195 #endif
196
197     virtual void runOpenPanel(Frame*, PassRefPtr<FileChooser>) OVERRIDE;
198     virtual void loadIconForFiles(const Vector<String>&, FileIconLoader*) { }
199
200     virtual void formStateDidChange(const Node*) { }
201
202     virtual void elementDidFocus(const Node*) { }
203     virtual void elementDidBlur(const Node*) { }
204
205     virtual void setCursor(const Cursor&) { }
206     virtual void setCursorHiddenUntilMouseMoves(bool) { }
207
208     virtual void scrollRectIntoView(const IntRect&) const { }
209
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*) { }
217 #endif
218 #endif
219
220 #if PLATFORM(WIN)
221     virtual void setLastSetCursorToCurrentCursor() { }
222 #endif
223 #if ENABLE(TOUCH_EVENTS)
224     virtual void needTouchEvents(bool) { }
225 #endif
226
227     virtual void numWheelEventHandlersChanged(unsigned) OVERRIDE { }
228     
229     virtual bool shouldRubberBandInDirection(WebCore::ScrollDirection) const { return false; }
230
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; }
234 #endif
235
236 #if ENABLE(TIZEN_INDEXED_DATABASE)
237     virtual bool exceededIndexedDatabaseQuota(Frame*, int64_t) { return false; }
238 #endif
239
240 #if ENABLE(TIZEN_FILE_SYSTEM)
241     virtual bool exceededLocalFileSystemQuota(Frame* frame, int64_t currentUsage) { return false; }
242 #endif
243
244 };
245
246 class EmptyFrameLoaderClient : public FrameLoaderClient {
247     WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
248 public:
249     EmptyFrameLoaderClient() { }
250     virtual ~EmptyFrameLoaderClient() {  }
251     virtual void frameLoaderDestroyed() { }
252
253     virtual bool hasWebView() const { return true; } // mainly for assertions
254
255     virtual void makeRepresentation(DocumentLoader*) { }
256     virtual void forceLayout() { }
257     virtual void forceLayoutForNonHTML() { }
258
259     virtual void setCopiesOnScroll() { }
260
261     virtual void detachedFromParent2() { }
262     virtual void detachedFromParent3() { }
263
264     virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceResponse&) { }
265
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; }
273 #endif
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; }
279
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() { }
301
302     virtual Frame* dispatchCreatePage(const NavigationAction&) { return 0; }
303     virtual void dispatchShow() { }
304
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() { }
309
310     virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
311
312     virtual void dispatchWillSendSubmitEvent(PassRefPtr<FormState>) OVERRIDE;
313     virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) OVERRIDE;
314
315     virtual void revertToProvisionalState(DocumentLoader*) { }
316     virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
317
318     virtual void willChangeEstimatedProgress() { }
319     virtual void didChangeEstimatedProgress() { }
320     virtual void postProgressStartedNotification() { }
321     virtual void postProgressEstimateChangedNotification() { }
322     virtual void postProgressFinishedNotification() { }
323
324     virtual void setMainFrameDocumentReady(bool) { }
325
326     virtual void startDownload(const ResourceRequest&, const String& suggestedName = String()) { UNUSED_PARAM(suggestedName); }
327
328     virtual void willChangeTitle(DocumentLoader*) { }
329     virtual void didChangeTitle(DocumentLoader*) { }
330
331     virtual void committedLoad(DocumentLoader*, const char*, int) { }
332     virtual void finishedLoading(DocumentLoader*) { }
333
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, "", ""); }
338
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, "", ""); }
342
343     virtual bool shouldFallBack(const ResourceError&) { return false; }
344
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 ""; }
350
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() { }
357
358     virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) OVERRIDE;
359     virtual void setTitle(const StringWithDirection&, const KURL&) { }
360
361     virtual String userAgent(const KURL&) { return ""; }
362
363     virtual void savePlatformDataToCachedFrame(CachedFrame*) { }
364     virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { }
365     virtual void transitionToCommittedForNewPage() { }    
366
367     virtual void didSaveToPageCache() { }
368     virtual void didRestoreFromPageCache() { }
369
370     virtual void dispatchDidBecomeFrameset(bool) { }
371
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*) { }
389 #endif
390
391     virtual ObjectContentType objectContentType(const KURL&, const String&, bool) { return ObjectContentType(); }
392     virtual String overrideMediaType() const { return String(); }
393
394     virtual void redirectDataToPlugin(Widget*) { }
395     virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) { }
396     virtual void documentElementAvailable() { }
397     virtual void didPerformFirstNavigation() const { }
398
399     virtual void registerForIconNotification(bool) { }
400
401 #if USE(V8)
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; }
405 #endif
406
407 #if PLATFORM(MAC)
408     virtual RemoteAXObjectRef accessibilityRemoteObject() { return 0; }
409     virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; }
410 #endif
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; }
414 #endif
415
416     virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() OVERRIDE;
417
418 #if ENABLE(WEB_INTENTS)
419     virtual void dispatchIntent(PassRefPtr<IntentRequest>) OVERRIDE;
420 #endif
421
422 #if ENABLE(TIZEN_CERTIFICATE_HANDLING)
423     virtual bool dispatchDecidePolicyForCertificateError(bool, const String&, const String&, int) { return false; }
424 #endif
425 };
426
427 class EmptyTextCheckerClient : public TextCheckerClient {
428 public:
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*) { }
435
436 #if USE(UNIFIED_TEXT_CHECKING)
437     virtual void checkTextOfParagraph(const UChar*, int, TextCheckingTypeMask, Vector<TextCheckingResult>&) { };
438 #endif
439
440     virtual void getGuessesForWord(const String&, const String&, Vector<String>&) { }
441     virtual void requestCheckingOfString(PassRefPtr<TextCheckingRequest>) OVERRIDE;
442 };
443
444 class EmptyEditorClient : public EditorClient {
445     WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
446 public:
447     EmptyEditorClient() { }
448     virtual ~EmptyEditorClient() { }
449     virtual void pageDestroyed() { }
450     virtual void frameWillDetachPage(Frame*) { }
451
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; }
461
462     virtual bool selectWordBeforeMenuEvent() { return false; }
463     virtual bool isEditable() { return false; }
464
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; }
470
471     virtual bool shouldApplyStyle(StylePropertySet*, Range*) { return false; }
472     virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; }
473
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() { }
480
481     virtual void registerUndoStep(PassRefPtr<UndoStep>) OVERRIDE;
482     virtual void registerRedoStep(PassRefPtr<UndoStep>) OVERRIDE;
483     virtual void clearUndoRedoOperations() { }
484
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; }
489
490     virtual void undo() { }
491     virtual void redo() { }
492
493     virtual void handleKeyboardEvent(KeyboardEvent*) { }
494     virtual void handleInputMethodKeydown(KeyboardEvent*) { }
495
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*) { }
502
503 #if PLATFORM(MAC)
504     virtual void markedTextAbandoned(Frame*) { }
505
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; }
511 #endif
512
513 #if USE(APPKIT)
514     virtual void uppercaseWord() { }
515     virtual void lowercaseWord() { }
516     virtual void capitalizeWord() { }
517 #endif
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() { }
532 #endif
533 #if PLATFORM(GTK)
534     virtual bool shouldShowUnicodeMenu() { return false; }
535 #endif
536     TextCheckerClient* textChecker() { return &m_textCheckerClient; }
537
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; }
542
543     virtual void willSetInputMethodState() { }
544     virtual void setInputMethodState(bool) { }
545
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() { }
550 #endif
551
552 #if ENABLE(TIZEN_ISF_PORT)
553     virtual void didCancelComposition(Node*) { }
554 #endif
555
556 private:
557     EmptyTextCheckerClient m_textCheckerClient;
558 };
559
560 #if ENABLE(CONTEXT_MENUS)
561 class EmptyContextMenuClient : public ContextMenuClient {
562     WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
563 public:
564     EmptyContextMenuClient() { }
565     virtual ~EmptyContextMenuClient() {  }
566     virtual void contextMenuDestroyed() { }
567
568 #if USE(CROSS_PLATFORM_CONTEXT_MENUS)
569     virtual PassOwnPtr<ContextMenu> customizeMenu(PassOwnPtr<ContextMenu>) OVERRIDE;
570 #else
571     virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; }
572 #endif
573     virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { }
574
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() { }
582
583 #if PLATFORM(MAC)
584     virtual void searchWithSpotlight() { }
585 #endif
586
587 #if USE(ACCESSIBILITY_CONTEXT_MENUS)
588     virtual void showContextMenu() { }
589 #endif
590 };
591 #endif // ENABLE(CONTEXT_MENUS)
592
593 #if ENABLE(DRAG_SUPPORT)
594 class EmptyDragClient : public DragClient {
595     WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
596 public:
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() { }
605 };
606 #endif // ENABLE(DRAG_SUPPORT)
607
608 class EmptyInspectorClient : public InspectorClient {
609     WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
610 public:
611     EmptyInspectorClient() { }
612     virtual ~EmptyInspectorClient() { }
613
614     virtual void inspectorDestroyed() { }
615     
616     virtual InspectorFrontendChannel* openInspectorFrontend(InspectorController*) { return 0; }
617     virtual void closeInspectorFrontend() { }
618     virtual void bringFrontendToFront() { }
619
620     virtual void highlight() { }
621     virtual void hideHighlight() { }
622 };
623
624 class EmptyDeviceMotionClient : public DeviceMotionClient {
625 public:
626     virtual void setController(DeviceMotionController*) { }
627     virtual void startUpdating() { }
628     virtual void stopUpdating() { }
629     virtual DeviceMotionData* lastMotion() const { return 0; }
630     virtual void deviceMotionControllerDestroyed() { }
631 };
632
633 class EmptyDeviceOrientationClient : public DeviceOrientationClient {
634 public:
635     virtual void setController(DeviceOrientationController*) { }
636     virtual void startUpdating() { }
637     virtual void stopUpdating() { }
638     virtual DeviceOrientationData* lastOrientation() const { return 0; }
639     virtual void deviceOrientationControllerDestroyed() { }
640 };
641
642 void fillWithEmptyClients(Page::PageClients&);
643
644 }
645
646 #endif // EmptyClients_h