Synchronize MathML WPT tests against upstream
[WebKit-https.git] / Source / WebKit / UIProcess / API / APINavigationClient.h
1 /*
2  * Copyright (C) 2014, 2015 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 #pragma once
27
28 #include "APIData.h"
29 #include "APIString.h"
30 #include "AuthenticationChallengeDisposition.h"
31 #include "AuthenticationChallengeProxy.h"
32 #include "AuthenticationDecisionListener.h"
33 #include "PluginModuleInfo.h"
34 #include "ProcessTerminationReason.h"
35 #include "SameDocumentNavigationType.h"
36 #include "WebEvent.h"
37 #include "WebFramePolicyListenerProxy.h"
38 #include "WebsitePoliciesData.h"
39 #include <WebCore/FrameLoaderTypes.h>
40 #include <WebCore/LayoutMilestone.h>
41 #include <wtf/Forward.h>
42
43 #if HAVE(APP_SSO)
44 #include "SOAuthorizationLoadPolicy.h"
45 #endif
46
47 namespace WebCore {
48 struct ContentRuleListResults;
49 class ResourceError;
50 class ResourceRequest;
51 class ResourceResponse;
52 struct SecurityOriginData;
53 }
54
55 namespace WebKit {
56 class AuthenticationChallengeProxy;
57 class QuickLookDocumentData;
58 class WebBackForwardListItem;
59 class WebFramePolicyListenerProxy;
60 class WebFrameProxy;
61 class WebPageProxy;
62 class WebProtectionSpace;
63 struct NavigationActionData;
64 struct WebNavigationDataStore;
65 }
66
67 namespace API {
68
69 class Dictionary;
70 class Navigation;
71 class NavigationAction;
72 class NavigationResponse;
73 class Object;
74
75 class NavigationClient {
76     WTF_MAKE_FAST_ALLOCATED;
77 public:
78     virtual ~NavigationClient() { }
79
80     virtual void didStartProvisionalNavigation(WebKit::WebPageProxy&, Navigation*, Object*) { }
81     virtual void didReceiveServerRedirectForProvisionalNavigation(WebKit::WebPageProxy&, Navigation*, Object*) { }
82     virtual void willPerformClientRedirect(WebKit::WebPageProxy&, const WTF::String& destinationURL, double) { }
83     virtual void didPerformClientRedirect(WebKit::WebPageProxy&, const WTF::String& sourceURL, const WTF::String& destinationURL) { }
84     virtual void didCancelClientRedirect(WebKit::WebPageProxy&) { }
85     virtual void didFailProvisionalNavigationWithError(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, Navigation*, const WebCore::ResourceError&, Object*) { }
86     virtual void didFailProvisionalLoadInSubframeWithError(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, const WebCore::SecurityOriginData&, Navigation*, const WebCore::ResourceError&, Object*) { }
87     virtual void didCommitNavigation(WebKit::WebPageProxy&, Navigation*, Object*) { }
88     virtual void didFinishDocumentLoad(WebKit::WebPageProxy&, Navigation*, Object*) { }
89     virtual void didFinishNavigation(WebKit::WebPageProxy&, Navigation*, Object*) { }
90     virtual void didFailNavigationWithError(WebKit::WebPageProxy&, WebKit::WebFrameProxy&, Navigation*, const WebCore::ResourceError&, Object*) { }
91     virtual void didSameDocumentNavigation(WebKit::WebPageProxy&, Navigation*, WebKit::SameDocumentNavigationType, Object*) { }
92
93     virtual void didDisplayInsecureContent(WebKit::WebPageProxy&, API::Object*) { }
94     virtual void didRunInsecureContent(WebKit::WebPageProxy&, API::Object*) { }
95
96     virtual void renderingProgressDidChange(WebKit::WebPageProxy&, OptionSet<WebCore::LayoutMilestone>) { }
97
98     virtual void didReceiveAuthenticationChallenge(WebKit::WebPageProxy&, WebKit::AuthenticationChallengeProxy& challenge) { challenge.listener().completeChallenge(WebKit::AuthenticationChallengeDisposition::PerformDefaultHandling); }
99     virtual bool shouldBypassContentModeSafeguards() const { return false; }
100
101     // FIXME: These function should not be part of this client.
102     virtual bool processDidTerminate(WebKit::WebPageProxy&, WebKit::ProcessTerminationReason) { return false; }
103     virtual void processDidBecomeResponsive(WebKit::WebPageProxy&) { }
104     virtual void processDidBecomeUnresponsive(WebKit::WebPageProxy&) { }
105
106     virtual RefPtr<Data> webCryptoMasterKey(WebKit::WebPageProxy&) { return nullptr; }
107
108     virtual RefPtr<String> signedPublicKeyAndChallengeString(WebKit::WebPageProxy&, unsigned keySizeIndex, const RefPtr<String>& challengeString, const WTF::URL&) { return nullptr; }
109
110 #if USE(QUICK_LOOK)
111     virtual void didStartLoadForQuickLookDocumentInMainFrame(const WTF::String& fileName, const WTF::String& uti) { }
112     virtual void didFinishLoadForQuickLookDocumentInMainFrame(const WebKit::QuickLookDocumentData&) { }
113 #endif
114
115     virtual void decidePolicyForNavigationAction(WebKit::WebPageProxy&, Ref<NavigationAction>&&, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, Object*)
116     {
117         listener->use();
118     }
119
120     virtual void decidePolicyForNavigationResponse(WebKit::WebPageProxy&, Ref<NavigationResponse>&&, Ref<WebKit::WebFramePolicyListenerProxy>&& listener, Object*)
121     {
122         listener->use();
123     }
124     
125     virtual void contentRuleListNotification(WebKit::WebPageProxy&, WTF::URL&&, WebCore::ContentRuleListResults&&) { };
126     
127 #if ENABLE(NETSCAPE_PLUGIN_API)
128     virtual bool didFailToInitializePlugIn(WebKit::WebPageProxy&, API::Dictionary&) { return false; }
129     virtual bool didBlockInsecurePluginVersion(WebKit::WebPageProxy&, API::Dictionary&) { return false; }
130     virtual void decidePolicyForPluginLoad(WebKit::WebPageProxy&, WebKit::PluginModuleLoadPolicy currentPluginLoadPolicy, Dictionary&, CompletionHandler<void(WebKit::PluginModuleLoadPolicy, const WTF::String&)>&& completionHandler)
131     {
132         completionHandler(currentPluginLoadPolicy, { });
133     }
134 #endif
135
136 #if ENABLE(WEBGL)
137     virtual void webGLLoadPolicy(WebKit::WebPageProxy&, const WTF::URL&, CompletionHandler<void(WebCore::WebGLLoadPolicy)>&& completionHandler) const { completionHandler(WebCore::WebGLLoadPolicy::WebGLAllowCreation); }
138     virtual void resolveWebGLLoadPolicy(WebKit::WebPageProxy&, const WTF::URL&, CompletionHandler<void(WebCore::WebGLLoadPolicy)>&& completionHandler) const { completionHandler(WebCore::WebGLLoadPolicy::WebGLAllowCreation); }
139 #endif
140     
141     virtual bool willGoToBackForwardListItem(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem&, bool inPageCache) { return false; }
142
143     virtual void didBeginNavigationGesture(WebKit::WebPageProxy&) { }
144     virtual void willEndNavigationGesture(WebKit::WebPageProxy&, bool willNavigate, WebKit::WebBackForwardListItem&) { }
145     virtual void didEndNavigationGesture(WebKit::WebPageProxy&, bool willNavigate, WebKit::WebBackForwardListItem&) { }
146     virtual void didRemoveNavigationGestureSnapshot(WebKit::WebPageProxy&) { }
147     virtual bool didChangeBackForwardList(WebKit::WebPageProxy&, WebKit::WebBackForwardListItem*, const Vector<Ref<WebKit::WebBackForwardListItem>>&) { return false; }
148
149 #if HAVE(APP_SSO)
150     virtual void decidePolicyForSOAuthorizationLoad(WebKit::WebPageProxy&, WebKit::SOAuthorizationLoadPolicy currentSOAuthorizationLoadPolicy, const WTF::String&, CompletionHandler<void(WebKit::SOAuthorizationLoadPolicy)>&& completionHandler)
151     {
152         completionHandler(currentSOAuthorizationLoadPolicy);
153     }
154 #endif
155 };
156
157 } // namespace API