ae0026a86af44d554b9606dc15f3631ef3a02451
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / Cocoa / WKNavigationDelegate.h
1 /*
2  * Copyright (C) 2014 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 #import <WebKit/WKFoundation.h>
27
28 #if WK_API_ENABLED
29
30 #import <Foundation/Foundation.h>
31
32 @class WKNavigation;
33 @class WKNavigationAction;
34 @class WKNavigationResponse;
35 @class WKWebView;
36
37 /*! @enum WKNavigationActionPolicy
38  @abstract The policy to pass back to the decision handler from the
39  webView:decidePolicyForNavigationAction:decisionHandler: method.
40  @constant WKNavigationActionPolicyCancel   Cancel the navigation.
41  @constant WKNavigationActionPolicyAllow    Allow the navigation to continue.
42  */
43 typedef NS_ENUM(NSInteger, WKNavigationActionPolicy) {
44     WKNavigationActionPolicyCancel,
45     WKNavigationActionPolicyAllow,
46 } WK_ENUM_AVAILABLE(10_10, 8_0);
47
48 /*! @enum WKNavigationResponsePolicy
49  @abstract The policy to pass back to the decision handler from the webView:decidePolicyForNavigationResponse:decisionHandler: method.
50  @constant WKNavigationResponsePolicyCancel   Cancel the navigation.
51  @constant WKNavigationResponsePolicyAllow    Allow the navigation to continue.
52  */
53 typedef NS_ENUM(NSInteger, WKNavigationResponsePolicy) {
54     WKNavigationResponsePolicyCancel,
55     WKNavigationResponsePolicyAllow,
56 } WK_ENUM_AVAILABLE(10_10, 8_0);
57
58 /*! A class conforming to the WKNavigationDelegate protocol can provide
59  methods for tracking progress for main frame navigations and for deciding
60  policy for main frame and subframe navigations.
61  */
62 @protocol WKNavigationDelegate <NSObject>
63
64 @optional
65
66 /*! @abstract Decides whether to allow or cancel a navigation.
67  @param webView The web view invoking the delegate method.
68  @param navigationAction Descriptive information about the action
69  triggering the navigation request.
70  @param decisionHandler The decision handler to call to allow or cancel the
71  navigation. The argument is one of the constants of the enumerated type WKNavigationActionPolicy.
72  */
73 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
74
75 /*! @abstract Decides whether to allow or cancel a navigation after its
76  response is known.
77  @param webView The web view invoking the delegate method.
78  @param navigationResponse Descriptive information about the navigation
79  response.
80  @param decisionHandler The decision handler to call to allow or cancel the
81  navigation. The argument is one of the constants of the enumerated type WKNavigationResponsePolicy.
82  */
83 - (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler;
84
85 /*! @abstract Invoked when a main frame navigation starts.
86  @param webView The web view invoking the delegate method.
87  @param navigation The navigation.
88  */
89 - (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
90
91 /*! @abstract Invoked when a server redirect is received for the main
92  frame.
93  @param webView The web view invoking the delegate method.
94  @param navigation The navigation.
95  */
96 - (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation;
97
98 /*! @abstract Invoked when an error occurs while starting to load data for
99  the main frame.
100  @param webView The web view invoking the delegate method.
101  @param navigation The navigation.
102  @param error The error that occurred.
103  */
104 - (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error;
105
106 /*! @abstract Invoked when content starts arriving for the main frame.
107  @param webView The web view invoking the delegate method.
108  @param navigation The navigation.
109  */
110 - (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
111
112 /*! @abstract Invoked when a main frame navigation completes.
113  @param webView The web view invoking the delegate method.
114  @param navigation The navigation.
115  */
116 - (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;
117
118 /*! @abstract Invoked when an error occurs during a committed main frame
119  navigation.
120  @param webView The web view invoking the delegate method.
121  @param navigation The navigation.
122  @param error The error that occurred.
123  */
124 - (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error;
125
126 /*! @abstract Invoked when the web view needs to respond to an authentication challenge.
127  @param webView The web view that received the authentication challenge.
128  @param challenge The authentication challenge.
129  @param completionHandler The completion handler you must invoke to respond to the challenge. The
130  disposition argument is one of the constants of the enumerated type
131  NSURLSessionAuthChallengeDisposition. When disposition is NSURLSessionAuthChallengeUseCredential,
132  the credential argument is the credential to use, or nil to indicate continuing without a
133  credential.
134  */
135 - (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler;
136
137 @end
138
139 #endif