1/*
2 * Copyright (C) 2006, 2007, 2008, 2009 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. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#ifndef WebPreferences_H
27#define WebPreferences_H
28
29#include "WebKit.h"
30#include <CoreFoundation/CoreFoundation.h>
31#include <WebCore/BString.h>
32#include <wtf/RetainPtr.h>
33
34class WebPreferences : public IWebPreferences, public IWebPreferencesPrivate {
35public:
36    static WebPreferences* createInstance();
37protected:
38    WebPreferences();
39    ~WebPreferences();
40
41public:
42    // IUnknown
43    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
44    virtual ULONG STDMETHODCALLTYPE AddRef(void);
45    virtual ULONG STDMETHODCALLTYPE Release(void);
46
47    // IWebPreferences
48    virtual HRESULT STDMETHODCALLTYPE standardPreferences(
49        /* [retval][out] */ IWebPreferences** standardPreferences);
50
51    virtual HRESULT STDMETHODCALLTYPE initWithIdentifier(
52        /* [in] */ BSTR anIdentifier,
53        /* [retval][out] */ IWebPreferences** preferences);
54
55    virtual HRESULT STDMETHODCALLTYPE identifier(
56        /* [retval][out] */ BSTR* ident);
57
58    virtual HRESULT STDMETHODCALLTYPE standardFontFamily(
59        /* [retval][out] */ BSTR* family);
60
61    virtual HRESULT STDMETHODCALLTYPE setStandardFontFamily(
62        /* [in] */ BSTR family);
63
64    virtual HRESULT STDMETHODCALLTYPE fixedFontFamily(
65        /* [retval][out] */ BSTR* family);
66
67    virtual HRESULT STDMETHODCALLTYPE setFixedFontFamily(
68        /* [in] */ BSTR family);
69
70    virtual HRESULT STDMETHODCALLTYPE serifFontFamily(
71        /* [retval][out] */ BSTR* fontFamily);
72
73    virtual HRESULT STDMETHODCALLTYPE setSerifFontFamily(
74        /* [in] */ BSTR family);
75
76    virtual HRESULT STDMETHODCALLTYPE sansSerifFontFamily(
77        /* [retval][out] */ BSTR* family);
78
79    virtual HRESULT STDMETHODCALLTYPE setSansSerifFontFamily(
80        /* [in] */ BSTR family);
81
82    virtual HRESULT STDMETHODCALLTYPE cursiveFontFamily(
83        /* [retval][out] */ BSTR* family);
84
85    virtual HRESULT STDMETHODCALLTYPE setCursiveFontFamily(
86        /* [in] */ BSTR family);
87
88    virtual HRESULT STDMETHODCALLTYPE fantasyFontFamily(
89        /* [retval][out] */ BSTR* family);
90
91    virtual HRESULT STDMETHODCALLTYPE setFantasyFontFamily(
92        /* [in] */ BSTR family);
93
94    virtual HRESULT STDMETHODCALLTYPE pictographFontFamily(
95        /* [retval][out] */ BSTR* family);
96
97    virtual HRESULT STDMETHODCALLTYPE setPictographFontFamily(
98        /* [in] */ BSTR family);
99
100    virtual HRESULT STDMETHODCALLTYPE defaultFontSize(
101        /* [retval][out] */ int* fontSize);
102
103    virtual HRESULT STDMETHODCALLTYPE setDefaultFontSize(
104        /* [in] */ int fontSize);
105
106    virtual HRESULT STDMETHODCALLTYPE defaultFixedFontSize(
107        /* [retval][out] */ int* fontSize);
108
109    virtual HRESULT STDMETHODCALLTYPE setDefaultFixedFontSize(
110        /* [in] */ int fontSize);
111
112    virtual HRESULT STDMETHODCALLTYPE minimumFontSize(
113        /* [retval][out] */ int* fontSize);
114
115    virtual HRESULT STDMETHODCALLTYPE setMinimumFontSize(
116        /* [in] */ int fontSize);
117
118    virtual HRESULT STDMETHODCALLTYPE minimumLogicalFontSize(
119        /* [retval][out] */ int* fontSize);
120
121    virtual HRESULT STDMETHODCALLTYPE setMinimumLogicalFontSize(
122        /* [in] */ int fontSize);
123
124    virtual HRESULT STDMETHODCALLTYPE defaultTextEncodingName(
125        /* [retval][out] */ BSTR* name);
126
127    virtual HRESULT STDMETHODCALLTYPE setDefaultTextEncodingName(
128        /* [in] */ BSTR name);
129
130    virtual HRESULT STDMETHODCALLTYPE userStyleSheetEnabled(
131        /* [retval][out] */ BOOL* enabled);
132
133    virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetEnabled(
134        /* [in] */ BOOL enabled);
135
136    virtual HRESULT STDMETHODCALLTYPE userStyleSheetLocation(
137        /* [retval][out] */ BSTR* location);
138
139    virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetLocation(
140        /* [in] */ BSTR location);
141
142    virtual HRESULT STDMETHODCALLTYPE isJavaEnabled(
143        /* [retval][out] */ BOOL* enabled);
144
145    virtual HRESULT STDMETHODCALLTYPE setJavaEnabled(
146        /* [in] */ BOOL enabled);
147
148    virtual HRESULT STDMETHODCALLTYPE isJavaScriptEnabled(
149        /* [retval][out] */ BOOL* enabled);
150
151    virtual HRESULT STDMETHODCALLTYPE setJavaScriptEnabled(
152        /* [in] */ BOOL enabled);
153
154    virtual HRESULT STDMETHODCALLTYPE javaScriptCanOpenWindowsAutomatically(
155        /* [retval][out] */ BOOL* enabled);
156
157    virtual HRESULT STDMETHODCALLTYPE setJavaScriptCanOpenWindowsAutomatically(
158        /* [in] */ BOOL enabled);
159
160    virtual HRESULT STDMETHODCALLTYPE arePlugInsEnabled(
161        /* [retval][out] */ BOOL* enabled);
162
163    virtual HRESULT STDMETHODCALLTYPE setPlugInsEnabled(
164        /* [in] */ BOOL enabled);
165
166    virtual HRESULT STDMETHODCALLTYPE isCSSRegionsEnabled(
167        /* [retval][out] */ BOOL* enabled);
168
169    virtual HRESULT STDMETHODCALLTYPE setCSSRegionsEnabled(
170        /* [in] */ BOOL);
171
172    virtual HRESULT STDMETHODCALLTYPE unused7();
173    virtual HRESULT STDMETHODCALLTYPE unused8();
174
175    virtual HRESULT STDMETHODCALLTYPE allowsAnimatedImages(
176        /* [retval][out] */ BOOL* enabled);
177
178    virtual HRESULT STDMETHODCALLTYPE setAllowsAnimatedImages(
179        /* [in] */ BOOL enabled);
180
181    virtual HRESULT STDMETHODCALLTYPE allowAnimatedImageLooping(
182        /* [retval][out] */ BOOL* enabled);
183
184    virtual HRESULT STDMETHODCALLTYPE setAllowAnimatedImageLooping(
185        /* [in] */ BOOL enabled);
186
187    virtual HRESULT STDMETHODCALLTYPE setLoadsImagesAutomatically(
188        /* [in] */ BOOL enabled);
189
190    virtual HRESULT STDMETHODCALLTYPE loadsImagesAutomatically(
191        /* [retval][out] */ BOOL* enabled);
192
193    virtual HRESULT STDMETHODCALLTYPE setAutosaves(
194        /* [in] */ BOOL enabled);
195
196    virtual HRESULT STDMETHODCALLTYPE autosaves(
197        /* [retval][out] */ BOOL* enabled);
198
199    virtual HRESULT STDMETHODCALLTYPE setShouldPrintBackgrounds(
200        /* [in] */ BOOL enabled);
201
202    virtual HRESULT STDMETHODCALLTYPE shouldPrintBackgrounds(
203        /* [retval][out] */ BOOL* enabled);
204
205    virtual HRESULT STDMETHODCALLTYPE setPrivateBrowsingEnabled(
206        /* [in] */ BOOL enabled);
207
208    virtual HRESULT STDMETHODCALLTYPE privateBrowsingEnabled(
209        /* [retval][out] */ BOOL* enabled);
210
211    virtual HRESULT STDMETHODCALLTYPE setTabsToLinks(
212        /* [in] */ BOOL enabled);
213
214    virtual HRESULT STDMETHODCALLTYPE tabsToLinks(
215        /* [retval][out] */ BOOL* enabled);
216
217    virtual HRESULT STDMETHODCALLTYPE textAreasAreResizable(
218        /* [retval][out] */ BOOL *enabled);
219
220    virtual HRESULT STDMETHODCALLTYPE setTextAreasAreResizable(
221        /* [in] */ BOOL enabled);
222
223    virtual HRESULT STDMETHODCALLTYPE usesPageCache(
224        /* [retval][out] */ BOOL *usesPageCache);
225
226    virtual HRESULT STDMETHODCALLTYPE setUsesPageCache(
227        /* [in] */ BOOL usesPageCache);
228
229    virtual HRESULT STDMETHODCALLTYPE unused1();
230    virtual HRESULT STDMETHODCALLTYPE unused2();
231
232    virtual HRESULT STDMETHODCALLTYPE iconDatabaseLocation(
233        /* [retval][out] */ BSTR* location);
234
235    virtual HRESULT STDMETHODCALLTYPE setIconDatabaseLocation(
236        /* [in] */ BSTR location);
237
238    virtual HRESULT STDMETHODCALLTYPE iconDatabaseEnabled(
239        /* [retval][out] */ BOOL* enabled);
240
241    virtual HRESULT STDMETHODCALLTYPE setIconDatabaseEnabled(
242        /* [in] */ BOOL enabled);
243
244    virtual HRESULT STDMETHODCALLTYPE fontSmoothing(
245        /* [retval][out] */ FontSmoothingType* smoothingType);
246
247    virtual HRESULT STDMETHODCALLTYPE setFontSmoothing(
248        /* [in] */ FontSmoothingType smoothingType);
249
250    virtual HRESULT STDMETHODCALLTYPE editableLinkBehavior(
251        /* [retval][out] */ WebKitEditableLinkBehavior* behavior);
252
253    virtual HRESULT STDMETHODCALLTYPE setEditableLinkBehavior(
254        /* [in] */ WebKitEditableLinkBehavior behavior);
255
256    virtual HRESULT STDMETHODCALLTYPE unused5();
257    virtual HRESULT STDMETHODCALLTYPE unused6();
258
259    virtual HRESULT STDMETHODCALLTYPE cookieStorageAcceptPolicy(
260        /* [retval][out] */ WebKitCookieStorageAcceptPolicy *acceptPolicy);
261
262    virtual HRESULT STDMETHODCALLTYPE setCookieStorageAcceptPolicy(
263        /* [in] */ WebKitCookieStorageAcceptPolicy acceptPolicy);
264
265    virtual HRESULT STDMETHODCALLTYPE continuousSpellCheckingEnabled(
266        /* [retval][out] */ BOOL *enabled);
267
268    virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled(
269        /* [in] */ BOOL enabled);
270
271    virtual HRESULT STDMETHODCALLTYPE grammarCheckingEnabled(
272        /* [retval][out] */ BOOL *enabled);
273
274    virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled(
275        /* [in] */ BOOL enabled);
276
277    virtual HRESULT STDMETHODCALLTYPE allowContinuousSpellChecking(
278        /* [retval][out] */ BOOL *enabled);
279
280    virtual HRESULT STDMETHODCALLTYPE setAllowContinuousSpellChecking(
281        /* [in] */ BOOL enabled);
282
283    virtual HRESULT STDMETHODCALLTYPE isDOMPasteAllowed(
284        /* [retval][out] */ BOOL *enabled);
285
286    virtual HRESULT STDMETHODCALLTYPE setDOMPasteAllowed(
287        /* [in] */ BOOL enabled);
288
289    virtual HRESULT STDMETHODCALLTYPE cacheModel(
290     /* [retval][out] */ WebCacheModel* cacheModel);
291
292    virtual HRESULT STDMETHODCALLTYPE setCacheModel(
293     /* [in] */ WebCacheModel cacheModel);
294
295    virtual HRESULT STDMETHODCALLTYPE unused3();
296    virtual HRESULT STDMETHODCALLTYPE unused4();
297
298    virtual HRESULT STDMETHODCALLTYPE setAVFoundationEnabled(
299    /* [in] */ BOOL);
300
301    virtual HRESULT STDMETHODCALLTYPE avFoundationEnabled(
302    /* [retval][out] */ BOOL*);
303
304    virtual HRESULT STDMETHODCALLTYPE setShouldDisplaySubtitles(
305    /* [in] */ BOOL);
306
307    virtual HRESULT STDMETHODCALLTYPE shouldDisplaySubtitles(
308    /* [retval][out] */ BOOL*);
309
310    virtual HRESULT STDMETHODCALLTYPE setShouldDisplayCaptions(
311    /* [in] */ BOOL);
312
313    virtual HRESULT STDMETHODCALLTYPE shouldDisplayCaptions(
314    /* [retval][out] */ BOOL*);
315
316    virtual HRESULT STDMETHODCALLTYPE setShouldDisplayTextDescriptions(
317    /* [in] */ BOOL);
318
319    virtual HRESULT STDMETHODCALLTYPE shouldDisplayTextDescriptions(
320    /* [retval][out] */ BOOL*);
321
322    // IWebPreferencesPrivate
323    virtual HRESULT STDMETHODCALLTYPE setDeveloperExtrasEnabled(
324        /* [in] */ BOOL);
325
326    virtual HRESULT STDMETHODCALLTYPE developerExtrasEnabled(
327        /* [retval][out] */ BOOL*);
328
329     virtual HRESULT STDMETHODCALLTYPE setAutomaticallyDetectsCacheModel(
330         /* [in] */ BOOL automaticallyDetectsCacheModel);
331
332     virtual HRESULT STDMETHODCALLTYPE automaticallyDetectsCacheModel(
333         /* [out, retval] */ BOOL* automaticallyDetectsCacheModel);
334
335    virtual HRESULT STDMETHODCALLTYPE setAuthorAndUserStylesEnabled(BOOL);
336    virtual HRESULT STDMETHODCALLTYPE authorAndUserStylesEnabled(BOOL*);
337
338    virtual HRESULT STDMETHODCALLTYPE inApplicationChromeMode(
339        /* [retval][out] */ BOOL *enabled);
340
341    virtual HRESULT STDMETHODCALLTYPE setApplicationChromeMode(
342        /* [in] */ BOOL enabled);
343
344    virtual HRESULT STDMETHODCALLTYPE setOfflineWebApplicationCacheEnabled(
345        /* [in] */ BOOL enabled);
346
347    virtual HRESULT STDMETHODCALLTYPE offlineWebApplicationCacheEnabled(
348        /* [retval][out] */ BOOL *enabled);
349
350    virtual HRESULT STDMETHODCALLTYPE setDatabasesEnabled(
351        /* [in] */ BOOL enabled);
352
353    virtual HRESULT STDMETHODCALLTYPE databasesEnabled(
354        /* [retval][out] */ BOOL *enabled);
355
356    virtual HRESULT STDMETHODCALLTYPE setLocalStorageEnabled(
357        /* [in] */ BOOL enabled);
358
359    virtual HRESULT STDMETHODCALLTYPE localStorageEnabled(
360        /* [retval][out] */ BOOL *enabled);
361
362    virtual HRESULT STDMETHODCALLTYPE localStorageDatabasePath(
363        /* [out, retval] */ BSTR* location);
364
365    virtual HRESULT STDMETHODCALLTYPE setLocalStorageDatabasePath(
366        /* [in] */ BSTR location);
367
368    virtual HRESULT STDMETHODCALLTYPE experimentalNotificationsEnabled(
369        /* [retval][out] */ BOOL *enabled);
370
371    virtual HRESULT STDMETHODCALLTYPE setExperimentalNotificationsEnabled(
372        /* [in] */ BOOL enabled);
373
374    virtual HRESULT STDMETHODCALLTYPE setShouldPaintNativeControls(
375    /* [in] */ BOOL shouldPaint);
376
377    virtual HRESULT STDMETHODCALLTYPE shouldPaintNativeControls(
378    /* [retval][out] */ BOOL *shouldPaint);
379
380    virtual HRESULT STDMETHODCALLTYPE setZoomsTextOnly(
381    /* [retval][out] */ BOOL zoomsTextOnly);
382
383    virtual HRESULT STDMETHODCALLTYPE zoomsTextOnly(
384    /* [retval][out] */ BOOL *zoomsTextOnly);
385
386    virtual HRESULT STDMETHODCALLTYPE fontSmoothingContrast(
387    /* [retval][out] */ float* contrast);
388
389    virtual HRESULT STDMETHODCALLTYPE setFontSmoothingContrast(
390    /* [in] */ float contrast);
391
392    virtual HRESULT STDMETHODCALLTYPE isWebSecurityEnabled(
393    /* [retval][out] */ BOOL* enabled);
394
395    virtual HRESULT STDMETHODCALLTYPE setWebSecurityEnabled(
396    /* [in] */ BOOL enabled);
397
398    virtual HRESULT STDMETHODCALLTYPE allowUniversalAccessFromFileURLs(
399    /* [retval][out] */ BOOL* allowAccess);
400
401    virtual HRESULT STDMETHODCALLTYPE setAllowUniversalAccessFromFileURLs(
402    /* [in] */ BOOL allowAccess);
403
404    virtual HRESULT STDMETHODCALLTYPE allowFileAccessFromFileURLs(
405    /* [retval][out] */ BOOL* allowAccess);
406
407    virtual HRESULT STDMETHODCALLTYPE setAllowFileAccessFromFileURLs(
408    /* [in] */ BOOL allowAccess);
409
410    virtual HRESULT STDMETHODCALLTYPE javaScriptCanAccessClipboard(
411    /* [retval][out] */ BOOL* enabled);
412
413    virtual HRESULT STDMETHODCALLTYPE setJavaScriptCanAccessClipboard(
414    /* [in] */ BOOL enabled);
415
416    virtual HRESULT STDMETHODCALLTYPE isXSSAuditorEnabled(
417    /* [retval][out] */ BOOL* enabled);
418
419    virtual HRESULT STDMETHODCALLTYPE setXSSAuditorEnabled(
420    /* [in] */ BOOL enabled);
421
422    virtual HRESULT STDMETHODCALLTYPE setShouldUseHighResolutionTimers(
423    /* [in] */ BOOL useHighResolutionTimers);
424
425    virtual HRESULT STDMETHODCALLTYPE shouldUseHighResolutionTimers(
426    /* [retval][out] */ BOOL* useHighResolutionTimers);
427
428    virtual HRESULT STDMETHODCALLTYPE isFrameFlatteningEnabled(
429    /* [retval][out] */ BOOL* enabled);
430
431    virtual HRESULT STDMETHODCALLTYPE setFrameFlatteningEnabled(
432    /* [in] */ BOOL enabled);
433
434    virtual HRESULT STDMETHODCALLTYPE setPreferenceForTest(
435    /* [in] */ BSTR key,
436    /* [in] */ BSTR value);
437
438    virtual HRESULT STDMETHODCALLTYPE setAcceleratedCompositingEnabled(BOOL);
439    virtual HRESULT STDMETHODCALLTYPE acceleratedCompositingEnabled(BOOL*);
440
441    virtual HRESULT STDMETHODCALLTYPE setCustomDragCursorsEnabled(BOOL);
442    virtual HRESULT STDMETHODCALLTYPE customDragCursorsEnabled(BOOL*);
443
444    virtual HRESULT STDMETHODCALLTYPE setShowDebugBorders(BOOL);
445    virtual HRESULT STDMETHODCALLTYPE showDebugBorders(BOOL*);
446
447    virtual HRESULT STDMETHODCALLTYPE setShowRepaintCounter(BOOL);
448    virtual HRESULT STDMETHODCALLTYPE showRepaintCounter(BOOL*);
449
450    virtual HRESULT STDMETHODCALLTYPE setDNSPrefetchingEnabled(BOOL);
451    virtual HRESULT STDMETHODCALLTYPE isDNSPrefetchingEnabled(BOOL*);
452
453    virtual HRESULT STDMETHODCALLTYPE hyperlinkAuditingEnabled(BOOL*);
454    virtual HRESULT STDMETHODCALLTYPE setHyperlinkAuditingEnabled(BOOL);
455
456    virtual HRESULT STDMETHODCALLTYPE loadsSiteIconsIgnoringImageLoadingPreference(BOOL*);
457    virtual HRESULT STDMETHODCALLTYPE setLoadsSiteIconsIgnoringImageLoadingPreference(BOOL);
458
459    virtual HRESULT STDMETHODCALLTYPE setFullScreenEnabled(BOOL);
460    virtual HRESULT STDMETHODCALLTYPE isFullScreenEnabled(BOOL*);
461
462    virtual HRESULT STDMETHODCALLTYPE hixie76WebSocketProtocolEnabled(BOOL*);
463    virtual HRESULT STDMETHODCALLTYPE setHixie76WebSocketProtocolEnabled(BOOL);
464
465    virtual HRESULT STDMETHODCALLTYPE mediaPlaybackRequiresUserGesture(BOOL*);
466    virtual HRESULT STDMETHODCALLTYPE setMediaPlaybackRequiresUserGesture(BOOL);
467
468    virtual HRESULT STDMETHODCALLTYPE mediaPlaybackAllowsInline(BOOL*);
469    virtual HRESULT STDMETHODCALLTYPE setMediaPlaybackAllowsInline(BOOL);
470
471    virtual HRESULT STDMETHODCALLTYPE showsToolTipOverTruncatedText(BOOL*);
472    virtual HRESULT STDMETHODCALLTYPE setShowsToolTipOverTruncatedText(BOOL);
473
474    virtual HRESULT STDMETHODCALLTYPE shouldInvertColors(BOOL*);
475    virtual HRESULT STDMETHODCALLTYPE setShouldInvertColors(BOOL);
476
477    virtual HRESULT STDMETHODCALLTYPE requestAnimationFrameEnabled(BOOL*);
478    virtual HRESULT STDMETHODCALLTYPE setRequestAnimationFrameEnabled(BOOL);
479
480    virtual HRESULT STDMETHODCALLTYPE mockScrollbarsEnabled(BOOL*);
481    virtual HRESULT STDMETHODCALLTYPE setMockScrollbarsEnabled(BOOL);
482
483    virtual HRESULT STDMETHODCALLTYPE screenFontSubstitutionEnabled(BOOL*);
484    virtual HRESULT STDMETHODCALLTYPE setScreenFontSubstitutionEnabled(BOOL);
485
486    virtual HRESULT STDMETHODCALLTYPE isInheritURIQueryComponentEnabled(BOOL*);
487    virtual HRESULT STDMETHODCALLTYPE setEnableInheritURIQueryComponent(BOOL);
488
489    // WebPreferences
490
491    // This method accesses a different preference key than developerExtrasEnabled.
492    // See <rdar://5343767> for the justification.
493    bool developerExtrasDisabledByOverride();
494
495    static BSTR webPreferencesChangedNotification();
496    static BSTR webPreferencesRemovedNotification();
497
498    static void setInstance(WebPreferences* instance, BSTR identifier);
499    static void removeReferenceForIdentifier(BSTR identifier);
500    static WebPreferences* sharedStandardPreferences();
501
502    // From WebHistory.h
503    HRESULT historyItemLimit(int* limit);
504    HRESULT setHistoryItemLimit(int limit);
505    HRESULT historyAgeInDaysLimit(int* limit);
506    HRESULT setHistoryAgeInDaysLimit(int limit);
507
508     void willAddToWebView();
509     void didRemoveFromWebView();
510
511    HRESULT postPreferencesChangesNotification();
512
513protected:
514    void setValueForKey(CFStringRef key, CFPropertyListRef value);
515    RetainPtr<CFPropertyListRef> valueForKey(CFStringRef key);
516    void setValueForKey(const char* key, CFPropertyListRef value);
517    RetainPtr<CFPropertyListRef> valueForKey(const char* key);
518    BSTR stringValueForKey(const char* key);
519    int integerValueForKey(const char* key);
520    BOOL boolValueForKey(const char* key);
521    float floatValueForKey(const char* key);
522    LONGLONG longlongValueForKey(const char* key);
523    void setStringValue(const char* key, BSTR value);
524    void setIntegerValue(const char* key, int value);
525    void setBoolValue(const char* key, BOOL value);
526    void setFloatValue(const char* key, float value);
527    void setLongLongValue(const char* key, LONGLONG value);
528    static WebPreferences* getInstanceForIdentifier(BSTR identifier);
529    static void initializeDefaultSettings();
530    void save();
531    void load();
532    void migrateWebKitPreferencesToCFPreferences();
533    void copyWebKitPreferencesToCFPreferences(CFDictionaryRef);
534
535protected:
536    ULONG m_refCount;
537    RetainPtr<CFMutableDictionaryRef> m_privatePrefs;
538    WebCore::BString m_identifier;
539    bool m_autoSaves;
540    bool m_automaticallyDetectsCacheModel;
541    unsigned m_numWebViews;
542};
543
544#endif
545