Only expose WKDataDetectorTypes and -[WKWebViewConfiguration dataDetectorTypes] on iOS
[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
41 /*! @enum WKSelectionGranularity
42  @abstract The granularity with which a selection can be created and modified interactively.
43  @constant WKSelectionGranularityDynamic    Selection granularity varies automatically based on the selection.
44  @constant WKSelectionGranularityCharacter  Selection endpoints can be placed at any character boundary.
45  @discussion An example of how granularity may vary when WKSelectionGranularityDynamic is used is
46  that when the selection is within a single block, the granularity may be single character, and when
47  the selection is not confined to a single block, the selection granularity may be single block.
48  */
49 typedef NS_ENUM(NSInteger, WKSelectionGranularity) {
50     WKSelectionGranularityDynamic,
51     WKSelectionGranularityCharacter,
52 } WK_ENUM_AVAILABLE_IOS(8_0);
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     WKDataDetectorTypeTrackingNumber = 1 << 4,
71     WKDataDetectorTypeFlightNumber = 1 << 5,
72     WKDataDetectorTypeSpotlightSuggestion = 1 << 6,
73     WKDataDetectorTypeAll = NSUIntegerMax
74 } WK_ENUM_AVAILABLE(NA, WK_IOS_TBA);
75
76 #else
77
78 /*! @enum WKUserInterfaceDirectionPolicy
79  @abstract The policy used to determine the directionality of user interface elements inside a web view.
80  @constant WKUserInterfaceDirectionPolicyContent User interface directionality follows CSS / HTML / XHTML
81  specifications.
82  @constant WKUserInterfaceDirectionPolicySystem User interface directionality follows the view's
83  userInterfaceLayoutDirection property
84  @discussion When WKUserInterfaceDirectionPolicyContent is specified, the directionality of user interface
85  elements is affected by the "dir" attribute or the "direction" CSS property. When
86  WKUserInterfaceDirectionPolicySystem is specified, the directionaltiy of user interface elements is
87  affected by the direction of the view.
88 */
89 typedef NS_ENUM(NSInteger, WKUserInterfaceDirectionPolicy) {
90     WKUserInterfaceDirectionPolicyContent,
91     WKUserInterfaceDirectionPolicySystem,
92 } WK_ENUM_AVAILABLE(WK_MAC_TBA, NA);
93
94 #endif
95
96 /*! A WKWebViewConfiguration object is a collection of properties with
97  which to initialize a web view.
98  @helps Contains properties used to configure a @link WKWebView @/link.
99  */
100 WK_CLASS_AVAILABLE(10_10, 8_0)
101 @interface WKWebViewConfiguration : NSObject <NSCoding, NSCopying>
102
103 /*! @abstract The process pool from which to obtain the view's web content
104  process.
105  @discussion When a web view is initialized, a new web content process
106  will be created for it from the specified pool, or an existing process in
107  that pool will be used.
108 */
109 @property (nonatomic, strong) WKProcessPool *processPool;
110
111 /*! @abstract The preference settings to be used by the web view.
112 */
113 @property (nonatomic, strong) WKPreferences *preferences;
114
115 /*! @abstract The user content controller to associate with the web view.
116 */
117 @property (nonatomic, strong) WKUserContentController *userContentController;
118
119 /*! @abstract The website data store to be used by the web view.
120  */
121 @property (nonatomic, strong) WKWebsiteDataStore *websiteDataStore WK_AVAILABLE(10_11, 9_0);
122
123 /*! @abstract A Boolean value indicating whether the web view suppresses
124  content rendering until it is fully loaded into memory.
125  @discussion The default value is NO.
126  */
127 @property (nonatomic) BOOL suppressesIncrementalRendering;
128
129 /*! @abstract The name of the application as used in the user agent string.
130 */
131 @property (nullable, nonatomic, copy) NSString *applicationNameForUserAgent WK_AVAILABLE(10_11, 9_0);
132
133 /*! @abstract A Boolean value indicating whether AirPlay is allowed.
134  @discussion The default value is YES.
135  */
136 @property (nonatomic) BOOL allowsAirPlayForMediaPlayback WK_AVAILABLE(10_11, 9_0);
137
138 #if TARGET_OS_IPHONE
139 /*! @abstract A Boolean value indicating whether HTML5 videos play inline
140  (YES) or use the native full-screen controller (NO).
141  @discussion The default value is NO.
142  */
143 @property (nonatomic) BOOL allowsInlineMediaPlayback;
144
145 /*! @abstract A Boolean value indicating whether HTML5 videos require the
146  user to start playing them (YES) or can play automatically (NO).
147  @discussion The default value is YES.
148  */
149 @property (nonatomic) BOOL requiresUserActionForMediaPlayback WK_AVAILABLE(NA, 9_0);
150
151 /*! @abstract The level of granularity with which the user can interactively
152  select content in the web view.
153  @discussion Possible values are described in WKSelectionGranularity.
154  The default value is WKSelectionGranularityDynamic.
155  */
156 @property (nonatomic) WKSelectionGranularity selectionGranularity;
157
158 /*! @abstract A Boolean value indicating whether HTML5 videos may play
159  picture-in-picture.
160  @discussion The default value is YES.
161  */
162 @property (nonatomic) BOOL allowsPictureInPictureMediaPlayback WK_AVAILABLE(NA, 9_0);
163
164 /*! @abstract An enum value indicating the type of data detection desired.
165  @discussion The default value is WKDataDetectorTypeNone.
166  An example of how this property may affect the content loaded in the WKWebView is that content like
167  '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'
168  if the dataDetectorTypes property is set to WKDataDetectorTypePhoneNumber | WKDataDetectorTypeLink | WKDataDetectorTypeCalendarEvent.
169
170  */
171 @property (nonatomic) WKDataDetectorTypes dataDetectorTypes WK_AVAILABLE(NA, WK_IOS_TBA);
172
173 #else
174
175 /*! @abstract The directionality of user interface elements.
176  @discussion Possible values are described in WKUserInterfaceDirectionPolicy.
177  The default value is WKUserInterfaceDirectionPolicyContent.
178  */
179 @property (nonatomic) WKUserInterfaceDirectionPolicy userInterfaceDirectionPolicy WK_AVAILABLE(WK_MAC_TBA, NA);
180
181 #endif
182
183 @end
184
185 @interface WKWebViewConfiguration (WKDeprecated)
186
187 #if TARGET_OS_IPHONE
188 @property (nonatomic) BOOL mediaPlaybackRequiresUserAction WK_DEPRECATED(NA, NA, 8_0, 9_0, "Please use requiresUserActionForMediaPlayback");
189 @property (nonatomic) BOOL mediaPlaybackAllowsAirPlay WK_DEPRECATED(NA, NA, 8_0, 9_0, "Please use allowsAirPlayForMediaPlayback");
190 #endif
191
192 @end
193
194 NS_ASSUME_NONNULL_END
195
196 #endif