Apply permission popup for offline application cache
[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*) { }
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
237 class EmptyFrameLoaderClient : public FrameLoaderClient {
238     WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
239 public:
240     EmptyFrameLoaderClient() { }
241     virtual ~EmptyFrameLoaderClient() {  }
242     virtual void frameLoaderDestroyed() { }
243
244     virtual bool hasWebView() const { return true; } // mainly for assertions
245
246     virtual void makeRepresentation(DocumentLoader*) { }
247     virtual void forceLayout() { }
248     virtual void forceLayoutForNonHTML() { }
249
250     virtual void setCopiesOnScroll() { }
251
252     virtual void detachedFromParent2() { }
253     virtual void detachedFromParent3() { }
254
255     virtual void download(ResourceHandle*, const ResourceRequest&, const ResourceResponse&) { }
256
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; }
264 #endif
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; }
270
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() { }
292
293     virtual Frame* dispatchCreatePage(const NavigationAction&) { return 0; }
294     virtual void dispatchShow() { }
295
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() { }
300
301     virtual void dispatchUnableToImplementPolicy(const ResourceError&) { }
302
303     virtual void dispatchWillSendSubmitEvent(PassRefPtr<FormState>) OVERRIDE;
304     virtual void dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) OVERRIDE;
305
306     virtual void revertToProvisionalState(DocumentLoader*) { }
307     virtual void setMainDocumentError(DocumentLoader*, const ResourceError&) { }
308
309     virtual void willChangeEstimatedProgress() { }
310     virtual void didChangeEstimatedProgress() { }
311     virtual void postProgressStartedNotification() { }
312     virtual void postProgressEstimateChangedNotification() { }
313     virtual void postProgressFinishedNotification() { }
314
315     virtual void setMainFrameDocumentReady(bool) { }
316
317     virtual void startDownload(const ResourceRequest&, const String& suggestedName = String()) { UNUSED_PARAM(suggestedName); }
318
319     virtual void willChangeTitle(DocumentLoader*) { }
320     virtual void didChangeTitle(DocumentLoader*) { }
321
322     virtual void committedLoad(DocumentLoader*, const char*, int) { }
323     virtual void finishedLoading(DocumentLoader*) { }
324
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, "", ""); }
329
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, "", ""); }
333
334     virtual bool shouldFallBack(const ResourceError&) { return false; }
335
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 ""; }
341
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() { }
348
349     virtual PassRefPtr<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) OVERRIDE;
350     virtual void setTitle(const StringWithDirection&, const KURL&) { }
351
352     virtual String userAgent(const KURL&) { return ""; }
353
354     virtual void savePlatformDataToCachedFrame(CachedFrame*) { }
355     virtual void transitionToCommittedFromCachedFrame(CachedFrame*) { }
356     virtual void transitionToCommittedForNewPage() { }    
357
358     virtual void didSaveToPageCache() { }
359     virtual void didRestoreFromPageCache() { }
360
361     virtual void dispatchDidBecomeFrameset(bool) { }
362
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*) { }
380 #endif
381
382     virtual ObjectContentType objectContentType(const KURL&, const String&, bool) { return ObjectContentType(); }
383     virtual String overrideMediaType() const { return String(); }
384
385     virtual void redirectDataToPlugin(Widget*) { }
386     virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*) { }
387     virtual void documentElementAvailable() { }
388     virtual void didPerformFirstNavigation() const { }
389
390     virtual void registerForIconNotification(bool) { }
391
392 #if USE(V8)
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; }
396 #endif
397
398 #if PLATFORM(MAC)
399     virtual RemoteAXObjectRef accessibilityRemoteObject() { return 0; }
400     virtual NSCachedURLResponse* willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse* response) const { return response; }
401 #endif
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; }
405 #endif
406
407     virtual PassRefPtr<FrameNetworkingContext> createNetworkingContext() OVERRIDE;
408
409 #if ENABLE(WEB_INTENTS)
410     virtual void dispatchIntent(PassRefPtr<IntentRequest>) OVERRIDE;
411 #endif
412
413 #if ENABLE(TIZEN_CERTIFICATE_HANDLING)
414     virtual bool dispatchDecidePolicyForCertificateError(bool, const String&, const String&, int) { return false; }
415 #endif
416 };
417
418 class EmptyTextCheckerClient : public TextCheckerClient {
419 public:
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*) { }
426
427 #if USE(UNIFIED_TEXT_CHECKING)
428     virtual void checkTextOfParagraph(const UChar*, int, TextCheckingTypeMask, Vector<TextCheckingResult>&) { };
429 #endif
430
431     virtual void getGuessesForWord(const String&, const String&, Vector<String>&) { }
432     virtual void requestCheckingOfString(PassRefPtr<TextCheckingRequest>) OVERRIDE;
433 };
434
435 class EmptyEditorClient : public EditorClient {
436     WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
437 public:
438     EmptyEditorClient() { }
439     virtual ~EmptyEditorClient() { }
440     virtual void pageDestroyed() { }
441     virtual void frameWillDetachPage(Frame*) { }
442
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; }
452
453     virtual bool selectWordBeforeMenuEvent() { return false; }
454     virtual bool isEditable() { return false; }
455
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; }
461
462     virtual bool shouldApplyStyle(StylePropertySet*, Range*) { return false; }
463     virtual bool shouldMoveRangeAfterDelete(Range*, Range*) { return false; }
464
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() { }
471
472     virtual void registerUndoStep(PassRefPtr<UndoStep>) OVERRIDE;
473     virtual void registerRedoStep(PassRefPtr<UndoStep>) OVERRIDE;
474     virtual void clearUndoRedoOperations() { }
475
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; }
480
481     virtual void undo() { }
482     virtual void redo() { }
483
484     virtual void handleKeyboardEvent(KeyboardEvent*) { }
485     virtual void handleInputMethodKeydown(KeyboardEvent*) { }
486
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*) { }
493
494 #if PLATFORM(MAC)
495     virtual void markedTextAbandoned(Frame*) { }
496
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; }
502 #endif
503
504 #if USE(APPKIT)
505     virtual void uppercaseWord() { }
506     virtual void lowercaseWord() { }
507     virtual void capitalizeWord() { }
508 #endif
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() { }
523 #endif
524 #if PLATFORM(GTK)
525     virtual bool shouldShowUnicodeMenu() { return false; }
526 #endif
527     TextCheckerClient* textChecker() { return &m_textCheckerClient; }
528
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; }
533
534     virtual void willSetInputMethodState() { }
535     virtual void setInputMethodState(bool) { }
536
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() { }
541 #endif
542
543 #if ENABLE(TIZEN_ISF_PORT)
544     virtual void didCancelComposition(Node*) { }
545 #endif
546
547 private:
548     EmptyTextCheckerClient m_textCheckerClient;
549 };
550
551 #if ENABLE(CONTEXT_MENUS)
552 class EmptyContextMenuClient : public ContextMenuClient {
553     WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
554 public:
555     EmptyContextMenuClient() { }
556     virtual ~EmptyContextMenuClient() {  }
557     virtual void contextMenuDestroyed() { }
558
559 #if USE(CROSS_PLATFORM_CONTEXT_MENUS)
560     virtual PassOwnPtr<ContextMenu> customizeMenu(PassOwnPtr<ContextMenu>) OVERRIDE;
561 #else
562     virtual PlatformMenuDescription getCustomMenuFromDefaultItems(ContextMenu*) { return 0; }
563 #endif
564     virtual void contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { }
565
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() { }
573
574 #if PLATFORM(MAC)
575     virtual void searchWithSpotlight() { }
576 #endif
577
578 #if USE(ACCESSIBILITY_CONTEXT_MENUS)
579     virtual void showContextMenu() { }
580 #endif
581 };
582 #endif // ENABLE(CONTEXT_MENUS)
583
584 #if ENABLE(DRAG_SUPPORT)
585 class EmptyDragClient : public DragClient {
586     WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
587 public:
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() { }
596 };
597 #endif // ENABLE(DRAG_SUPPORT)
598
599 class EmptyInspectorClient : public InspectorClient {
600     WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
601 public:
602     EmptyInspectorClient() { }
603     virtual ~EmptyInspectorClient() { }
604
605     virtual void inspectorDestroyed() { }
606     
607     virtual InspectorFrontendChannel* openInspectorFrontend(InspectorController*) { return 0; }
608     virtual void closeInspectorFrontend() { }
609     virtual void bringFrontendToFront() { }
610
611     virtual void highlight() { }
612     virtual void hideHighlight() { }
613 };
614
615 class EmptyDeviceMotionClient : public DeviceMotionClient {
616 public:
617     virtual void setController(DeviceMotionController*) { }
618     virtual void startUpdating() { }
619     virtual void stopUpdating() { }
620     virtual DeviceMotionData* lastMotion() const { return 0; }
621     virtual void deviceMotionControllerDestroyed() { }
622 };
623
624 class EmptyDeviceOrientationClient : public DeviceOrientationClient {
625 public:
626     virtual void setController(DeviceOrientationController*) { }
627     virtual void startUpdating() { }
628     virtual void stopUpdating() { }
629     virtual DeviceOrientationData* lastOrientation() const { return 0; }
630     virtual void deviceOrientationControllerDestroyed() { }
631 };
632
633 void fillWithEmptyClients(Page::PageClients&);
634
635 }
636
637 #endif // EmptyClients_h