5ea37345ca8040e0ab9787830ec59a405b0fc442
[WebKit-https.git] / Source / WebKit2 / WebProcess / WebCoreSupport / WebFrameLoaderClient.h
1 /*
2  * Copyright (C) 2010, 2011, 2012 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. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef WebFrameLoaderClient_h
27 #define WebFrameLoaderClient_h
28
29 #include <WebCore/FrameLoaderClient.h>
30
31 namespace WebKit {
32
33 class PluginView;
34 class WebFrame;
35     
36 class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
37 public:
38     WebFrameLoaderClient();
39     ~WebFrameLoaderClient();
40
41     void setWebFrame(WebFrame* webFrame) { m_frame = webFrame; }
42     WebFrame* webFrame() const { return m_frame; }
43
44     bool frameHasCustomContentProvider() const { return m_frameHasCustomContentProvider; }
45
46 private:
47     virtual void frameLoaderDestroyed() override;
48
49     virtual bool hasHTMLView() const override;
50     virtual bool hasWebView() const override;
51     
52     virtual void makeRepresentation(WebCore::DocumentLoader*) override;
53 #if PLATFORM(IOS)
54     virtual bool forceLayoutOnRestoreFromPageCache() override;
55 #endif
56     virtual void forceLayoutForNonHTML() override;
57     
58     virtual void setCopiesOnScroll() override;
59     
60     virtual void detachedFromParent2() override;
61     virtual void detachedFromParent3() override;
62     
63     virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&) override;
64     
65     virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse) override;
66     virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) override;
67     virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) override;
68     virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) override;
69 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
70     virtual bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&) override;
71 #endif
72 #if PLATFORM(IOS)
73     virtual RetainPtr<CFDictionaryRef> connectionProperties(WebCore::DocumentLoader*, unsigned long identifier) override;
74 #endif
75     virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&) override;
76     virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) override;
77     virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) override;
78     virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&) override;
79     virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length) override;
80     
81     virtual void dispatchDidHandleOnloadEvents() override;
82     virtual void dispatchDidReceiveServerRedirectForProvisionalLoad() override;
83     virtual void dispatchDidCancelClientRedirect() override;
84     virtual void dispatchWillPerformClientRedirect(const WebCore::URL&, double interval, double fireDate) override;
85     virtual void dispatchDidChangeLocationWithinPage() override;
86     virtual void dispatchDidPushStateWithinPage() override;
87     virtual void dispatchDidReplaceStateWithinPage() override;
88     virtual void dispatchDidPopStateWithinPage() override;
89     virtual void dispatchWillClose() override;
90     virtual void dispatchDidReceiveIcon() override;
91     virtual void dispatchDidStartProvisionalLoad() override;
92     virtual void dispatchDidReceiveTitle(const WebCore::StringWithDirection&) override;
93     virtual void dispatchDidChangeIcons(WebCore::IconType) override;
94     virtual void dispatchDidCommitLoad() override;
95     virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&) override;
96     virtual void dispatchDidFailLoad(const WebCore::ResourceError&) override;
97     virtual void dispatchDidFinishDocumentLoad() override;
98     virtual void dispatchDidFinishLoad() override;
99
100     virtual void dispatchDidLayout(WebCore::LayoutMilestones) override;
101     virtual void dispatchDidLayout() override;
102
103     virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&) override;
104     virtual void dispatchShow() override;
105     
106     virtual void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::FramePolicyFunction) override;
107     virtual void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const String& frameName, WebCore::FramePolicyFunction) override;
108     virtual void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, WebCore::FramePolicyFunction) override;
109     virtual void cancelPolicyCheck() override;
110     
111     virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&) override;
112     
113     virtual void dispatchWillSendSubmitEvent(PassRefPtr<WebCore::FormState>) override;
114     virtual void dispatchWillSubmitForm(PassRefPtr<WebCore::FormState>, WebCore::FramePolicyFunction) override;
115     
116     virtual void revertToProvisionalState(WebCore::DocumentLoader*) override;
117     virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&) override;
118     
119     virtual void setMainFrameDocumentReady(bool) override;
120     
121     virtual void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String()) override;
122     
123     virtual void willChangeTitle(WebCore::DocumentLoader*) override;
124     virtual void didChangeTitle(WebCore::DocumentLoader*) override;
125     
126     virtual void committedLoad(WebCore::DocumentLoader*, const char*, int) override;
127     virtual void finishedLoading(WebCore::DocumentLoader*) override;
128     
129     virtual void updateGlobalHistory() override;
130     virtual void updateGlobalHistoryRedirectLinks() override;
131     
132     virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const override;
133     virtual void willChangeCurrentHistoryItem() override;
134
135     virtual void didDisplayInsecureContent() override;
136     virtual void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::URL&) override;
137     virtual void didDetectXSS(const WebCore::URL&, bool didBlockEntirePage) override;
138
139     virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&) override;
140     virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&) override;
141     virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&) override;
142     virtual WebCore::ResourceError interruptedForPolicyChangeError(const WebCore::ResourceRequest&) override;
143     
144     virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) override;
145     virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) override;
146     virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) override;
147     
148     virtual bool shouldFallBack(const WebCore::ResourceError&) override;
149     
150     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const override;
151     virtual bool canShowMIMEType(const String& MIMEType) const override;
152     virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const override;
153     virtual bool representationExistsForURLScheme(const String& URLScheme) const override;
154     virtual String generatedMIMETypeForURLScheme(const String& URLScheme) const override;
155     
156     virtual void frameLoadCompleted() override;
157     virtual void saveViewStateToItem(WebCore::HistoryItem*) override;
158     virtual void restoreViewState() override;
159     virtual void provisionalLoadStarted() override;
160     virtual void didFinishLoad() override;
161     virtual void prepareForDataSourceReplacement() override;
162     
163     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
164     virtual void setTitle(const WebCore::StringWithDirection&, const WebCore::URL&) override;
165     
166     virtual String userAgent(const WebCore::URL&) override;
167     
168     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*) override;
169     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) override;
170 #if PLATFORM(IOS)
171     virtual void didRestoreFrameHierarchyForCachedFrame() override;
172 #endif
173     virtual void transitionToCommittedForNewPage() override;
174
175     virtual void didSaveToPageCache() override;
176     virtual void didRestoreFromPageCache() override;
177
178     virtual void dispatchDidBecomeFrameset(bool) override;
179
180     virtual bool canCachePage() const override;
181     virtual void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&) override;
182
183     virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::URL& url, const String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
184                                           const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) override;
185     
186     virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::URL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) override;
187     virtual void recreatePlugin(WebCore::Widget*) override;
188     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget) override;
189     
190 #if ENABLE(WEBGL)
191     virtual WebCore::WebGLLoadPolicy webGLPolicyForURL(const String&) const override;
192     virtual WebCore::WebGLLoadPolicy resolveWebGLPolicyForURL(const String&) const override;
193 #endif // ENABLE(WEBGL)
194
195     virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::URL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) override;
196     
197     virtual WebCore::ObjectContentType objectContentType(const WebCore::URL&, const String& mimeType, bool shouldPreferPlugInsForImages) override;
198     virtual String overrideMediaType() const override;
199
200     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&) override;
201     
202     virtual void dispatchGlobalObjectAvailable(WebCore::DOMWrapperWorld&) override;
203     virtual void dispatchWillDisconnectDOMWindowExtensionFromGlobalObject(WebCore::DOMWindowExtension*) override;
204     virtual void dispatchDidReconnectDOMWindowExtensionToGlobalObject(WebCore::DOMWindowExtension*) override;
205     virtual void dispatchWillDestroyGlobalObjectForDOMWindowExtension(WebCore::DOMWindowExtension*) override;
206
207     virtual void registerForIconNotification(bool listen = true) override;
208     
209 #if PLATFORM(COCOA)
210     virtual RemoteAXObjectRef accessibilityRemoteObject() override;
211     
212     virtual NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const override;
213 #endif
214
215     virtual bool shouldAlwaysUsePluginDocument(const String& /*mimeType*/) const override;
216
217     virtual void didChangeScrollOffset() override;
218
219     virtual bool allowScript(bool enabledPerSettings) override;
220
221     virtual bool shouldForceUniversalAccessFromLocalURL(const WebCore::URL&) override;
222
223     virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext() override;
224
225     virtual void forcePageTransitionIfNeeded() override;
226
227 #if USE(QUICK_LOOK)
228     virtual void didCreateQuickLookHandle(WebCore::QuickLookHandle&) override;
229 #endif
230
231 #if ENABLE(CONTENT_FILTERING)
232     virtual void contentFilterDidBlockLoad(std::unique_ptr<WebCore::ContentFilter>) override;
233 #endif
234
235     WebFrame* m_frame;
236     RefPtr<PluginView> m_pluginView;
237     bool m_hasSentResponseToPluginView;
238     bool m_didCompletePageTransition;
239     bool m_frameHasCustomContentProvider;
240     bool m_frameCameFromPageCache;
241 };
242
243 // As long as EmptyFrameLoaderClient exists in WebCore, this can return 0.
244 inline WebFrameLoaderClient* toWebFrameLoaderClient(WebCore::FrameLoaderClient& client)
245 {
246     return client.isEmptyFrameLoaderClient() ? 0 : static_cast<WebFrameLoaderClient*>(&client);
247 }
248
249 } // namespace WebKit
250
251 #endif // WebFrameLoaderClient_h