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.
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 "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"
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).
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.
62 Ideally, whenever you change a Client class, you should add a stub here.
63 Brittle, yes. Unfortunate, yes. Hopefully temporary.
68 class EmptyChromeClient : public ChromeClient {
69 WTF_MAKE_FAST_ALLOCATED;
71 virtual ~EmptyChromeClient() { }
72 virtual void chromeDestroyed() OVERRIDE { }
74 virtual void* webView() const OVERRIDE { return 0; }
75 virtual void setWindowRect(const FloatRect&) OVERRIDE { }
76 virtual FloatRect windowRect() OVERRIDE { return FloatRect(); }
78 virtual FloatRect pageRect() OVERRIDE { return FloatRect(); }
80 virtual void focus() OVERRIDE { }
82 virtual bool canTakeFocus(FocusType) OVERRIDE { return false; }
83 virtual void takeFocus(FocusType) OVERRIDE { }
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 { }
90 virtual bool canRunModal() OVERRIDE { return false; }
91 virtual void runModal() OVERRIDE { }
93 virtual void setToolbarsVisible(bool) OVERRIDE { }
94 virtual bool toolbarsVisible() OVERRIDE { return false; }
96 virtual void setStatusbarVisible(bool) OVERRIDE { }
97 virtual bool statusbarVisible() OVERRIDE { return false; }
99 virtual void setScrollbarsVisible(bool) OVERRIDE { }
100 virtual bool scrollbarsVisible() OVERRIDE { return false; }
102 virtual void setMenubarVisible(bool) OVERRIDE { }
103 virtual bool menubarVisible() OVERRIDE { return false; }
105 virtual void setResizable(bool) OVERRIDE { }
107 virtual bool shouldReportDetailedMessageForSource(const String&) OVERRIDE { return false; }
108 virtual void addMessageToConsole(LocalFrame*, MessageSource, MessageLevel, const String&, unsigned, const String&, const String&) OVERRIDE { }
110 virtual bool canRunBeforeUnloadConfirmPanel() OVERRIDE { return false; }
111 virtual bool runBeforeUnloadConfirmPanel(const String&, LocalFrame*) OVERRIDE { return true; }
113 virtual void closeWindowSoon() OVERRIDE { }
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; }
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 { }
124 virtual void setStatusbarText(const String&) OVERRIDE { }
126 virtual bool tabsToLinks() OVERRIDE { return false; }
128 virtual IntRect windowResizerRect() const OVERRIDE { return IntRect(); }
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 { }
135 virtual bool isCompositorFramePending() const OVERRIDE { return false; }
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 { }
141 virtual void mouseDidMoveOverElement(const HitTestResult&, unsigned) OVERRIDE { }
143 virtual void setToolTip(const String&, TextDirection) OVERRIDE { }
145 virtual void print(LocalFrame*) OVERRIDE { }
147 virtual void enumerateChosenDirectory(FileChooser*) OVERRIDE { }
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;
153 virtual void runOpenPanel(LocalFrame*, PassRefPtr<FileChooser>) OVERRIDE;
155 virtual void setCursor(const Cursor&) OVERRIDE { }
157 virtual void attachRootGraphicsLayer(GraphicsLayer*) OVERRIDE { }
159 virtual void needTouchEvents(bool) OVERRIDE { }
160 virtual void setTouchAction(TouchAction touchAction) OVERRIDE { };
162 virtual void numWheelEventHandlersChanged(unsigned) OVERRIDE { }
164 virtual bool shouldRubberBandInDirection(WebCore::ScrollDirection) const OVERRIDE { return false; }
166 virtual void didAssociateFormControls(const Vector<RefPtr<Element> >&) OVERRIDE { }
168 virtual void annotatedRegionsChanged() OVERRIDE { }
169 virtual bool paintCustomOverhangArea(GraphicsContext*, const IntRect&, const IntRect&, const IntRect&) OVERRIDE { return false; }
170 virtual String acceptLanguages() OVERRIDE;
173 class EmptyFrameLoaderClient FINAL : public FrameLoaderClient {
174 WTF_MAKE_NONCOPYABLE(EmptyFrameLoaderClient); WTF_MAKE_FAST_ALLOCATED;
176 EmptyFrameLoaderClient() { }
177 virtual ~EmptyFrameLoaderClient() { }
179 virtual bool hasWebView() const OVERRIDE { return true; } // mainly for assertions
181 virtual Frame* opener() const OVERRIDE { return 0; }
182 virtual void setOpener(Frame*) OVERRIDE { }
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 { }
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 { }
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 { }
210 virtual NavigationPolicy decidePolicyForNavigation(const ResourceRequest&, DocumentLoader*, NavigationPolicy) OVERRIDE;
212 virtual void dispatchWillSendSubmitEvent(HTMLFormElement*) OVERRIDE;
213 virtual void dispatchWillSubmitForm(HTMLFormElement*) OVERRIDE;
215 virtual void didStartLoading(LoadStartType) OVERRIDE { }
216 virtual void progressEstimateChanged(double) OVERRIDE { }
217 virtual void didStopLoading() OVERRIDE { }
219 virtual void loadURLExternally(const ResourceRequest&, NavigationPolicy, const String& = String()) OVERRIDE { }
221 virtual PassRefPtr<DocumentLoader> createDocumentLoader(LocalFrame*, const ResourceRequest&, const SubstituteData&) OVERRIDE;
223 virtual String userAgent(const KURL&) OVERRIDE { return ""; }
225 virtual String doNotTrackValue() OVERRIDE { return String(); }
227 virtual void transitionToCommittedForNewPage() OVERRIDE { }
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;
240 virtual ObjectContentType objectContentType(const KURL&, const String&, bool) OVERRIDE { return ObjectContentType(); }
242 virtual void dispatchDidClearWindowObjectInMainWorld() OVERRIDE { }
243 virtual void documentElementAvailable() OVERRIDE { }
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; }
249 virtual blink::WebCookieJar* cookieJar() const OVERRIDE { return 0; }
251 virtual void didRequestAutocomplete(HTMLFormElement*, const Dictionary&) OVERRIDE;
253 virtual PassOwnPtr<blink::WebServiceWorkerProvider> createServiceWorkerProvider() OVERRIDE;
254 virtual PassOwnPtr<blink::WebApplicationCacheHost> createApplicationCacheHost(blink::WebApplicationCacheHostClient*) OVERRIDE;
257 class EmptyTextCheckerClient FINAL : public TextCheckerClient {
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;
266 class EmptySpellCheckerClient FINAL : public SpellCheckerClient {
267 WTF_MAKE_NONCOPYABLE(EmptySpellCheckerClient); WTF_MAKE_FAST_ALLOCATED;
269 EmptySpellCheckerClient() { }
270 virtual ~EmptySpellCheckerClient() { }
272 virtual bool isContinuousSpellCheckingEnabled() OVERRIDE { return false; }
273 virtual void toggleContinuousSpellChecking() OVERRIDE { }
274 virtual bool isGrammarCheckingEnabled() OVERRIDE { return false; }
276 virtual TextCheckerClient& textChecker() OVERRIDE { return m_textCheckerClient; }
278 virtual void updateSpellingUIWithMisspelledWord(const String&) OVERRIDE { }
279 virtual void showSpellingUI(bool) OVERRIDE { }
280 virtual bool spellingUIIsShowing() OVERRIDE { return false; }
283 EmptyTextCheckerClient m_textCheckerClient;
286 class EmptyEditorClient FINAL : public EditorClient {
287 WTF_MAKE_NONCOPYABLE(EmptyEditorClient); WTF_MAKE_FAST_ALLOCATED;
289 EmptyEditorClient() { }
290 virtual ~EmptyEditorClient() { }
292 virtual void respondToChangedContents() OVERRIDE { }
293 virtual void respondToChangedSelection(LocalFrame*, SelectionType) OVERRIDE { }
295 virtual bool canCopyCut(LocalFrame*, bool defaultValue) const OVERRIDE { return defaultValue; }
296 virtual bool canPaste(LocalFrame*, bool defaultValue) const OVERRIDE { return defaultValue; }
298 virtual void didExecuteCommand(String) OVERRIDE { }
299 virtual bool handleKeyboardEvent() OVERRIDE { return false; }
302 class EmptyContextMenuClient FINAL : public ContextMenuClient {
303 WTF_MAKE_NONCOPYABLE(EmptyContextMenuClient); WTF_MAKE_FAST_ALLOCATED;
305 EmptyContextMenuClient() { }
306 virtual ~EmptyContextMenuClient() { }
307 virtual void showContextMenu(const ContextMenu*) OVERRIDE { }
308 virtual void clearContextMenu() OVERRIDE { }
311 class EmptyDragClient FINAL : public DragClient {
312 WTF_MAKE_NONCOPYABLE(EmptyDragClient); WTF_MAKE_FAST_ALLOCATED;
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 { }
320 class EmptyInspectorClient FINAL : public InspectorClient {
321 WTF_MAKE_NONCOPYABLE(EmptyInspectorClient); WTF_MAKE_FAST_ALLOCATED;
323 EmptyInspectorClient() { }
324 virtual ~EmptyInspectorClient() { }
326 virtual void highlight() OVERRIDE { }
327 virtual void hideHighlight() OVERRIDE { }
330 class EmptyBackForwardClient FINAL : public BackForwardClient {
332 virtual int backListCount() OVERRIDE { return 0; }
333 virtual int forwardListCount() OVERRIDE { return 0; }
334 virtual int backForwardListCount() OVERRIDE { return 0; }
337 class EmptyStorageClient FINAL : public StorageClient {
339 virtual PassOwnPtr<StorageNamespace> createSessionStorageNamespace() OVERRIDE;
340 virtual bool canAccessStorage(LocalFrame*, StorageType) const OVERRIDE { return false; }
343 void fillWithEmptyClients(Page::PageClients&);
347 #endif // EmptyClients_h