Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / loader / EmptyClients.h
1 /*
2  * Copyright (C) 2006 Eric Seidel (eric@webkit.org)
3  * Copyright (C) 2008, 2009, 2010, 2011, 2012 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 "core/editing/UndoStep.h"
33 #include "core/inspector/InspectorClient.h"
34 #include "core/loader/FrameLoaderClient.h"
35 #include "core/page/BackForwardClient.h"
36 #include "core/page/ChromeClient.h"
37 #include "core/page/ContextMenuClient.h"
38 #include "core/page/DragClient.h"
39 #include "core/page/EditorClient.h"
40 #include "core/page/FocusType.h"
41 #include "core/page/Page.h"
42 #include "core/page/SpellCheckerClient.h"
43 #include "core/page/StorageClient.h"
44 #include "platform/DragImage.h"
45 #include "platform/geometry/FloatRect.h"
46 #include "platform/network/ResourceError.h"
47 #include "platform/text/TextCheckerClient.h"
48 #include "public/platform/WebScreenInfo.h"
49 #include "wtf/Forward.h"
50
51 #include <v8.h>
52
53 /*
54  This file holds empty Client stubs for use by WebCore.
55  Viewless element needs to create a dummy Page->LocalFrame->FrameView tree for use in parsing or executing JavaScript.
56  This tree depends heavily on Clients (usually provided by WebKit classes).
57
58  This file was first created for SVGImage as it had no way to access the current Page (nor should it,
59  since Images are not tied to a page).
60  See http://bugs.webkit.org/show_bug.cgi?id=5971 for the original discussion about this file.
61
62  Ideally, whenever you change a Client class, you should add a stub here.
63  Brittle, yes.  Unfortunate, yes.  Hopefully temporary.
64 */
65
66 namespace WebCore {
67
68 class EmptyChromeClient : public ChromeClient {
69     WTF_MAKE_FAST_ALLOCATED;
70 public:
71     virtual ~EmptyChromeClient() { }
72     virtual void chromeDestroyed() OVERRIDE { }
73
74     virtual void* webView() const OVERRIDE { return 0; }
75     virtual void setWindowRect(const FloatRect&) OVERRIDE { }
76     virtual FloatRect windowRect() OVERRIDE { return FloatRect(); }
77
78     virtual FloatRect pageRect() OVERRIDE { return FloatRect(); }
79
80     virtual void focus() OVERRIDE { }
81
82     virtual bool canTakeFocus(FocusType) OVERRIDE { return false; }
83     virtual void takeFocus(FocusType) OVERRIDE { }
84
85     virtual void focusedNodeChanged(Node*) OVERRIDE { }
86     virtual void focusedFrameChanged(LocalFrame*) OVERRIDE { }
87     virtual Page* createWindow(LocalFrame*, const FrameLoadRequest&, const WindowFeatures&, NavigationPolicy, ShouldSendReferrer) OVERRIDE { return 0; }
88     virtual void show(NavigationPolicy) OVERRIDE { }
89
90     virtual bool canRunModal() OVERRIDE { return false; }
91     virtual void runModal() OVERRIDE { }
92
93     virtual void setToolbarsVisible(bool) OVERRIDE { }
94     virtual bool toolbarsVisible() OVERRIDE { return false; }
95
96     virtual void setStatusbarVisible(bool) OVERRIDE { }
97     virtual bool statusbarVisible() OVERRIDE { return false; }
98
99     virtual void setScrollbarsVisible(bool) OVERRIDE { }
100     virtual bool scrollbarsVisible() OVERRIDE { return false; }
101
102     virtual void setMenubarVisible(bool) OVERRIDE { }
103     virtual bool menubarVisible() OVERRIDE { return false; }
104
105     virtual void setResizable(bool) OVERRIDE { }
106
107     virtual bool shouldReportDetailedMessageForSource(const String&) OVERRIDE { return false; }
108     virtual void addMessageToConsole(LocalFrame*, MessageSource, MessageLevel, const String&, unsigned, const String&, const String&) OVERRIDE { }
109
110     virtual bool canRunBeforeUnloadConfirmPanel() OVERRIDE { return false; }
111     virtual bool runBeforeUnloadConfirmPanel(const String&, LocalFrame*) OVERRIDE { return true; }
112
113     virtual void closeWindowSoon() OVERRIDE { }
114
115     virtual void runJavaScriptAlert(LocalFrame*, const String&) OVERRIDE { }
116     virtual bool runJavaScriptConfirm(LocalFrame*, const String&) OVERRIDE { return false; }
117     virtual bool runJavaScriptPrompt(LocalFrame*, const String&, const String&, String&) OVERRIDE { return false; }
118
119     virtual bool hasOpenedPopup() const OVERRIDE { return false; }
120     virtual PassRefPtr<PopupMenu> createPopupMenu(LocalFrame&, PopupMenuClient*) const OVERRIDE;
121     virtual void setPagePopupDriver(PagePopupDriver*) OVERRIDE { }
122     virtual void resetPagePopupDriver() OVERRIDE { }
123
124     virtual void setStatusbarText(const String&) OVERRIDE { }
125
126     virtual bool tabsToLinks() OVERRIDE { return false; }
127
128     virtual IntRect windowResizerRect() const OVERRIDE { return IntRect(); }
129
130     virtual void invalidateContentsAndRootView(const IntRect&) OVERRIDE { }
131     virtual void invalidateContentsForSlowScroll(const IntRect&) OVERRIDE { }
132     virtual void scroll(const IntSize&, const IntRect&, const IntRect&) OVERRIDE { }
133     virtual void scheduleAnimation() OVERRIDE { }
134
135     virtual bool isCompositorFramePending() const OVERRIDE { return false; }
136
137     virtual IntRect rootViewToScreen(const IntRect& r) const OVERRIDE { return r; }
138     virtual blink::WebScreenInfo screenInfo() const OVERRIDE { return blink::WebScreenInfo(); }
139     virtual void contentsSizeChanged(LocalFrame*, const IntSize&) const OVERRIDE { }
140
141     virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) OVERRIDE { }
142
143     virtual void setToolTip(const String&, TextDirection) OVERRIDE { }
144
145     virtual void print(LocalFrame*) OVERRIDE { }
146
147     virtual void enumerateChosenDirectory(FileChooser*) OVERRIDE { }
148
149     virtual PassOwnPtr<ColorChooser> createColorChooser(LocalFrame*, ColorChooserClient*, const Color&) OVERRIDE;
150     virtual PassRefPtr<DateTimeChooser> openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) OVERRIDE;
151     virtual void openTextDataListChooser(HTMLInputElement&) OVERRIDE;
152
153     virtual void runOpenPanel(LocalFrame*, PassRefPtr<FileChooser>) OVERRIDE;
154
155     virtual void setCursor(const Cursor&) OVERRIDE { }
156
157     virtual void attachRootGraphicsLayer(GraphicsLayer*) OVERRIDE { }
158
159     virtual void needTouchEvents(bool) OVERRIDE { }
160     virtual void setTouchAction(TouchAction touchAction) OVERRIDE { };
161
162     virtual void numWheelEventHandlersChanged(unsigned) OVERRIDE { }
163
164     virtual bool shouldRubberBandInDirection(WebCore::ScrollDirection) const OVERRIDE { return false; }
165
166     virtual void didAssociateFormControls(const Vector<RefPtr<Element> >&) OVERRIDE { }
167
168     virtual void annotatedRegionsChanged() OVERRIDE { }
169     virtual bool paintCustomOverhangArea(GraphicsContext*, const IntRect&, const IntRect&, const IntRect&) OVERRIDE { return false; }
170     virtual String acceptLanguages() OVERRIDE;
171 };
172
173 class EmptyFrameLoaderClient FINAL : public FrameLoaderClient {
174     WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
175 public:
176     EmptyFrameLoaderClient() { }
177     virtual ~EmptyFrameLoaderClient() {  }
178
179     virtual bool hasWebView() const OVERRIDE { return true; } // mainly for assertions
180
181     virtual Frame* opener() const OVERRIDE { return 0; }
182     virtual void setOpener(Frame*) OVERRIDE { }
183
184     virtual Frame* parent() const OVERRIDE { return 0; }
185     virtual Frame* top() const OVERRIDE { return 0; }
186     virtual Frame* previousSibling() const OVERRIDE { return 0; }
187     virtual Frame* nextSibling() const OVERRIDE { return 0; }
188     virtual Frame* firstChild() const OVERRIDE { return 0; }
189     virtual Frame* lastChild() const OVERRIDE { return 0; }
190     virtual void detachedFromParent() OVERRIDE { }
191
192     virtual void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) OVERRIDE { }
193     virtual void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) OVERRIDE { }
194     virtual void dispatchDidFinishLoading(DocumentLoader*, unsigned long) OVERRIDE { }
195     virtual void dispatchDidLoadResourceFromMemoryCache(const ResourceRequest&, const ResourceResponse&) OVERRIDE { }
196
197     virtual void dispatchDidHandleOnloadEvents() OVERRIDE { }
198     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() OVERRIDE { }
199     virtual void dispatchWillClose() OVERRIDE { }
200     virtual void dispatchDidStartProvisionalLoad() OVERRIDE { }
201     virtual void dispatchDidReceiveTitle(const String&) OVERRIDE { }
202     virtual void dispatchDidChangeIcons(IconType) OVERRIDE { }
203     virtual void dispatchDidCommitLoad(LocalFrame*, HistoryItem*, HistoryCommitType) OVERRIDE { }
204     virtual void dispatchDidFailProvisionalLoad(const ResourceError&) OVERRIDE { }
205     virtual void dispatchDidFailLoad(const ResourceError&) OVERRIDE { }
206     virtual void dispatchDidFinishDocumentLoad() OVERRIDE { }
207     virtual void dispatchDidFinishLoad() OVERRIDE { }
208     virtual void dispatchDidFirstVisuallyNonEmptyLayout() OVERRIDE { }
209
210     virtual NavigationPolicy decidePolicyForNavigation(const ResourceRequest&, DocumentLoader*, NavigationPolicy) OVERRIDE;
211
212     virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) OVERRIDE;
213     virtual void dispatchWillSubmitForm(HTMLFormElement*) OVERRIDE;
214
215     virtual void didStartLoading(LoadStartType) OVERRIDE { }
216     virtual void progressEstimateChanged(double) OVERRIDE { }
217     virtual void didStopLoading() OVERRIDE { }
218
219     virtual void loadURLExternally(const ResourceRequest&, NavigationPolicy, const String& = String()) OVERRIDE { }
220
221     virtual PassRefPtr<DocumentLoader> createDocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&) OVERRIDE;
222
223     virtual String userAgent(const KURL&) OVERRIDE { return ""; }
224
225     virtual String doNotTrackValue() OVERRIDE { return String(); }
226
227     virtual void transitionToCommittedForNewPage() OVERRIDE { }
228
229     virtual bool navigateBackForward(int offset) const OVERRIDE { return false; }
230     virtual void didDisplayInsecureContent() OVERRIDE { }
231     virtual void didRunInsecureContent(SecurityOrigin*, const KURL&) OVERRIDE { }
232     virtual void didDetectXSS(const KURL&, bool) OVERRIDE { }
233     virtual void didDispatchPingLoader(const KURL&) OVERRIDE { }
234     virtual void selectorMatchChanged(const Vector<String>&, const Vector<String>&) OVERRIDE { }
235     virtual PassRefPtr<LocalFrame> createFrame(const KURL&, const AtomicString&, const Referrer&, HTMLFrameOwnerElement*) OVERRIDE;
236     virtual PassRefPtr<Widget> createPlugin(HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool, DetachedPluginPolicy) OVERRIDE;
237     virtual bool canCreatePluginWithoutRenderer(const String& mimeType) const OVERRIDE { return false; }
238     virtual PassRefPtr<Widget> createJavaAppletWidget(HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) OVERRIDE;
239
240     virtual ObjectContentType objectContentType(const KURL&, const String&, bool) OVERRIDE { return ObjectContentType(); }
241
242     virtual void dispatchDidClearWindowObjectInMainWorld() OVERRIDE { }
243     virtual void documentElementAvailable() OVERRIDE { }
244
245     virtual void didCreateScriptContext(v8::Handle<v8::Context>, int extensionGroup, int worldId) OVERRIDE { }
246     virtual void willReleaseScriptContext(v8::Handle<v8::Context>, int worldId) OVERRIDE { }
247     virtual bool allowScriptExtension(const String& extensionName, int extensionGroup, int worldId) OVERRIDE { return false; }
248
249     virtual blink::WebCookieJar* cookieJar() const OVERRIDE { return 0; }
250
251     virtual void didRequestAutocomplete(HTMLFormElement*, const Dictionary&) OVERRIDE;
252
253     virtual PassOwnPtr<blink::WebServiceWorkerProvider> createServiceWorkerProvider() OVERRIDE;
254     virtual PassOwnPtr<blink::WebApplicationCacheHost> createApplicationCacheHost(blink::WebApplicationCacheHostClient*) OVERRIDE;
255 };
256
257 class EmptyTextCheckerClient FINAL : public TextCheckerClient {
258 public:
259     virtual bool shouldEraseMarkersAfterChangeSelection(TextCheckingType) const OVERRIDE { return true; }
260     virtual void checkSpellingOfString(const String&, int*, int*) OVERRIDE { }
261     virtual String getAutoCorrectSuggestionForMisspelledWord(const String&) OVERRIDE { return String(); }
262     virtual void checkGrammarOfString(const String&, Vector<GrammarDetail>&, int*, int*) OVERRIDE { }
263     virtual void requestCheckingOfString(PassRefPtr<TextCheckingRequest>) OVERRIDE;
264 };
265
266 class EmptySpellCheckerClient FINAL : public SpellCheckerClient {
267     WTF_MAKE_NONCOPYABLE(EmptySpellCheckerClient); WTF_MAKE_FAST_ALLOCATED;
268 public:
269     EmptySpellCheckerClient() { }
270     virtual ~EmptySpellCheckerClient() { }
271
272     virtual bool isContinuousSpellCheckingEnabled() OVERRIDE { return false; }
273     virtual void toggleContinuousSpellChecking() OVERRIDE { }
274     virtual bool isGrammarCheckingEnabled() OVERRIDE { return false; }
275
276     virtual TextCheckerClient& textChecker() OVERRIDE { return m_textCheckerClient; }
277
278     virtual void updateSpellingUIWithMisspelledWord(const String&) OVERRIDE { }
279     virtual void showSpellingUI(bool) OVERRIDE { }
280     virtual bool spellingUIIsShowing() OVERRIDE { return false; }
281
282 private:
283     EmptyTextCheckerClient m_textCheckerClient;
284 };
285
286 class EmptyEditorClient FINAL : public EditorClient {
287     WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
288 public:
289     EmptyEditorClient() { }
290     virtual ~EmptyEditorClient() { }
291
292     virtual void respondToChangedContents() OVERRIDE { }
293     virtual void respondToChangedSelection(LocalFrame*, SelectionType) OVERRIDE { }
294
295     virtual bool canCopyCut(LocalFrame*, bool defaultValue) const OVERRIDE { return defaultValue; }
296     virtual bool canPaste(LocalFrame*, bool defaultValue) const OVERRIDE { return defaultValue; }
297
298     virtual void didExecuteCommand(String) OVERRIDE { }
299     virtual bool handleKeyboardEvent() OVERRIDE { return false; }
300 };
301
302 class EmptyContextMenuClient FINAL : public ContextMenuClient {
303     WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
304 public:
305     EmptyContextMenuClient() { }
306     virtual ~EmptyContextMenuClient() {  }
307     virtual void showContextMenu(const ContextMenu*) OVERRIDE { }
308     virtual void clearContextMenu() OVERRIDE { }
309 };
310
311 class EmptyDragClient FINAL : public DragClient {
312     WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
313 public:
314     EmptyDragClient() { }
315     virtual ~EmptyDragClient() {}
316     virtual DragDestinationAction actionMaskForDrag(DragData*) OVERRIDE { return DragDestinationActionNone; }
317     virtual void startDrag(DragImage*, const IntPoint&, const IntPoint&, Clipboard*, LocalFrame*, bool) OVERRIDE { }
318 };
319
320 class EmptyInspectorClient FINAL : public InspectorClient {
321     WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
322 public:
323     EmptyInspectorClient() { }
324     virtual ~EmptyInspectorClient() { }
325
326     virtual void highlight() OVERRIDE { }
327     virtual void hideHighlight() OVERRIDE { }
328 };
329
330 class EmptyBackForwardClient FINAL : public BackForwardClient {
331 public:
332     virtual int backListCount() OVERRIDE { return 0; }
333     virtual int forwardListCount() OVERRIDE { return 0; }
334     virtual int backForwardListCount() OVERRIDE { return 0; }
335 };
336
337 class EmptyStorageClient FINAL : public StorageClient {
338 public:
339     virtual PassOwnPtr<StorageNamespace> createSessionStorageNamespace() OVERRIDE;
340     virtual bool canAccessStorage(LocalFrame*, StorageType) const OVERRIDE { return false; }
341 };
342
343 void fillWithEmptyClients(Page::PageClients&);
344
345 }
346
347 #endif // EmptyClients_h