Drop FrameLoaderClient::sessionID()
[WebKit-https.git] / Source / WebCore / loader / EmptyFrameLoaderClient.h
1 /*
2  * Copyright (C) 2017 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #pragma once
27
28 #include "FrameLoaderClient.h"
29 #include "ResourceError.h"
30 #include <pal/SessionID.h>
31
32 #if USE(QUICK_LOOK)
33 #include "PreviewLoaderClient.h"
34 #endif
35
36 namespace WebCore {
37
38 class WEBCORE_EXPORT EmptyFrameLoaderClient : public FrameLoaderClient {
39     Ref<DocumentLoader> createDocumentLoader(const ResourceRequest&, const SubstituteData&) override;
40
41     void frameLoaderDestroyed() override { }
42
43     Optional<FrameIdentifier> frameID() const override { return WTF::nullopt; }
44     Optional<PageIdentifier> pageID() const override { return WTF::nullopt; }
45
46     bool hasWebView() const final { return true; } // mainly for assertions
47
48     void makeRepresentation(DocumentLoader*) final { }
49 #if PLATFORM(IOS_FAMILY)
50     bool forceLayoutOnRestoreFromPageCache() final { return false; }
51 #endif
52     void forceLayoutForNonHTML() final { }
53
54     void setCopiesOnScroll() final { }
55
56     void detachedFromParent2() final { }
57     void detachedFromParent3() final { }
58
59     void convertMainResourceLoadToDownload(DocumentLoader*, PAL::SessionID, const ResourceRequest&, const ResourceResponse&) final { }
60
61     void assignIdentifierToInitialRequest(unsigned long, DocumentLoader*, const ResourceRequest&) final { }
62     bool shouldUseCredentialStorage(DocumentLoader*, unsigned long) override { return false; }
63     void dispatchWillSendRequest(DocumentLoader*, unsigned long, ResourceRequest&, const ResourceResponse&) final { }
64     void dispatchDidReceiveAuthenticationChallenge(DocumentLoader*, unsigned long, const AuthenticationChallenge&) final { }
65 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
66     bool canAuthenticateAgainstProtectionSpace(DocumentLoader*, unsigned long, const ProtectionSpace&) final { return false; }
67 #endif
68
69 #if PLATFORM(IOS_FAMILY)
70     RetainPtr<CFDictionaryRef> connectionProperties(DocumentLoader*, unsigned long) final { return nullptr; }
71 #endif
72
73     void dispatchDidReceiveResponse(DocumentLoader*, unsigned long, const ResourceResponse&) final { }
74     void dispatchDidReceiveContentLength(DocumentLoader*, unsigned long, int) final { }
75     void dispatchDidFinishLoading(DocumentLoader*, unsigned long) final { }
76 #if ENABLE(DATA_DETECTION)
77     void dispatchDidFinishDataDetection(NSArray *) final { }
78 #endif
79     void dispatchDidFailLoading(DocumentLoader*, unsigned long, const ResourceError&) final { }
80     bool dispatchDidLoadResourceFromMemoryCache(DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int) final { return false; }
81
82     void dispatchDidDispatchOnloadEvents() final { }
83     void dispatchDidReceiveServerRedirectForProvisionalLoad() final { }
84     void dispatchDidCancelClientRedirect() final { }
85     void dispatchWillPerformClientRedirect(const URL&, double, WallTime, LockBackForwardList) final { }
86     void dispatchDidChangeLocationWithinPage() final { }
87     void dispatchDidPushStateWithinPage() final { }
88     void dispatchDidReplaceStateWithinPage() final { }
89     void dispatchDidPopStateWithinPage() final { }
90     void dispatchWillClose() final { }
91     void dispatchDidStartProvisionalLoad() final { }
92     void dispatchDidReceiveTitle(const StringWithDirection&) final { }
93     void dispatchDidCommitLoad(Optional<HasInsecureContent>) final { }
94     void dispatchDidFailProvisionalLoad(const ResourceError&, WillContinueLoading) final { }
95     void dispatchDidFailLoad(const ResourceError&) final { }
96     void dispatchDidFinishDocumentLoad() final { }
97     void dispatchDidFinishLoad() final { }
98     void dispatchDidReachLayoutMilestone(OptionSet<LayoutMilestone>) final { }
99
100     Frame* dispatchCreatePage(const NavigationAction&) final { return nullptr; }
101     void dispatchShow() final { }
102
103     void dispatchDecidePolicyForResponse(const ResourceResponse&, const ResourceRequest&, PolicyCheckIdentifier, const String&, FramePolicyFunction&&) final { }
104     void dispatchDecidePolicyForNewWindowAction(const NavigationAction&, const ResourceRequest&, FormState*, const String&, PolicyCheckIdentifier, FramePolicyFunction&&) final;
105     void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, const ResourceResponse& redirectResponse, FormState*, PolicyDecisionMode, PolicyCheckIdentifier, FramePolicyFunction&&) final;
106     void cancelPolicyCheck() final { }
107
108     void dispatchUnableToImplementPolicy(const ResourceError&) final { }
109
110     void dispatchWillSendSubmitEvent(Ref<FormState>&&) final;
111     void dispatchWillSubmitForm(FormState&, CompletionHandler<void()>&&) final;
112
113     void revertToProvisionalState(DocumentLoader*) final { }
114     void setMainDocumentError(DocumentLoader*, const ResourceError&) final { }
115
116     void setMainFrameDocumentReady(bool) final { }
117
118     void startDownload(const ResourceRequest&, const String&) final { }
119
120     void willChangeTitle(DocumentLoader*) final { }
121     void didChangeTitle(DocumentLoader*) final { }
122
123     void willReplaceMultipartContent() final { }
124     void didReplaceMultipartContent() final { }
125
126     void committedLoad(DocumentLoader*, const char*, int) final { }
127     void finishedLoading(DocumentLoader*) final { }
128
129     ResourceError cancelledError(const ResourceRequest&) final { return { ResourceError::Type::Cancellation }; }
130     ResourceError blockedError(const ResourceRequest&) final { return { }; }
131     ResourceError blockedByContentBlockerError(const ResourceRequest&) final { return { }; }
132     ResourceError cannotShowURLError(const ResourceRequest&) final { return { }; }
133     ResourceError interruptedForPolicyChangeError(const ResourceRequest&) final { return { }; }
134 #if ENABLE(CONTENT_FILTERING)
135     ResourceError blockedByContentFilterError(const ResourceRequest&) final { return { }; }
136 #endif
137
138     ResourceError cannotShowMIMETypeError(const ResourceResponse&) final { return { }; }
139     ResourceError fileDoesNotExistError(const ResourceResponse&) final { return { }; }
140     ResourceError pluginWillHandleLoadError(const ResourceResponse&) final { return { }; }
141
142     bool shouldFallBack(const ResourceError&) final { return false; }
143
144     bool canHandleRequest(const ResourceRequest&) const final { return false; }
145     bool canShowMIMEType(const String&) const final { return false; }
146     bool canShowMIMETypeAsHTML(const String&) const final { return false; }
147     bool representationExistsForURLScheme(const String&) const final { return false; }
148     String generatedMIMETypeForURLScheme(const String&) const final { return emptyString(); }
149
150     void frameLoadCompleted() final { }
151     void restoreViewState() final { }
152     void provisionalLoadStarted() final { }
153     void didFinishLoad() final { }
154     void prepareForDataSourceReplacement() final { }
155
156     void updateCachedDocumentLoader(DocumentLoader&) final { }
157     void setTitle(const StringWithDirection&, const URL&) final { }
158
159     String userAgent(const URL&) override { return emptyString(); }
160
161     void savePlatformDataToCachedFrame(CachedFrame*) final { }
162     void transitionToCommittedFromCachedFrame(CachedFrame*) final { }
163 #if PLATFORM(IOS_FAMILY)
164     void didRestoreFrameHierarchyForCachedFrame() final { }
165 #endif
166     void transitionToCommittedForNewPage() final { }
167
168     void didSaveToPageCache() final { }
169     void didRestoreFromPageCache() final { }
170
171     void dispatchDidBecomeFrameset(bool) final { }
172
173     void updateGlobalHistory() final { }
174     void updateGlobalHistoryRedirectLinks() final { }
175     bool shouldGoToHistoryItem(HistoryItem&) const final { return false; }
176     void saveViewStateToItem(HistoryItem&) final { }
177     bool canCachePage() const final { return false; }
178     void didDisplayInsecureContent() final { }
179     void didRunInsecureContent(SecurityOrigin&, const URL&) final { }
180     void didDetectXSS(const URL&, bool) final { }
181     RefPtr<Frame> createFrame(const URL&, const String&, HTMLFrameOwnerElement&, const String&) final;
182     RefPtr<Widget> createPlugin(const IntSize&, HTMLPlugInElement&, const URL&, const Vector<String>&, const Vector<String>&, const String&, bool) final;
183     RefPtr<Widget> createJavaAppletWidget(const IntSize&, HTMLAppletElement&, const URL&, const Vector<String>&, const Vector<String>&) final;
184
185     ObjectContentType objectContentType(const URL&, const String&) final { return ObjectContentType::None; }
186     String overrideMediaType() const final { return { }; }
187
188     void redirectDataToPlugin(Widget&) final { }
189     void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld&) final { }
190
191 #if PLATFORM(COCOA)
192     RemoteAXObjectRef accessibilityRemoteObject() final { return nullptr; }
193     void willCacheResponse(DocumentLoader*, unsigned long, NSCachedURLResponse *response, CompletionHandler<void(NSCachedURLResponse *)>&& completionHandler) const final { completionHandler(response); }
194 #endif
195
196 #if USE(CFURLCONNECTION)
197     bool shouldCacheResponse(DocumentLoader*, unsigned long, const ResourceResponse&, const unsigned char*, unsigned long long) final { return true; }
198 #endif
199
200     Ref<FrameNetworkingContext> createNetworkingContext() final;
201
202     bool isEmptyFrameLoaderClient() const final { return true; }
203     void prefetchDNS(const String&) final { }
204
205 #if USE(QUICK_LOOK)
206     RefPtr<PreviewLoaderClient> createPreviewLoaderClient(const String&, const String&) final { return nullptr; }
207 #endif
208 #if ENABLE(RESOURCE_LOAD_STATISTICS)
209     bool hasFrameSpecificStorageAccess() final { return false; }
210 #endif
211 };
212
213 } // namespace WebCore
214
215 SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::EmptyFrameLoaderClient)
216     static bool isType(const WebCore::FrameLoaderClient& frameLoaderClient) { return frameLoaderClient.isEmptyFrameLoaderClient(); }
217 SPECIALIZE_TYPE_TRAITS_END()