Remove LegacyIDB.
[WebKit-https.git] / Source / WebCore / loader / EmptyClients.cpp
1 /*
2  * Copyright (C) 2006 Eric Seidel <eric@webkit.org>
3  * Copyright (C) 2008, 2009, 2012 Apple Inc. All rights reserved.
4  * Copyright (C) Research In Motion Limited 2011. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
26  */
27
28 #include "config.h"
29 #include "EmptyClients.h"
30
31 #include "ColorChooser.h"
32 #include "DatabaseProvider.h"
33 #include "DocumentLoader.h"
34 #include "FileChooser.h"
35 #include "FormState.h"
36 #include "Frame.h"
37 #include "FrameNetworkingContext.h"
38 #include "HTMLFormElement.h"
39 #include "InProcessIDBServer.h"
40 #include "PageConfiguration.h"
41 #include "StorageArea.h"
42 #include "StorageNamespace.h"
43 #include "StorageNamespaceProvider.h"
44 #include <wtf/NeverDestroyed.h>
45
46 #if USE(APPLE_INTERNAL_SDK)
47 #include <WebKitAdditions/EmptyClientsIncludes.h>
48 #endif
49
50 namespace WebCore {
51
52 class EmptyDatabaseProvider final : public DatabaseProvider {
53 #if ENABLE(INDEXED_DATABASE)
54     virtual IDBClient::IDBConnectionToServer& idbConnectionToServerForSession(const SessionID&)
55     {
56         static NeverDestroyed<Ref<InProcessIDBServer>> sharedConnection(InProcessIDBServer::create());
57         return sharedConnection.get()->connectionToServer();
58     }
59 #endif
60 };
61
62 class EmptyStorageNamespaceProvider final : public StorageNamespaceProvider {
63     struct EmptyStorageArea : public StorageArea {
64         virtual unsigned length() override { return 0; }
65         virtual String key(unsigned) override { return String(); }
66         virtual String item(const String&) override { return String(); }
67         virtual void setItem(Frame*, const String&, const String&, bool&) override { }
68         virtual void removeItem(Frame*, const String&) override { }
69         virtual void clear(Frame*) override { }
70         virtual bool contains(const String&) override { return false; }
71         virtual bool canAccessStorage(Frame*) override { return false; }
72         virtual StorageType storageType() const override { return LocalStorage; }
73         virtual size_t memoryBytesUsedByCache() override { return 0; }
74         SecurityOrigin& securityOrigin() override { return SecurityOrigin::createUnique(); }
75     };
76
77     struct EmptyStorageNamespace final : public StorageNamespace {
78         virtual RefPtr<StorageArea> storageArea(RefPtr<SecurityOrigin>&&) override { return adoptRef(new EmptyStorageArea); }
79         virtual RefPtr<StorageNamespace> copy(Page*) override { return adoptRef(new EmptyStorageNamespace); }
80     };
81
82     virtual RefPtr<StorageNamespace> createSessionStorageNamespace(Page&, unsigned) override
83     {
84         return adoptRef(new EmptyStorageNamespace);
85     }
86
87     virtual RefPtr<StorageNamespace> createLocalStorageNamespace(unsigned) override
88     {
89         return adoptRef(new EmptyStorageNamespace);
90     }
91
92     virtual RefPtr<StorageNamespace> createTransientLocalStorageNamespace(SecurityOrigin&, unsigned) override
93     {
94         return adoptRef(new EmptyStorageNamespace);
95     }
96 };
97
98 class EmptyVisitedLinkStore : public VisitedLinkStore {
99     virtual bool isLinkVisited(Page&, LinkHash, const URL&, const AtomicString&) override { return false; }
100     virtual void addVisitedLink(Page&, LinkHash) override { }
101 };
102
103 void fillWithEmptyClients(PageConfiguration& pageConfiguration)
104 {
105     static NeverDestroyed<EmptyChromeClient> dummyChromeClient;
106     pageConfiguration.chromeClient = &dummyChromeClient.get();
107
108 #if ENABLE(CONTEXT_MENUS)
109     static NeverDestroyed<EmptyContextMenuClient> dummyContextMenuClient;
110     pageConfiguration.contextMenuClient = &dummyContextMenuClient.get();
111 #endif
112
113 #if ENABLE(DRAG_SUPPORT)
114     static NeverDestroyed<EmptyDragClient> dummyDragClient;
115     pageConfiguration.dragClient = &dummyDragClient.get();
116 #endif
117
118     static NeverDestroyed<EmptyEditorClient> dummyEditorClient;
119     pageConfiguration.editorClient = &dummyEditorClient.get();
120
121     static NeverDestroyed<EmptyInspectorClient> dummyInspectorClient;
122     pageConfiguration.inspectorClient = &dummyInspectorClient.get();
123
124     static NeverDestroyed<EmptyFrameLoaderClient> dummyFrameLoaderClient;
125     pageConfiguration.loaderClientForMainFrame = &dummyFrameLoaderClient.get();
126
127     static NeverDestroyed<EmptyProgressTrackerClient> dummyProgressTrackerClient;
128     pageConfiguration.progressTrackerClient = &dummyProgressTrackerClient.get();
129
130     static NeverDestroyed<EmptyDiagnosticLoggingClient> dummyDiagnosticLoggingClient;
131     pageConfiguration.diagnosticLoggingClient = &dummyDiagnosticLoggingClient.get();
132
133     pageConfiguration.databaseProvider = adoptRef(new EmptyDatabaseProvider);
134     pageConfiguration.storageNamespaceProvider = adoptRef(new EmptyStorageNamespaceProvider);
135     pageConfiguration.visitedLinkStore = adoptRef(new EmptyVisitedLinkStore);
136
137 #if USE(APPLE_INTERNAL_SDK)
138 #include <WebKitAdditions/EmptyClientsFill.cpp>
139 #endif
140 }
141
142 class EmptyPopupMenu : public PopupMenu {
143 public:
144     virtual void show(const IntRect&, FrameView*, int) { }
145     virtual void hide() { }
146     virtual void updateFromElement() { }
147     virtual void disconnectClient() { }
148 };
149
150 class EmptySearchPopupMenu : public SearchPopupMenu {
151 public:
152     virtual PopupMenu* popupMenu() { return m_popup.get(); }
153     virtual void saveRecentSearches(const AtomicString&, const Vector<RecentSearch>&) { }
154     virtual void loadRecentSearches(const AtomicString&, Vector<RecentSearch>&) { }
155     virtual bool enabled() { return false; }
156
157 private:
158     RefPtr<EmptyPopupMenu> m_popup;
159 };
160
161 RefPtr<PopupMenu> EmptyChromeClient::createPopupMenu(PopupMenuClient*) const
162 {
163     return adoptRef(new EmptyPopupMenu());
164 }
165
166 RefPtr<SearchPopupMenu> EmptyChromeClient::createSearchPopupMenu(PopupMenuClient*) const
167 {
168     return adoptRef(new EmptySearchPopupMenu());
169 }
170
171 #if ENABLE(INPUT_TYPE_COLOR)
172 std::unique_ptr<ColorChooser> EmptyChromeClient::createColorChooser(ColorChooserClient*, const Color&)
173 {
174     return nullptr;
175 }
176 #endif
177
178 void EmptyChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser>)
179 {
180 }
181
182 void EmptyFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&, FramePolicyFunction)
183 {
184 }
185
186 void EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, FramePolicyFunction)
187 {
188 }
189
190 void EmptyFrameLoaderClient::dispatchWillSendSubmitEvent(PassRefPtr<FormState>)
191 {
192 }
193
194 void EmptyFrameLoaderClient::dispatchWillSubmitForm(PassRefPtr<FormState>, FramePolicyFunction)
195 {
196 }
197
198 Ref<DocumentLoader> EmptyFrameLoaderClient::createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData)
199 {
200     return DocumentLoader::create(request, substituteData);
201 }
202
203 RefPtr<Frame> EmptyFrameLoaderClient::createFrame(const URL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int)
204 {
205     return nullptr;
206 }
207
208 RefPtr<Widget> EmptyFrameLoaderClient::createPlugin(const IntSize&, HTMLPlugInElement*, const URL&, const Vector<String>&, const Vector<String>&, const String&, bool)
209 {
210     return nullptr;
211 }
212
213 void EmptyFrameLoaderClient::recreatePlugin(Widget*)
214 {
215 }
216
217 PassRefPtr<Widget> EmptyFrameLoaderClient::createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const URL&, const Vector<String>&, const Vector<String>&)
218 {
219     return nullptr;
220 }
221
222 PassRefPtr<FrameNetworkingContext> EmptyFrameLoaderClient::createNetworkingContext()
223 {
224     return PassRefPtr<FrameNetworkingContext>();
225 }
226
227 void EmptyTextCheckerClient::requestCheckingOfString(PassRefPtr<TextCheckingRequest>)
228 {
229 }
230
231 void EmptyEditorClient::registerUndoStep(PassRefPtr<UndoStep>)
232 {
233 }
234
235 void EmptyEditorClient::registerRedoStep(PassRefPtr<UndoStep>)
236 {
237 }
238
239 }