2 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, 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 COMPUTER, 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.
26 #ifndef WebPreferences_H
27 #define WebPreferences_H
30 #include <CoreFoundation/CoreFoundation.h>
31 #include <WebCore/BString.h>
32 #include <wtf/RetainPtr.h>
34 class WebPreferences : public IWebPreferences, public IWebPreferencesPrivate {
36 static WebPreferences* createInstance();
43 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
44 virtual ULONG STDMETHODCALLTYPE AddRef(void);
45 virtual ULONG STDMETHODCALLTYPE Release(void);
48 virtual HRESULT STDMETHODCALLTYPE standardPreferences(
49 /* [retval][out] */ IWebPreferences** standardPreferences);
51 virtual HRESULT STDMETHODCALLTYPE initWithIdentifier(
52 /* [in] */ BSTR anIdentifier,
53 /* [retval][out] */ IWebPreferences** preferences);
55 virtual HRESULT STDMETHODCALLTYPE identifier(
56 /* [retval][out] */ BSTR* ident);
58 virtual HRESULT STDMETHODCALLTYPE standardFontFamily(
59 /* [retval][out] */ BSTR* family);
61 virtual HRESULT STDMETHODCALLTYPE setStandardFontFamily(
62 /* [in] */ BSTR family);
64 virtual HRESULT STDMETHODCALLTYPE fixedFontFamily(
65 /* [retval][out] */ BSTR* family);
67 virtual HRESULT STDMETHODCALLTYPE setFixedFontFamily(
68 /* [in] */ BSTR family);
70 virtual HRESULT STDMETHODCALLTYPE serifFontFamily(
71 /* [retval][out] */ BSTR* fontFamily);
73 virtual HRESULT STDMETHODCALLTYPE setSerifFontFamily(
74 /* [in] */ BSTR family);
76 virtual HRESULT STDMETHODCALLTYPE sansSerifFontFamily(
77 /* [retval][out] */ BSTR* family);
79 virtual HRESULT STDMETHODCALLTYPE setSansSerifFontFamily(
80 /* [in] */ BSTR family);
82 virtual HRESULT STDMETHODCALLTYPE cursiveFontFamily(
83 /* [retval][out] */ BSTR* family);
85 virtual HRESULT STDMETHODCALLTYPE setCursiveFontFamily(
86 /* [in] */ BSTR family);
88 virtual HRESULT STDMETHODCALLTYPE fantasyFontFamily(
89 /* [retval][out] */ BSTR* family);
91 virtual HRESULT STDMETHODCALLTYPE setFantasyFontFamily(
92 /* [in] */ BSTR family);
94 virtual HRESULT STDMETHODCALLTYPE defaultFontSize(
95 /* [retval][out] */ int* fontSize);
97 virtual HRESULT STDMETHODCALLTYPE setDefaultFontSize(
98 /* [in] */ int fontSize);
100 virtual HRESULT STDMETHODCALLTYPE defaultFixedFontSize(
101 /* [retval][out] */ int* fontSize);
103 virtual HRESULT STDMETHODCALLTYPE setDefaultFixedFontSize(
104 /* [in] */ int fontSize);
106 virtual HRESULT STDMETHODCALLTYPE minimumFontSize(
107 /* [retval][out] */ int* fontSize);
109 virtual HRESULT STDMETHODCALLTYPE setMinimumFontSize(
110 /* [in] */ int fontSize);
112 virtual HRESULT STDMETHODCALLTYPE minimumLogicalFontSize(
113 /* [retval][out] */ int* fontSize);
115 virtual HRESULT STDMETHODCALLTYPE setMinimumLogicalFontSize(
116 /* [in] */ int fontSize);
118 virtual HRESULT STDMETHODCALLTYPE defaultTextEncodingName(
119 /* [retval][out] */ BSTR* name);
121 virtual HRESULT STDMETHODCALLTYPE setDefaultTextEncodingName(
122 /* [in] */ BSTR name);
124 virtual HRESULT STDMETHODCALLTYPE userStyleSheetEnabled(
125 /* [retval][out] */ BOOL* enabled);
127 virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetEnabled(
128 /* [in] */ BOOL enabled);
130 virtual HRESULT STDMETHODCALLTYPE userStyleSheetLocation(
131 /* [retval][out] */ BSTR* location);
133 virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetLocation(
134 /* [in] */ BSTR location);
136 virtual HRESULT STDMETHODCALLTYPE isJavaEnabled(
137 /* [retval][out] */ BOOL* enabled);
139 virtual HRESULT STDMETHODCALLTYPE setJavaEnabled(
140 /* [in] */ BOOL enabled);
142 virtual HRESULT STDMETHODCALLTYPE isJavaScriptEnabled(
143 /* [retval][out] */ BOOL* enabled);
145 virtual HRESULT STDMETHODCALLTYPE setJavaScriptEnabled(
146 /* [in] */ BOOL enabled);
148 virtual HRESULT STDMETHODCALLTYPE javaScriptCanOpenWindowsAutomatically(
149 /* [retval][out] */ BOOL* enabled);
151 virtual HRESULT STDMETHODCALLTYPE setJavaScriptCanOpenWindowsAutomatically(
152 /* [in] */ BOOL enabled);
154 virtual HRESULT STDMETHODCALLTYPE arePlugInsEnabled(
155 /* [retval][out] */ BOOL* enabled);
157 virtual HRESULT STDMETHODCALLTYPE setPlugInsEnabled(
158 /* [in] */ BOOL enabled);
160 virtual HRESULT STDMETHODCALLTYPE allowsAnimatedImages(
161 /* [retval][out] */ BOOL* enabled);
163 virtual HRESULT STDMETHODCALLTYPE setAllowsAnimatedImages(
164 /* [in] */ BOOL enabled);
166 virtual HRESULT STDMETHODCALLTYPE allowAnimatedImageLooping(
167 /* [retval][out] */ BOOL* enabled);
169 virtual HRESULT STDMETHODCALLTYPE setAllowAnimatedImageLooping(
170 /* [in] */ BOOL enabled);
172 virtual HRESULT STDMETHODCALLTYPE setLoadsImagesAutomatically(
173 /* [in] */ BOOL enabled);
175 virtual HRESULT STDMETHODCALLTYPE loadsImagesAutomatically(
176 /* [retval][out] */ BOOL* enabled);
178 virtual HRESULT STDMETHODCALLTYPE setAutosaves(
179 /* [in] */ BOOL enabled);
181 virtual HRESULT STDMETHODCALLTYPE autosaves(
182 /* [retval][out] */ BOOL* enabled);
184 virtual HRESULT STDMETHODCALLTYPE setShouldPrintBackgrounds(
185 /* [in] */ BOOL enabled);
187 virtual HRESULT STDMETHODCALLTYPE shouldPrintBackgrounds(
188 /* [retval][out] */ BOOL* enabled);
190 virtual HRESULT STDMETHODCALLTYPE setPrivateBrowsingEnabled(
191 /* [in] */ BOOL enabled);
193 virtual HRESULT STDMETHODCALLTYPE privateBrowsingEnabled(
194 /* [retval][out] */ BOOL* enabled);
196 virtual HRESULT STDMETHODCALLTYPE setTabsToLinks(
197 /* [in] */ BOOL enabled);
199 virtual HRESULT STDMETHODCALLTYPE tabsToLinks(
200 /* [retval][out] */ BOOL* enabled);
202 virtual HRESULT STDMETHODCALLTYPE textAreasAreResizable(
203 /* [retval][out] */ BOOL *enabled);
205 virtual HRESULT STDMETHODCALLTYPE setTextAreasAreResizable(
206 /* [in] */ BOOL enabled);
208 virtual HRESULT STDMETHODCALLTYPE usesPageCache(
209 /* [retval][out] */ BOOL *usesPageCache);
211 virtual HRESULT STDMETHODCALLTYPE setUsesPageCache(
212 /* [in] */ BOOL usesPageCache);
214 virtual HRESULT STDMETHODCALLTYPE unused1();
215 virtual HRESULT STDMETHODCALLTYPE unused2();
217 virtual HRESULT STDMETHODCALLTYPE iconDatabaseLocation(
218 /* [retval][out] */ BSTR* location);
220 virtual HRESULT STDMETHODCALLTYPE setIconDatabaseLocation(
221 /* [in] */ BSTR location);
223 virtual HRESULT STDMETHODCALLTYPE iconDatabaseEnabled(
224 /* [retval][out] */ BOOL* enabled);
226 virtual HRESULT STDMETHODCALLTYPE setIconDatabaseEnabled(
227 /* [in] */ BOOL enabled);
229 virtual HRESULT STDMETHODCALLTYPE fontSmoothing(
230 /* [retval][out] */ FontSmoothingType* smoothingType);
232 virtual HRESULT STDMETHODCALLTYPE setFontSmoothing(
233 /* [in] */ FontSmoothingType smoothingType);
235 virtual HRESULT STDMETHODCALLTYPE editableLinkBehavior(
236 /* [retval][out] */ WebKitEditableLinkBehavior* behavior);
238 virtual HRESULT STDMETHODCALLTYPE setEditableLinkBehavior(
239 /* [in] */ WebKitEditableLinkBehavior behavior);
241 virtual HRESULT STDMETHODCALLTYPE cookieStorageAcceptPolicy(
242 /* [retval][out] */ WebKitCookieStorageAcceptPolicy *acceptPolicy);
244 virtual HRESULT STDMETHODCALLTYPE setCookieStorageAcceptPolicy(
245 /* [in] */ WebKitCookieStorageAcceptPolicy acceptPolicy);
247 virtual HRESULT STDMETHODCALLTYPE continuousSpellCheckingEnabled(
248 /* [retval][out] */ BOOL *enabled);
250 virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled(
251 /* [in] */ BOOL enabled);
253 virtual HRESULT STDMETHODCALLTYPE grammarCheckingEnabled(
254 /* [retval][out] */ BOOL *enabled);
256 virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled(
257 /* [in] */ BOOL enabled);
259 virtual HRESULT STDMETHODCALLTYPE allowContinuousSpellChecking(
260 /* [retval][out] */ BOOL *enabled);
262 virtual HRESULT STDMETHODCALLTYPE setAllowContinuousSpellChecking(
263 /* [in] */ BOOL enabled);
265 virtual HRESULT STDMETHODCALLTYPE isDOMPasteAllowed(
266 /* [retval][out] */ BOOL *enabled);
268 virtual HRESULT STDMETHODCALLTYPE setDOMPasteAllowed(
269 /* [in] */ BOOL enabled);
271 virtual HRESULT STDMETHODCALLTYPE cacheModel(
272 /* [retval][out] */ WebCacheModel* cacheModel);
274 virtual HRESULT STDMETHODCALLTYPE setCacheModel(
275 /* [in] */ WebCacheModel cacheModel);
277 // IWebPreferencesPrivate
278 virtual HRESULT STDMETHODCALLTYPE setDeveloperExtrasEnabled(
281 virtual HRESULT STDMETHODCALLTYPE developerExtrasEnabled(
282 /* [retval][out] */ BOOL*);
284 virtual HRESULT STDMETHODCALLTYPE setAutomaticallyDetectsCacheModel(
285 /* [in] */ BOOL automaticallyDetectsCacheModel);
287 virtual HRESULT STDMETHODCALLTYPE automaticallyDetectsCacheModel(
288 /* [out, retval] */ BOOL* automaticallyDetectsCacheModel);
290 virtual HRESULT STDMETHODCALLTYPE setAuthorAndUserStylesEnabled(BOOL);
291 virtual HRESULT STDMETHODCALLTYPE authorAndUserStylesEnabled(BOOL*);
295 // This method accesses a different preference key than developerExtrasEnabled.
296 // See <rdar://5343767> for the justification.
297 bool developerExtrasDisabledByOverride();
299 static BSTR webPreferencesChangedNotification();
300 static BSTR webPreferencesRemovedNotification();
302 static void setInstance(WebPreferences* instance, BSTR identifier);
303 static void removeReferenceForIdentifier(BSTR identifier);
304 static WebPreferences* sharedStandardPreferences();
307 HRESULT historyItemLimit(int* limit);
308 HRESULT setHistoryItemLimit(int limit);
309 HRESULT historyAgeInDaysLimit(int* limit);
310 HRESULT setHistoryAgeInDaysLimit(int limit);
312 void willAddToWebView();
313 void didRemoveFromWebView();
315 HRESULT postPreferencesChangesNotification();
318 void setValueForKey(CFStringRef key, CFPropertyListRef value);
319 RetainPtr<CFPropertyListRef> valueForKey(CFStringRef key);
320 BSTR stringValueForKey(CFStringRef key);
321 int integerValueForKey(CFStringRef key);
322 BOOL boolValueForKey(CFStringRef key);
323 float floatValueForKey(CFStringRef key);
324 LONGLONG longlongValueForKey(CFStringRef key);
325 void setStringValue(CFStringRef key, LPCTSTR value);
326 void setIntegerValue(CFStringRef key, int value);
327 void setBoolValue(CFStringRef key, BOOL value);
328 void setLongLongValue(CFStringRef key, LONGLONG value);
329 static WebPreferences* getInstanceForIdentifier(BSTR identifier);
330 static void initializeDefaultSettings();
333 void migrateWebKitPreferencesToCFPreferences();
334 void copyWebKitPreferencesToCFPreferences(CFDictionaryRef);
338 RetainPtr<CFMutableDictionaryRef> m_privatePrefs;
339 WebCore::BString m_identifier;
341 bool m_automaticallyDetectsCacheModel;
342 unsigned m_numWebViews;