52d1c1100c1bcc47e83be71326bc271195f80154
[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 @class WKFrameInfo;
33 @class WKWebViewConfiguration;
34 @class WKWindowFeatures;
35
36 /*! A class conforming to the WKUIDelegate protocol provides methods for
37  presenting native UI on behalf of a webpage.
38  */
39 @protocol WKUIDelegate <NSObject>
40
41 @optional
42
43 /*! @abstract Creates a new web view.
44  @param webView The web view invoking the delegate method.
45  @param configuration The configuration to use when creating the new web
46  view.
47  @param navigationAction The navigation action causing the new web view to
48  be created.
49  @param windowFeatures Window features requested by the webpage.
50  @result A new web view or nil.
51  @discussion The web view returned must be created with the specified configuration. WebKit will load the request in the returned web view.
52  */
53 - (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures;
54
55 /*! @abstract Displays a JavaScript alert panel.
56  @param webView The web view invoking the delegate method.
57  @param message The message to display.
58  @param frame Information about the frame whose JavaScript initiated this
59  call.
60  @param completionHandler The completion handler to call after the alert
61  panel has been dismissed.
62  @discussion For user security, your app should call attention to the fact
63  that a specific website controls the content in this panel. A simple forumla
64  for identifying the controlling website is frame.request.URL.host.
65  The panel should have a single OK button.
66  */
67 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)())completionHandler;
68
69 /*! @abstract Displays a JavaScript confirm panel.
70  @param webView The web view invoking the delegate method.
71  @param message The message to display.
72  @param frame Information about the frame whose JavaScript initiated this call.
73  @param completionHandler The completion handler to call after the confirm
74  panel has been dismissed. Pass YES if the user chose OK, NO if the user
75  chose Cancel.
76  @discussion For user security, your app should call attention to the fact
77  that a specific website controls the content in this panel. A simple forumla
78  for identifying the controlling website is frame.request.URL.host.
79  The panel should have two buttons, such as OK and Cancel.
80  */
81 - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler;
82
83 /*! @abstract Displays a JavaScript text input panel.
84  @param webView The web view invoking the delegate method.
85  @param message The message to display.
86  @param defaultText The initial text to display in the text entry field.
87  @param frame Information about the frame whose JavaScript initiated this call.
88  @param completionHandler The completion handler to call after the text
89  input panel has been dismissed. Pass the entered text if the user chose
90  OK, otherwise nil.
91  @discussion For user security, your app should call attention to the fact
92  that a specific website controls the content in this panel. A simple forumla
93  for identifying the controlling website is frame.request.URL.host.
94  The panel should have two buttons, such as OK and Cancel, and a field in
95  which to enter text.
96  */
97 - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString *result))completionHandler;
98
99 @end
100
101 #endif