Move URL from WebCore to WTF
[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     std::optional<uint64_t> pageID() const final;
55     std::optional<uint64_t> frameID() const final;
56     PAL::SessionID sessionID() const final;
57
58     bool hasWebView() const override;
59
60     Ref<WebCore::FrameNetworkingContext> createNetworkingContext() override;
61
62     void frameLoaderDestroyed() override;
63     void makeRepresentation(WebCore::DocumentLoader*) override;
64     void forceLayoutForNonHTML() override;
65
66     void setCopiesOnScroll() override;
67
68     void detachedFromParent2() override;
69     void detachedFromParent3() override;
70
71     void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, PAL::SessionID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&) override;
72     void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&) override;
73
74     void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse) override;
75     bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) override;
76     void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) override;
77     void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&) override;
78     void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) override;
79     void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) override;
80     void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&) override;
81 #if USE(CFURLCONNECTION)
82     bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length) override;
83 #endif
84
85     void dispatchDidDispatchOnloadEvents() override;
86     void dispatchDidReceiveServerRedirectForProvisionalLoad() override;
87     void dispatchDidCancelClientRedirect() override;
88 <<<<<<< HEAD
89     void dispatchWillPerformClientRedirect(const WebCore::URL&, double interval, WallTime fireDate, WebCore::LockBackForwardList) override;
90 =======
91     void dispatchWillPerformClientRedirect(const URL&, double interval, WallTime fireDate) override;
92 >>>>>>> changes
93     void dispatchDidChangeLocationWithinPage() override;
94     void dispatchDidPushStateWithinPage() override;
95     void dispatchDidReplaceStateWithinPage() override;
96     void dispatchDidPopStateWithinPage() override;
97     void dispatchWillClose() override;
98     void dispatchDidStartProvisionalLoad() override;
99     void dispatchDidReceiveTitle(const WebCore::StringWithDirection&) override;
100     void dispatchDidCommitLoad(std::optional<WebCore::HasInsecureContent>) override;
101     void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&) override;
102     void dispatchDidFailLoad(const WebCore::ResourceError&) override;
103     void dispatchDidFinishDocumentLoad() override;
104     void dispatchDidFinishLoad() override;
105     void dispatchDidReachLayoutMilestone(OptionSet<WebCore::LayoutMilestone>) override;
106
107     void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::FramePolicyFunction&&) override;
108     void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WebCore::FormState*, const WTF::String& frameName, WebCore::FramePolicyFunction&&) override;
109     void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore::FramePolicyFunction&&) override;
110     void cancelPolicyCheck() override;
111
112     void dispatchUnableToImplementPolicy(const WebCore::ResourceError&) override;
113
114     void dispatchWillSendSubmitEvent(Ref<WebCore::FormState>&&) override;
115     void dispatchWillSubmitForm(WebCore::FormState&, CompletionHandler<void()>&&) override;
116
117     void revertToProvisionalState(WebCore::DocumentLoader*) override;
118     bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length) override;
119
120     WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&) override;
121     void dispatchShow() override;
122
123     void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&) override;
124     void setMainFrameDocumentReady(bool) override;
125
126     void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String()) override;
127
128     void progressStarted(WebCore::Frame&) override;
129     void progressEstimateChanged(WebCore::Frame&) override;
130     void progressFinished(WebCore::Frame&) override;
131
132     void committedLoad(WebCore::DocumentLoader*, const char*, int) override;
133     void finishedLoading(WebCore::DocumentLoader*) override;
134
135     void willChangeTitle(WebCore::DocumentLoader*) override;
136     void didChangeTitle(WebCore::DocumentLoader*) override;
137
138     void willReplaceMultipartContent() override { }
139     void didReplaceMultipartContent() override { }
140
141     void updateGlobalHistory() override;
142     void updateGlobalHistoryRedirectLinks() override;
143     bool shouldGoToHistoryItem(WebCore::HistoryItem&) const override;
144
145     void didDisplayInsecureContent() override;
146     void didRunInsecureContent(WebCore::SecurityOrigin&, const URL&) override;
147     void didDetectXSS(const URL&, bool didBlockEntirePage) override;
148
149     WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) override;
150     WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) override;
151     WebCore::ResourceError blockedByContentBlockerError(const WebCore::ResourceRequest&) override;
152     WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) override;
153     WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) override;
154     WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) override;
155     WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) override;
156     WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) override;
157
158     bool shouldFallBack(const WebCore::ResourceError&) override;
159
160     WTF::String userAgent(const URL&) override;
161
162     Ref<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&) override;
163     void updateCachedDocumentLoader(WebCore::DocumentLoader&) override { }
164
165     void setTitle(const WebCore::StringWithDirection&, const URL&) override;
166
167     void savePlatformDataToCachedFrame(WebCore::CachedFrame*) override;
168     void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) override;
169     void transitionToCommittedForNewPage() override;
170
171     bool canHandleRequest(const WebCore::ResourceRequest&) const override;
172     bool canShowMIMEType(const WTF::String& MIMEType) const override;
173     bool canShowMIMETypeAsHTML(const WTF::String& MIMEType) const override;
174     bool representationExistsForURLScheme(const WTF::String& URLScheme) const override;
175     WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const override;
176
177     void frameLoadCompleted() override;
178     void saveViewStateToItem(WebCore::HistoryItem&) override;
179     void restoreViewState() override;
180     void provisionalLoadStarted() override;
181     void didFinishLoad() override;
182     void prepareForDataSourceReplacement() override;
183
184     void didSaveToPageCache() override;
185     void didRestoreFromPageCache() override;
186
187     void dispatchDidBecomeFrameset(bool) override;
188
189     bool canCachePage() const override;
190
191 <<<<<<< HEAD
192     RefPtr<WebCore::Frame> createFrame(const WebCore::URL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement&,
193         const WTF::String& referrer) override;
194     RefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement&, const WebCore::URL&, const Vector<WTF::String>&, const Vector<WTF::String>&, const WTF::String&, bool loadManually) override;
195 =======
196     RefPtr<WebCore::Frame> createFrame(const URL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement&,
197         const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) override;
198     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;
199 >>>>>>> changes
200     void recreatePlugin(WebCore::Widget*) override { }
201     void redirectDataToPlugin(WebCore::Widget&) override;
202
203     RefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement&, const URL& baseURL, const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues) override;
204
205     WebCore::ObjectContentType objectContentType(const URL&, const WTF::String& mimeType) override;
206     WTF::String overrideMediaType() const override;
207
208     void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&) override;
209
210     COMPtr<WebFramePolicyListener> setUpPolicyListener(WebCore::FramePolicyFunction&&);
211     void receivedPolicyDecision(WebCore::PolicyAction);
212
213     bool shouldAlwaysUsePluginDocument(const WTF::String& mimeType) const override;
214
215     void prefetchDNS(const String&) override;
216
217 private:
218     WebHistory* webHistory() const;
219
220     class WebFramePolicyListenerPrivate;
221     std::unique_ptr<WebFramePolicyListenerPrivate> m_policyListenerPrivate;
222
223     WebFrame* m_webFrame;
224
225     // Points to the manual loader that data should be redirected to.
226     WebCore::PluginManualLoader* m_manualLoader;
227
228     bool m_hasSentResponseToPlugin;
229 };