[Cocoa] Get rid of WK_ macros for nullability
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / Cocoa / WKWebViewConfiguration.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 NS_ASSUME_NONNULL_BEGIN
33
34 @class WKPreferences;
35 @class WKProcessPool;
36 @class WKUserContentController;
37 @class WKWebsiteDataStore;
38
39 #if TARGET_OS_IPHONE
40 /*! @enum WKSelectionGranularity
41  @abstract The granularity with which a selection can be created and modified interactively.
42  @constant WKSelectionGranularityDynamic    Selection granularity varies automatically based on the selection.
43  @constant WKSelectionGranularityCharacter  Selection endpoints can be placed at any character boundary.
44  @discussion An example of how granularity may vary when WKSelectionGranularityDynamic is used is
45  that when the selection is within a single block, the granularity may be single character, and when
46  the selection is not confined to a single block, the selection granularity may be single block.
47  */
48 typedef NS_ENUM(NSInteger, WKSelectionGranularity) {
49     WKSelectionGranularityDynamic,
50     WKSelectionGranularityCharacter,
51 } WK_ENUM_AVAILABLE_IOS(8_0);
52 #endif
53
54 /*! @enum WKDataDetectorTypes
55  @abstract The type of data detected.
56  @constant WKDataDetectorTypeNone No detection is performed.
57  @constant WKDataDetectorTypePhoneNumber Phone numbers are detected and turned into links.
58  @constant WKDataDetectorTypeLink URLs in text are detected and turned into links.
59  @constant WKDataDetectorTypeAddress Addresses are detected and turned into links.
60  @constant WKDataDetectorTypeCalendarEvent Dates and times that are in the future are detected and turned into links.
61  @constant WKDataDetectorTypeAll All of the above data types are turned into links when detected. Choosing this value will
62  automatically include any new detection type that is added.
63  */
64 typedef NS_OPTIONS(NSUInteger, WKDataDetectorTypes) {
65     WKDataDetectorTypeNone = 0,
66     WKDataDetectorTypePhoneNumber = 1 << 0,
67     WKDataDetectorTypeLink = 1 << 1,
68     WKDataDetectorTypeAddress = 1 << 2,
69     WKDataDetectorTypeCalendarEvent = 1 << 3,
70     WKDataDetectorTypeAll = NSUIntegerMax
71 } WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
72
73 /*! A WKWebViewConfiguration object is a collection of properties with
74  which to initialize a web view.
75  @helps Contains properties used to configure a @link WKWebView @/link.
76  */
77 WK_CLASS_AVAILABLE(10_10, 8_0)
78 @interface WKWebViewConfiguration : NSObject <NSCopying>
79
80 /*! @abstract The process pool from which to obtain the view's web content
81  process.
82  @discussion When a web view is initialized, a new web content process
83  will be created for it from the specified pool, or an existing process in
84  that pool will be used.
85 */
86 @property (nonatomic, strong) WKProcessPool *processPool;
87
88 /*! @abstract The preference settings to be used by the web view.
89 */
90 @property (nonatomic, strong) WKPreferences *preferences;
91
92 /*! @abstract The user content controller to associate with the web view.
93 */
94 @property (nonatomic, strong) WKUserContentController *userContentController;
95
96 /*! @abstract The website data store to be used by the web view.
97  */
98 @property (nonatomic, strong) WKWebsiteDataStore *websiteDataStore WK_AVAILABLE(10_11, 9_0);
99
100 /*! @abstract A Boolean value indicating whether the web view suppresses
101  content rendering until it is fully loaded into memory.
102  @discussion The default value is NO.
103  */
104 @property (nonatomic) BOOL suppressesIncrementalRendering;
105
106 /*! @abstract The name of the application as used in the user agent string.
107 */
108 @property (nullable, nonatomic, copy) NSString *applicationNameForUserAgent WK_AVAILABLE(10_11, 9_0);
109
110 /*! @abstract A Boolean value indicating whether AirPlay is allowed.
111  @discussion The default value is YES.
112  */
113 @property (nonatomic) BOOL allowsAirPlayForMediaPlayback WK_AVAILABLE(10_11, 9_0);
114
115 /*! @abstract An enum value indicating the type of data detection desired.
116  @discussion The default value is WKDataDetectorTypeNone.
117  An example of how this property may affect the content loaded in the WKWebView is that content like
118  'Visit apple.com on July 4th or call 1 800 555-5545' will be transformed to add links around 'apple.com', 'July 4th' and '1 800 555-5545'
119  if the dataDetectorTypes property is set to WKDataDetectorTypePhoneNumber | WKDataDetectorTypeLink | WKDataDetectorTypeCalendarEvent.
120
121  */
122 @property (nonatomic) WKDataDetectorTypes dataDetectorTypes WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
123
124 #if TARGET_OS_IPHONE
125 /*! @abstract A Boolean value indicating whether HTML5 videos play inline
126  (YES) or use the native full-screen controller (NO).
127  @discussion The default value is NO.
128  */
129 @property (nonatomic) BOOL allowsInlineMediaPlayback;
130
131 /*! @abstract A Boolean value indicating whether HTML5 videos require the
132  user to start playing them (YES) or can play automatically (NO).
133  @discussion The default value is YES.
134  */
135 @property (nonatomic) BOOL requiresUserActionForMediaPlayback WK_AVAILABLE(NA, 9_0);
136
137 /*! @abstract The level of granularity with which the user can interactively
138  select content in the web view.
139  @discussion Possible values are described in WKSelectionGranularity.
140  The default value is WKSelectionGranularityDynamic.
141  */
142 @property (nonatomic) WKSelectionGranularity selectionGranularity;
143
144 /*! @abstract A Boolean value indicating whether HTML5 videos may play
145  picture-in-picture.
146  @discussion The default value is YES.
147  */
148 @property (nonatomic) BOOL allowsPictureInPictureMediaPlayback WK_AVAILABLE(NA, 9_0);
149
150 #endif
151
152 @end
153
154 @interface WKWebViewConfiguration (WKDeprecated)
155
156 #if TARGET_OS_IPHONE
157 @property (nonatomic) BOOL mediaPlaybackRequiresUserAction WK_DEPRECATED(NA, NA, 8_0, 9_0, "Please use requiresUserActionForMediaPlayback");
158 @property (nonatomic) BOOL mediaPlaybackAllowsAirPlay WK_DEPRECATED(NA, NA, 8_0, 9_0, "Please use allowsAirPlayForMediaPlayback");
159 #endif
160
161 @end
162
163 NS_ASSUME_NONNULL_END
164
165 #endif