Rename Source/WebKit to Source/WebKitLegacy.
[WebKit-https.git] / Source / WebKitLegacy / mac / WebView / WebPreferences.h
1 /*
2  * Copyright (C) 2003, 2004, 2005, 2012 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  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer. 
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution. 
13  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #import <Foundation/Foundation.h>
30
31 /*!
32 @enum WebCacheModel
33
34 @abstract Specifies a usage model for a WebView, which WebKit will use to 
35 determine its caching behavior.
36
37 @constant WebCacheModelDocumentViewer Appropriate for a WebView displaying 
38 a fixed document -- like a splash screen, a chat document, or a word processing 
39 document -- with no UI for navigation. The WebView will behave like any other 
40 view, releasing resources when they are no longer referenced. Remote resources, 
41 if any, will be cached to disk. This is the most memory-efficient setting.
42
43 Examples: iChat, Mail, TextMate, Growl.
44
45 @constant WebCacheModelDocumentBrowser Appropriate for a WebView displaying 
46 a browsable series of documents with a UI for navigating between them -- for 
47 example, a reference materials browser or a website designer. The WebView will 
48 cache a reasonable number of resources and previously viewed documents in 
49 memory and/or on disk.
50
51 Examples: Dictionary, Help Viewer, Coda.
52
53 @constant WebCacheModelPrimaryWebBrowser Appropriate for a WebView in the 
54 application that acts as the user's primary web browser. The WebView will cache
55 a very large number of resources and previously viewed documents in memory 
56 and/or on disk.
57
58 Examples: Safari, OmniWeb, Shiira.
59 */
60 typedef NS_ENUM(NSUInteger, WebCacheModel) {
61     WebCacheModelDocumentViewer = 0,
62     WebCacheModelDocumentBrowser = 1,
63     WebCacheModelPrimaryWebBrowser = 2
64 };
65
66 typedef struct WebPreferencesPrivate WebPreferencesPrivate;
67
68 extern NSString *WebPreferencesChangedNotification;
69
70 /*!
71     @class WebPreferences
72 */
73 @interface WebPreferences: NSObject <NSCoding>
74 {
75 @package
76     WebPreferencesPrivate *_private;
77 }
78
79 /*!
80     @method standardPreferences
81 */
82 + (WebPreferences *)standardPreferences;
83
84 /*!
85     @method initWithIdentifier:
86     @param anIdentifier A string used to identify the WebPreferences.
87     @discussion WebViews can share instances of WebPreferences by using an instance of WebPreferences with
88     the same identifier.  Typically, instance are not created directly.  Instead you set the preferences
89     identifier on a WebView.  The identifier is used as a prefix that is added to the user defaults keys
90     for the WebPreferences.
91     @result Returns a new instance of WebPreferences or a previously allocated instance with the same identifier.
92 */
93 - (instancetype)initWithIdentifier:(NSString *)anIdentifier;
94
95 /*!
96     @property identifier
97     @result Returns the identifier for this WebPreferences.
98 */
99 @property (nonatomic, readonly, copy) NSString *identifier;
100
101 /*!
102     @property standardFontFamily
103 */
104 @property (nonatomic, copy) NSString *standardFontFamily;
105
106 /*!
107     @property fixedFontFamily
108 */
109 @property (nonatomic, copy) NSString *fixedFontFamily;
110
111 /*!
112     @property serifFontFamily
113 */
114 @property (nonatomic, copy) NSString *serifFontFamily;
115
116 /*!
117     @property sansSerifFontFamily
118 */
119 @property (nonatomic, copy) NSString *sansSerifFontFamily;
120
121 /*!
122     @property cursiveFontFamily
123 */
124 @property (nonatomic, copy) NSString *cursiveFontFamily;
125
126 /*!
127     @property fantasyFontFamily
128 */
129 @property (nonatomic, copy) NSString *fantasyFontFamily;
130
131 /*!
132     @property defaultFontSize
133 */
134 @property (nonatomic) int defaultFontSize;
135
136 /*!
137     @property defaultFixedFontSize
138 */
139 @property (nonatomic) int defaultFixedFontSize;
140
141 /*!
142     @property minimumFontSize
143 */
144 @property (nonatomic) int minimumFontSize;
145
146 /*!
147     @property minimumLogicalFontSize
148 */
149 @property (nonatomic) int minimumLogicalFontSize;
150
151 /*!
152     @property defaultTextEncodingName
153 */
154 @property (nonatomic, copy) NSString *defaultTextEncodingName;
155
156 /*!
157     @property userStyleSheetEnabled
158 */
159 @property (nonatomic) BOOL userStyleSheetEnabled;
160
161 /*!
162     @property userStyleSheetLocation
163     @abstract The location of the user style sheet.
164 */
165 @property (nonatomic, strong) NSURL *userStyleSheetLocation;
166
167 /*!
168     @property javaEnabled
169 */
170 @property (nonatomic, getter=isJavaEnabled) BOOL javaEnabled;
171
172 /*!
173     @property javaScriptEnabled
174 */
175 @property (nonatomic, getter=isJavaScriptEnabled) BOOL javaScriptEnabled;
176
177 /*!
178     @property javaScriptCanOpenWindowsAutomatically
179 */
180 @property (nonatomic) BOOL javaScriptCanOpenWindowsAutomatically;
181
182 /*!
183     @property plugInsEnabled
184 */
185 @property (nonatomic, getter=arePlugInsEnabled) BOOL plugInsEnabled;
186
187 /*!
188     @property allowsAnimatedImages
189 */
190 @property (nonatomic) BOOL allowsAnimatedImages;
191
192 /*!
193     @property allowsAnimatedImageLooping
194 */
195 @property (nonatomic) BOOL allowsAnimatedImageLooping;
196
197 /*!
198     @property willLoadImagesAutomatically
199 */
200 @property (nonatomic) BOOL loadsImagesAutomatically;
201
202 /*!
203     @property autosaves
204     @discussion If autosaves is YES the settings represented by
205     WebPreferences will be stored in the user defaults database.
206 */
207 @property (nonatomic) BOOL autosaves;
208
209 #if !TARGET_OS_IPHONE
210 /*!
211     @property shouldPrintBackgrounds
212 */
213 @property (nonatomic) BOOL shouldPrintBackgrounds;
214 #endif
215
216 /*!
217     @property privateBrowsingEnabled:
218     @abstract If private browsing is enabled, WebKit will not store information
219     about sites the user visits.
220  */
221 @property (nonatomic) BOOL privateBrowsingEnabled;
222
223 #if !TARGET_OS_IPHONE
224 /*!
225     @property tabsToLinks
226     @abstract If tabsToLinks is YES, the tab key will focus links and form controls.
227     The option key temporarily reverses this preference.
228 */
229 @property (nonatomic) BOOL tabsToLinks;
230 #endif
231
232 /*!
233     @property usesPageCache
234     @abstract Whether the receiver's associated WebViews use the shared
235     page cache.
236     @discussion Pages are cached as they are added to a WebBackForwardList, and
237     removed from the cache as they are removed from a WebBackForwardList. Because 
238     the page cache is global, caching a page in one WebBackForwardList may cause
239     a page in another WebBackForwardList to be evicted from the cache.
240 */
241 @property (nonatomic) BOOL usesPageCache;
242
243 /*!
244     @property cacheModel
245     @abstract Specifies a usage model for a WebView, which WebKit will use to
246     determine its caching behavior. If necessary, WebKit
247     will prune its caches to match cacheModel when set.
248
249     @discussion Research indicates that users tend to browse within clusters of
250     documents that hold resources in common, and to revisit previously visited
251     documents. WebKit and the frameworks below it include built-in caches that take
252     advantage of these patterns, substantially improving document load speed in
253     browsing situations. The WebKit cache model controls the behaviors of all of
254     these caches, including NSURLCache and the various WebCore caches.
255
256     Applications with a browsing interface can improve document load speed
257     substantially by specifying WebCacheModelDocumentBrowser. Applications without
258     a browsing interface can reduce memory usage substantially by specifying
259     WebCacheModelDocumentViewer.
260
261     If cacheModel is not set, WebKit will select a cache model automatically.
262 */
263 @property (nonatomic) WebCacheModel cacheModel;
264
265 /*!
266     @property suppressesIncrementalRendering
267 */
268 @property (nonatomic) BOOL suppressesIncrementalRendering;
269
270 /*!
271     @property allowsAirPlayForMediaPlayback
272  */
273 @property (nonatomic) BOOL allowsAirPlayForMediaPlayback;
274
275 @end