Drop FrameLoaderClient::sessionID()
[WebKit-https.git] / Source / WebKitLegacy / win / WebCoreSupport / WebFrameLoaderClient.h
1 /*
2  * Copyright (C) 2006-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  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution.
13  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #pragma once
30
31 #include <WebCore/COMPtr.h>
32 #include <WebCore/FrameLoaderClient.h>
33 #include <WebCore/ProgressTrackerClient.h>
34
35 namespace WebCore {
36     class PluginManualLoader;
37     class PluginView;
38 }
39
40 class WebFrame;
41 class WebFramePolicyListener;
42 class WebHistory;
43
44 class WebFrameLoaderClient : public WebCore::FrameLoaderClient, public WebCore::ProgressTrackerClient {
45 public:
46     WebFrameLoaderClient(WebFrame* = 0);
47     ~WebFrameLoaderClient();
48
49     void setWebFrame(WebFrame* webFrame) { m_webFrame = webFrame; }
50     WebFrame* webFrame() const { return m_webFrame; }
51
52     void dispatchDidFailToStartPlugin(const WebCore::PluginView&) const;
53
54     Optional<WebCore::PageIdentifier> pageID() const final;
55     Optional<WebCore::FrameIdentifier> frameID() const final;
56
57     bool hasWebView() const override;
58
59     Ref<WebCore::FrameNetworkingContext> createNetworkingContext() override;
60
61     void frameLoaderDestroyed() override;
62     void makeRepresentation(WebCore::DocumentLoader*) override;
63     void forceLayoutForNonHTML() override;
64
65     void setCopiesOnScroll() override;
66
67     void detachedFromParent2() override;
68     void detachedFromParent3() override;
69
70     void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, PAL::SessionID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&) override;
71     void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&) override;
72
73     void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse) override;
74     bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) override;
75     void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) override;
76     void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&) override;
77     void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) override;
78     void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) override;
79     void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&) override;
80 #if USE(CFURLCONNECTION)
81     bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length) override;
82 #endif
83
84     void dispatchDidDispatchOnloadEvents() override;
85     void dispatchDidReceiveServerRedirectForProvisionalLoad() override;
86     void dispatchDidCancelClientRedirect() override;
87     void dispatchWillPerformClientRedirect(const URL&, double interval, WallTime fireDate, WebCore::LockBackForwardList) override;
88     void dispatchDidChangeLocationWithinPage() override;
89     void dispatchDidPushStateWithinPage() override;
90     void dispatchDidReplaceStateWithinPage() override;
91     void dispatchDidPopStateWithinPage() override;
92     void dispatchWillClose() override;
93     void dispatchDidStartProvisionalLoad() override;
94     void dispatchDidReceiveTitle(const WebCore::StringWithDirection&) override;
95     void dispatchDidCommitLoad(Optional<WebCore::HasInsecureContent>) override;
96     void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&, WebCore::WillContinueLoading) override;
97     void dispatchDidFailLoad(const WebCore::ResourceError&) override;
98     void dispatchDidFinishDocumentLoad() override;
99     void dispatchDidFinishLoad() override;
100     void dispatchDidReachLayoutMilestone(OptionSet<WebCore::LayoutMilestone>) override;
101
102     void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::PolicyCheckIdentifier, const String&, WebCore::FramePolicyFunction&&) override;
103     void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WebCore::FormState*, const WTF::String& frameName, WebCore::PolicyCheckIdentifier, WebCore::FramePolicyFunction&&) override;
104     void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore::PolicyCheckIdentifier, WebCore::FramePolicyFunction&&) override;
105     void cancelPolicyCheck() override;
106
107     void dispatchUnableToImplementPolicy(const WebCore::ResourceError&) override;
108
109     void dispatchWillSendSubmitEvent(Ref<WebCore::FormState>&&) override;
110     void dispatchWillSubmitForm(WebCore::FormState&, CompletionHandler<void()>&&) override;
111
112     void revertToProvisionalState(WebCore::DocumentLoader*) override;
113     bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length) override;
114
115     WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&) override;
116     void dispatchShow() override;
117
118     void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&) override;
119     void setMainFrameDocumentReady(bool) override;
120
121     void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String()) override;
122
123     void progressStarted(WebCore::Frame&) override;
124     void progressEstimateChanged(WebCore::Frame&) override;
125     void progressFinished(WebCore::Frame&) override;
126
127     void committedLoad(WebCore::DocumentLoader*, const char*, int) override;
128     void finishedLoading(WebCore::DocumentLoader*) override;
129
130     void willChangeTitle(WebCore::DocumentLoader*) override;
131     void didChangeTitle(WebCore::DocumentLoader*) override;
132
133     void willReplaceMultipartContent() override { }
134     void didReplaceMultipartContent() override { }
135
136     void updateGlobalHistory() override;
137     void updateGlobalHistoryRedirectLinks() override;
138     bool shouldGoToHistoryItem(WebCore::HistoryItem&) const override;
139
140     void didDisplayInsecureContent() override;
141     void didRunInsecureContent(WebCore::SecurityOrigin&, const URL&) override;
142     void didDetectXSS(const URL&, bool didBlockEntirePage) override;
143
144     WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) override;
145     WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) override;
146     WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&) override;
147     WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) override;
148     WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) override;
149     WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) override;
150     WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) override;
151     WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) override;
152
153     bool shouldFallBack(const WebCore::ResourceError&) override;
154
155     WTF::String userAgent(const URL&) override;
156
157     Ref<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&) override;
158     void updateCachedDocumentLoader(WebCore::DocumentLoader&) override { }
159
160     void setTitle(const WebCore::StringWithDirection&, const URL&) override;
161
162     void savePlatformDataToCachedFrame(WebCore::CachedFrame*) override;
163     void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) override;
164     void transitionToCommittedForNewPage() override;
165
166     bool canHandleRequest(const WebCore::ResourceRequest&) const override;
167     bool canShowMIMEType(const WTF::String& MIMEType) const override;
168     bool canShowMIMETypeAsHTML(const WTF::String& MIMEType) const override;
169     bool representationExistsForURLScheme(const WTF::String& URLScheme) const override;
170     WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const override;
171
172     void frameLoadCompleted() override;
173     void saveViewStateToItem(WebCore::HistoryItem&) override;
174     void restoreViewState() override;
175     void provisionalLoadStarted() override;
176     void didFinishLoad() override;
177     void prepareForDataSourceReplacement() override;
178
179     void didSaveToPageCache() override;
180     void didRestoreFromPageCache() override;
181
182     void dispatchDidBecomeFrameset(bool) override;
183
184     bool canCachePage() const override;
185
186     RefPtr<WebCore::Frame> createFrame(const URL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement&,
187         const WTF::String& referrer) override;
188     RefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement&, const URL&, const Vector<WTF::String>&, const Vector<WTF::String>&, const WTF::String&, bool loadManually) override;
189     void redirectDataToPlugin(WebCore::Widget&) override;
190
191     RefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement&, const URL& baseURL, const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues) override;
192
193     WebCore::ObjectContentType objectContentType(const URL&, const WTF::String& mimeType) override;
194     WTF::String overrideMediaType() const override;
195
196     void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&) override;
197
198     COMPtr<WebFramePolicyListener> setUpPolicyListener(WebCore::PolicyCheckIdentifier, WebCore::FramePolicyFunction&&);
199     void receivedPolicyDecision(WebCore::PolicyAction);
200
201     bool shouldAlwaysUsePluginDocument(const WTF::String& mimeType) const override;
202
203     void prefetchDNS(const String&) override;
204
205 private:
206     WebHistory* webHistory() const;
207
208     class WebFramePolicyListenerPrivate;
209     std::unique_ptr<WebFramePolicyListenerPrivate> m_policyListenerPrivate;
210
211     WebFrame* m_webFrame;
212
213     // Points to the manual loader that data should be redirected to.
214     WebCore::PluginManualLoader* m_manualLoader;
215
216     bool m_hasSentResponseToPlugin;
217 };