d523e3c1d45b3f0523ec64063788695039614614
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / Cocoa / WKUIDelegate.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 WK_ASSUME_NONNULL_BEGIN
33
34 @class WKFrameInfo;
35 @class WKNavigationAction;
36 @class WKWebViewConfiguration;
37 @class WKWindowFeatures;
38
39 /*! A class conforming to the WKUIDelegate protocol provides methods for
40  presenting native UI on behalf of a webpage.
41  */
42 @protocol WKUIDelegate <NSObject>
43
44 @optional
45
46 /*! @abstract Creates a new web view.
47  @param webView The web view invoking the delegate method.
48  @param configuration The configuration to use when creating the new web
49  view.
50  @param navigationAction The navigation action causing the new web view to
51  be created.
52  @param windowFeatures Window features requested by the webpage.
53  @result A new web view or nil.
54  @discussion The web view returned must be created with the specified configuration. WebKit will load the request in the returned web view.
55
56  If you do not implement this method, the web view will cancel the navigation.
57  */
58 - (WK_NULLABLE WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures;
59
60 /*! @abstract Notifies your app that the DOM window object's close() method completed successfully.
61   @param webView The web view invoking the delegate method.
62   @discussion Your app should remove the web view from the view hierarchy and update
63   the UI as needed, such as by closing the containing browser tab or window.
64   */
65 - (void)webViewDidClose:(WKWebView *)webView WK_AVAILABLE(10_11, 9_0);
66
67 /*! @abstract Displays a JavaScript alert panel.
68  @param webView The web view invoking the delegate method.
69  @param message The message to display.
70  @param frame Information about the frame whose JavaScript initiated this
71  call.
72  @param completionHandler The completion handler to call after the alert
73  panel has been dismissed.
74  @discussion For user security, your app should call attention to the fact
75  that a specific website controls the content in this panel. A simple forumla
76  for identifying the controlling website is frame.request.URL.host.
77  The panel should have a single OK button.
78
79  If you do not implement this method, the web view will behave as if the user selected the OK button.
80  */
81 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler;
82
83 /*! @abstract Displays a JavaScript confirm panel.
84  @param webView The web view invoking the delegate method.
85  @param message The message to display.
86  @param frame Information about the frame whose JavaScript initiated this call.
87  @param completionHandler The completion handler to call after the confirm
88  panel has been dismissed. Pass YES if the user chose OK, NO if the user
89  chose Cancel.
90  @discussion For user security, your app should call attention to the fact
91  that a specific website controls the content in this panel. A simple forumla
92  for identifying the controlling website is frame.request.URL.host.
93  The panel should have two buttons, such as OK and Cancel.
94
95  If you do not implement this method, the web view will behave as if the user selected the Cancel button.
96  */
97 - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler;
98
99 /*! @abstract Displays a JavaScript text input panel.
100  @param webView The web view invoking the delegate method.
101  @param message The message to display.
102  @param defaultText The initial text to display in the text entry field.
103  @param frame Information about the frame whose JavaScript initiated this call.
104  @param completionHandler The completion handler to call after the text
105  input panel has been dismissed. Pass the entered text if the user chose
106  OK, otherwise nil.
107  @discussion For user security, your app should call attention to the fact
108  that a specific website controls the content in this panel. A simple forumla
109  for identifying the controlling website is frame.request.URL.host.
110  The panel should have two buttons, such as OK and Cancel, and a field in
111  which to enter text.
112
113  If you do not implement this method, the web view will behave as if the user selected the Cancel button.
114  */
115 - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(WK_NULLABLE NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString * WK_NULLABLE_SPECIFIER result))completionHandler;
116
117 @end
118
119 WK_ASSUME_NONNULL_END
120
121 #endif