Remove "virtual" from all lines that have both "virtual" and "override".
[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 WebCore {
32 class SessionID;
33 }
34
35 namespace WebKit {
36
37 class PluginView;
38 class WebFrame;
39     
40 class WebFrameLoaderClient : public WebCore::FrameLoaderClient {
41 public:
42     WebFrameLoaderClient();
43     ~WebFrameLoaderClient();
44
45     void setWebFrame(WebFrame* webFrame) { m_frame = webFrame; }
46     WebFrame* webFrame() const { return m_frame; }
47
48     bool frameHasCustomContentProvider() const { return m_frameHasCustomContentProvider; }
49
50 private:
51     void frameLoaderDestroyed() override;
52
53     bool hasHTMLView() const override;
54     bool hasWebView() const override;
55     
56     void makeRepresentation(WebCore::DocumentLoader*) override;
57 #if PLATFORM(IOS)
58     bool forceLayoutOnRestoreFromPageCache() override;
59 #endif
60     void forceLayoutForNonHTML() override;
61     
62     void setCopiesOnScroll() override;
63     
64     void detachedFromParent2() override;
65     void detachedFromParent3() override;
66     
67     void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&) override;
68     
69     void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse) override;
70     bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier) override;
71     void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) override;
72     void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&) override;
73 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
74     bool canAuthenticateAgainstProtectionSpace(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ProtectionSpace&) override;
75 #endif
76 #if PLATFORM(IOS)
77     RetainPtr<CFDictionaryRef> connectionProperties(WebCore::DocumentLoader*, unsigned long identifier) override;
78 #endif
79     void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&) override;
80     void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int dataLength) override;
81     void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier) override;
82     void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&) override;
83     bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length) override;
84 #if ENABLE(DATA_DETECTION)
85     void dispatchDidFinishDataDetection(NSArray *detectionResults) override;
86 #endif
87     
88     void dispatchDidDispatchOnloadEvents() override;
89     void dispatchDidReceiveServerRedirectForProvisionalLoad() override;
90     void dispatchDidChangeProvisionalURL() override;
91     void dispatchDidCancelClientRedirect() override;
92     void dispatchWillPerformClientRedirect(const WebCore::URL&, double interval, double fireDate) override;
93     void dispatchDidChangeLocationWithinPage() override;
94     void dispatchDidPushStateWithinPage() override;
95     void dispatchDidReplaceStateWithinPage() override;
96     void dispatchDidPopStateWithinPage() override;
97     void dispatchWillClose() override;
98     void dispatchDidReceiveIcon() override;
99     void dispatchDidStartProvisionalLoad() override;
100     void dispatchDidReceiveTitle(const WebCore::StringWithDirection&) override;
101     void dispatchDidChangeIcons(WebCore::IconType) override;
102     void dispatchDidCommitLoad() override;
103     void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&) override;
104     void dispatchDidFailLoad(const WebCore::ResourceError&) override;
105     void dispatchDidFinishDocumentLoad() override;
106     void dispatchDidFinishLoad() override;
107
108     void dispatchDidLayout(WebCore::LayoutMilestones) override;
109     void dispatchDidLayout() override;
110
111     WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&) override;
112     void dispatchShow() override;
113     
114     void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::FramePolicyFunction) override;
115     void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const String& frameName, WebCore::FramePolicyFunction) override;
116     void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, WebCore::FramePolicyFunction) override;
117     void cancelPolicyCheck() override;
118     
119     void dispatchUnableToImplementPolicy(const WebCore::ResourceError&) override;
120     
121     void dispatchWillSendSubmitEvent(PassRefPtr<WebCore::FormState>) override;
122     void dispatchWillSubmitForm(PassRefPtr<WebCore::FormState>, WebCore::FramePolicyFunction) override;
123     
124     void revertToProvisionalState(WebCore::DocumentLoader*) override;
125     void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&) override;
126     
127     void setMainFrameDocumentReady(bool) override;
128     
129     void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String()) override;
130     
131     void willChangeTitle(WebCore::DocumentLoader*) override;
132     void didChangeTitle(WebCore::DocumentLoader*) override;
133
134     void willReplaceMultipartContent() override;
135     void didReplaceMultipartContent() override;
136
137     void committedLoad(WebCore::DocumentLoader*, const char*, int) override;
138     void finishedLoading(WebCore::DocumentLoader*) override;
139     
140     void updateGlobalHistory() override;
141     void updateGlobalHistoryRedirectLinks() override;
142     
143     bool shouldGoToHistoryItem(WebCore::HistoryItem*) const override;
144
145     void didDisplayInsecureContent() override;
146     void didRunInsecureContent(WebCore::SecurityOrigin*, const WebCore::URL&) override;
147     void didDetectXSS(const WebCore::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     
155     WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&) override;
156     WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&) override;
157     WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&) override;
158     
159     bool shouldFallBack(const WebCore::ResourceError&) override;
160     
161     bool canHandleRequest(const WebCore::ResourceRequest&) const override;
162     bool canShowMIMEType(const String& MIMEType) const override;
163     bool canShowMIMETypeAsHTML(const String& MIMEType) const override;
164     bool representationExistsForURLScheme(const String& URLScheme) const override;
165     String generatedMIMETypeForURLScheme(const String& URLScheme) const override;
166     
167     void frameLoadCompleted() override;
168     void saveViewStateToItem(WebCore::HistoryItem*) override;
169     void restoreViewState() override;
170     void provisionalLoadStarted() override;
171     void didFinishLoad() override;
172     void prepareForDataSourceReplacement() override;
173     
174     Ref<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&) override;
175     void updateCachedDocumentLoader(WebCore::DocumentLoader&) override;
176
177     void setTitle(const WebCore::StringWithDirection&, const WebCore::URL&) override;
178     
179     String userAgent(const WebCore::URL&) override;
180     
181     void savePlatformDataToCachedFrame(WebCore::CachedFrame*) override;
182     void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*) override;
183 #if PLATFORM(IOS)
184     void didRestoreFrameHierarchyForCachedFrame() override;
185 #endif
186     void transitionToCommittedForNewPage() override;
187
188     void didSaveToPageCache() override;
189     void didRestoreFromPageCache() override;
190
191     void dispatchDidBecomeFrameset(bool) override;
192
193     bool canCachePage() const override;
194     void convertMainResourceLoadToDownload(WebCore::DocumentLoader*, WebCore::SessionID, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&) override;
195
196     RefPtr<WebCore::Frame> createFrame(const WebCore::URL&, const String& name, WebCore::HTMLFrameOwnerElement*,
197                                           const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight) override;
198     
199     RefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::URL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) override;
200     void recreatePlugin(WebCore::Widget*) override;
201     void redirectDataToPlugin(WebCore::Widget* pluginWidget) override;
202     
203 #if ENABLE(WEBGL)
204     WebCore::WebGLLoadPolicy webGLPolicyForURL(const String&) const override;
205     WebCore::WebGLLoadPolicy resolveWebGLPolicyForURL(const String&) const override;
206 #endif // ENABLE(WEBGL)
207
208     PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::URL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues) override;
209     
210     WebCore::ObjectContentType objectContentType(const WebCore::URL&, const String& mimeType) override;
211     String overrideMediaType() const override;
212
213     void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld&) override;
214     
215     void dispatchGlobalObjectAvailable(WebCore::DOMWrapperWorld&) override;
216     void dispatchWillDisconnectDOMWindowExtensionFromGlobalObject(WebCore::DOMWindowExtension*) override;
217     void dispatchDidReconnectDOMWindowExtensionToGlobalObject(WebCore::DOMWindowExtension*) override;
218     void dispatchWillDestroyGlobalObjectForDOMWindowExtension(WebCore::DOMWindowExtension*) override;
219
220     void registerForIconNotification(bool listen = true) override;
221     
222 #if PLATFORM(COCOA)
223     RemoteAXObjectRef accessibilityRemoteObject() override;
224     
225     NSCachedURLResponse* willCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, NSCachedURLResponse*) const override;
226 #endif
227
228     bool shouldAlwaysUsePluginDocument(const String& /*mimeType*/) const override;
229
230     void didChangeScrollOffset() override;
231
232     bool allowScript(bool enabledPerSettings) override;
233
234     bool shouldForceUniversalAccessFromLocalURL(const WebCore::URL&) override;
235
236     PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext() override;
237
238 #if ENABLE(REQUEST_AUTOCOMPLETE)
239     void didRequestAutocomplete(PassRefPtr<WebCore::FormState>) override;
240 #endif
241
242     void forcePageTransitionIfNeeded() override;
243
244 #if USE(QUICK_LOOK)
245     void didCreateQuickLookHandle(WebCore::QuickLookHandle&) override;
246 #endif
247
248 #if ENABLE(CONTENT_FILTERING)
249     void contentFilterDidBlockLoad(WebCore::ContentFilterUnblockHandler) override;
250 #endif
251
252     void prefetchDNS(const String&) override;
253
254     void didRestoreScrollPosition() override;
255
256     WebFrame* m_frame;
257     RefPtr<PluginView> m_pluginView;
258     bool m_hasSentResponseToPluginView;
259     bool m_didCompletePageTransition;
260     bool m_frameHasCustomContentProvider;
261     bool m_frameCameFromPageCache;
262 };
263
264 // As long as EmptyFrameLoaderClient exists in WebCore, this can return 0.
265 inline WebFrameLoaderClient* toWebFrameLoaderClient(WebCore::FrameLoaderClient& client)
266 {
267     return client.isEmptyFrameLoaderClient() ? 0 : static_cast<WebFrameLoaderClient*>(&client);
268 }
269
270 } // namespace WebKit
271
272 #endif // WebFrameLoaderClient_h