1 /* 2 * Copyright (C) 2003, 2004, 2005 Apple Computer, 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 Computer, 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 #if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 32 #define WebNSUInteger unsigned int 33 #else 34 #define WebNSUInteger NSUInteger 35 #endif 36 37 /*! 38 @enum WebCacheModel 39 40 @abstract Specifies a usage model for a WebView, which WebKit will use to 41 determine its caching behavior. 42 43 @constant WebCacheModelDocumentViewer Appropriate for a WebView displaying 44 a fixed document -- like a splash screen, a chat document, or a word processing 45 document -- with no UI for navigation. The WebView will behave like any other 46 view, releasing resources when they are no longer referenced. Remote resources, 47 if any, will be cached to disk. This is the most memory-efficient setting. 48 49 Examples: iChat, Mail, TextMate, Growl. 50 51 @constant WebCacheModelDocumentBrowser Appropriate for a WebView displaying 52 a browsable series of documents with a UI for navigating between them -- for 53 example, a reference materials browser or a website designer. The WebView will 54 cache a reasonable number of resources and previously viewed documents in 55 memory and/or on disk. 56 57 Examples: Dictionary, Help Viewer, Coda. 58 59 @constant WebCacheModelPrimaryWebBrowser Appropriate for a WebView in the 60 application that acts as the user's primary web browser. The WebView will cache 61 a very large number of resources and previously viewed documents in memory 62 and/or on disk. 63 64 Examples: Safari, OmniWeb, Shiira. 65 */ 66 enum { 67 WebCacheModelDocumentViewer = 0, 68 WebCacheModelDocumentBrowser = 1, 69 WebCacheModelPrimaryWebBrowser = 2 70 }; 71 typedef WebNSUInteger WebCacheModel; 72 73 @class WebPreferencesPrivate; 74 75 extern NSString *WebPreferencesChangedNotification; 76 77 /*! 78 @class WebPreferences 79 */ 80 @interface WebPreferences: NSObject <NSCoding> 81 { 82 @private 83 WebPreferencesPrivate *_private; 84 } 85 86 /*! 87 @method standardPreferences 88 */ 89 + (WebPreferences *)standardPreferences; 90 91 /*! 92 @method initWithIdentifier: 93 @param anIdentifier A string used to identify the WebPreferences. 94 @discussion WebViews can share instances of WebPreferences by using an instance of WebPreferences with 95 the same identifier. Typically, instance are not created directly. Instead you set the preferences 96 identifier on a WebView. The identifier is used as a prefix that is added to the user defaults keys 97 for the WebPreferences. 98 @result Returns a new instance of WebPreferences or a previously allocated instance with the same identifier. 99 */ 100 - (id)initWithIdentifier:(NSString *)anIdentifier; 101 102 /*! 103 @method identifier 104 @result Returns the identifier for this WebPreferences. 105 */ 106 - (NSString *)identifier; 107 108 /*! 109 @method standardFontFamily 110 */ 111 - (NSString *)standardFontFamily; 112 113 /*! 114 @method setStandardFontFamily: 115 @param family 116 */ 117 - (void)setStandardFontFamily:(NSString *)family; 118 119 /*! 120 @method fixedFontFamily 121 */ 122 - (NSString *)fixedFontFamily; 123 124 /*! 125 @method setFixedFontFamily: 126 @param family 127 */ 128 - (void)setFixedFontFamily:(NSString *)family; 129 130 /*! 131 @method serifFontFamily 132 */ 133 - (NSString *)serifFontFamily; 134 135 /*! 136 @method setSerifFontFamily: 137 @param family 138 */ 139 - (void)setSerifFontFamily:(NSString *)family; 140 141 /*! 142 @method sansSerifFontFamily 143 */ 144 - (NSString *)sansSerifFontFamily; 145 146 /*! 147 @method setSansSerifFontFamily: 148 @param family 149 */ 150 - (void)setSansSerifFontFamily:(NSString *)family; 151 152 /*! 153 @method cursiveFontFamily 154 */ 155 - (NSString *)cursiveFontFamily; 156 157 /*! 158 @method setCursiveFontFamily: 159 @param family 160 */ 161 - (void)setCursiveFontFamily:(NSString *)family; 162 163 /*! 164 @method fantasyFontFamily 165 */ 166 - (NSString *)fantasyFontFamily; 167 168 /*! 169 @method setFantasyFontFamily: 170 @param family 171 */ 172 - (void)setFantasyFontFamily:(NSString *)family; 173 174 /*! 175 @method defaultFontSize 176 */ 177 - (int)defaultFontSize; 178 179 /*! 180 @method setDefaultFontSize: 181 @param size 182 */ 183 - (void)setDefaultFontSize:(int)size; 184 185 /*! 186 @method defaultFixedFontSize 187 */ 188 - (int)defaultFixedFontSize; 189 190 /*! 191 @method setDefaultFixedFontSize: 192 @param size 193 */ 194 - (void)setDefaultFixedFontSize:(int)size; 195 196 /*! 197 @method minimumFontSize 198 */ 199 - (int)minimumFontSize; 200 201 /*! 202 @method setMinimumFontSize: 203 @param size 204 */ 205 - (void)setMinimumFontSize:(int)size; 206 207 /*! 208 @method minimumLogicalFontSize 209 */ 210 - (int)minimumLogicalFontSize; 211 212 /*! 213 @method setMinimumLogicalFontSize: 214 @param size 215 */ 216 - (void)setMinimumLogicalFontSize:(int)size; 217 218 /*! 219 @method defaultTextEncodingName 220 */ 221 - (NSString *)defaultTextEncodingName; 222 223 /*! 224 @method setDefaultTextEncodingName: 225 @param encoding 226 */ 227 - (void)setDefaultTextEncodingName:(NSString *)encoding; 228 229 /*! 230 @method userStyleSheetEnabled 231 */ 232 - (BOOL)userStyleSheetEnabled; 233 234 /*! 235 @method setUserStyleSheetEnabled: 236 @param flag 237 */ 238 - (void)setUserStyleSheetEnabled:(BOOL)flag; 239 240 /*! 241 @method userStyleSheetLocation 242 @discussion The location of the user style sheet. 243 */ 244 - (NSURL *)userStyleSheetLocation; 245 246 /*! 247 @method setUserStyleSheetLocation: 248 @param URL The location of the user style sheet. 249 */ 250 - (void)setUserStyleSheetLocation:(NSURL *)URL; 251 252 /*! 253 @method isJavaEnabled 254 */ 255 - (BOOL)isJavaEnabled; 256 257 /*! 258 @method setJavaEnabled: 259 @param flag 260 */ 261 - (void)setJavaEnabled:(BOOL)flag; 262 263 /*! 264 @method isJavaScriptEnabled 265 */ 266 - (BOOL)isJavaScriptEnabled; 267 268 /*! 269 @method setJavaScriptEnabled: 270 @param flag 271 */ 272 - (void)setJavaScriptEnabled:(BOOL)flag; 273 274 /*! 275 @method JavaScriptCanOpenWindowsAutomatically 276 */ 277 - (BOOL)javaScriptCanOpenWindowsAutomatically; 278 279 /*! 280 @method setJavaScriptCanOpenWindowsAutomatically: 281 @param flag 282 */ 283 - (void)setJavaScriptCanOpenWindowsAutomatically:(BOOL)flag; 284 285 /*! 286 @method arePlugInsEnabled 287 */ 288 - (BOOL)arePlugInsEnabled; 289 290 /*! 291 @method setPlugInsEnabled: 292 @param flag 293 */ 294 - (void)setPlugInsEnabled:(BOOL)flag; 295 296 /*! 297 @method allowAnimatedImages 298 */ 299 - (BOOL)allowsAnimatedImages; 300 301 /*! 302 @method setAllowAnimatedImages: 303 @param flag 304 */ 305 - (void)setAllowsAnimatedImages:(BOOL)flag; 306 307 /*! 308 @method allowAnimatedImageLooping 309 */ 310 - (BOOL)allowsAnimatedImageLooping; 311 312 /*! 313 @method setAllowAnimatedImageLooping: 314 @param flag 315 */ 316 - (void)setAllowsAnimatedImageLooping: (BOOL)flag; 317 318 /*! 319 @method setWillLoadImagesAutomatically: 320 @param flag 321 */ 322 - (void)setLoadsImagesAutomatically: (BOOL)flag; 323 324 /*! 325 @method willLoadImagesAutomatically 326 */ 327 - (BOOL)loadsImagesAutomatically; 328 329 /*! 330 @method setAutosaves: 331 @param flag 332 @discussion If autosave preferences is YES the settings represented by 333 WebPreferences will be stored in the user defaults database. 334 */ 335 - (void)setAutosaves:(BOOL)flag; 336 337 /*! 338 @method autosaves 339 @result The value of the autosave preferences flag. 340 */ 341 - (BOOL)autosaves; 342 343 /*! 344 @method setShouldPrintBackgrounds: 345 @param flag 346 */ 347 - (void)setShouldPrintBackgrounds:(BOOL)flag; 348 349 /*! 350 @method shouldPrintBackgrounds 351 @result The value of the shouldPrintBackgrounds preferences flag 352 */ 353 - (BOOL)shouldPrintBackgrounds; 354 355 /*! 356 @method setPrivateBrowsingEnabled: 357 @param flag 358 @abstract If private browsing is enabled, WebKit will not store information 359 about sites the user visits. 360 */ 361 - (void)setPrivateBrowsingEnabled:(BOOL)flag; 362 363 /*! 364 @method privateBrowsingEnabled 365 */ 366 - (BOOL)privateBrowsingEnabled; 367 368 /*! 369 @method setTabsToLinks: 370 @param flag 371 @abstract If tabsToLinks is YES, the tab key will focus links and form controls. 372 The option key temporarily reverses this preference. 373 */ 374 - (void)setTabsToLinks:(BOOL)flag; 375 376 /*! 377 @method tabsToLinks 378 */ 379 - (BOOL)tabsToLinks; 380 381 /*! 382 @method setUsesPageCache: 383 @abstract Sets whether the receiver's associated WebViews use the shared 384 page cache. 385 @param UsesPageCache Whether the receiver's associated WebViews use the 386 shared page cache. 387 @discussion Pages are cached as they are added to a WebBackForwardList, and 388 removed from the cache as they are removed from a WebBackForwardList. Because 389 the page cache is global, caching a page in one WebBackForwardList may cause 390 a page in another WebBackForwardList to be evicted from the cache. 391 */ 392 - (void)setUsesPageCache:(BOOL)usesPageCache; 393 394 /*! 395 @method usesPageCache 396 @abstract Returns whether the receiver should use the shared page cache. 397 @result Whether the receiver should use the shared page cache. 398 @discussion Pages are cached as they are added to a WebBackForwardList, and 399 removed from the cache as they are removed from a WebBackForwardList. Because 400 the page cache is global, caching a page in one WebBackForwardList may cause 401 a page in another WebBackForwardList to be evicted from the cache. 402 */ 403 - (BOOL)usesPageCache; 404 405 /*! 406 @method setCacheModel: 407 408 @abstract Specifies a usage model for a WebView, which WebKit will use to 409 determine its caching behavior. 410 411 @param cacheModel The WebView's usage model for WebKit. If necessary, WebKit 412 will prune its caches to match cacheModel. 413 414 @discussion Research indicates that users tend to browse within clusters of 415 documents that hold resources in common, and to revisit previously visited 416 documents. WebKit and the frameworks below it include built-in caches that take 417 advantage of these patterns, substantially improving document load speed in 418 browsing situations. The WebKit cache model controls the behaviors of all of 419 these caches, including NSURLCache and the various WebCore caches. 420 421 Applications with a browsing interface can improve document load speed 422 substantially by specifying WebCacheModelDocumentBrowser. Applications without 423 a browsing interface can reduce memory usage substantially by specifying 424 WebCacheModelDocumentViewer. 425 426 If setCacheModel: is not called, WebKit will select a cache model automatically. 427 */ 428 - (void)setCacheModel:(WebCacheModel)cacheModel; 429 430 /*! 431 @method cacheModel: 432 433 @abstract Returns the usage model according to which WebKit determines its 434 caching behavior. 435 436 @result The usage model. 437 */ 438 - (WebCacheModel)cacheModel; 439 440 @end 441 442 #undef WebNSUInteger 443