2 * Copyright (C) 2006-2009, 2015 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 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.
29 #include <CoreFoundation/CoreFoundation.h>
30 #include <WebCore/BString.h>
31 #include <wtf/RetainPtr.h>
33 class WebPreferences : public IWebPreferences, public IWebPreferencesPrivate7 {
35 static WebPreferences* createInstance();
42 virtual HRESULT STDMETHODCALLTYPE QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject);
43 virtual ULONG STDMETHODCALLTYPE AddRef();
44 virtual ULONG STDMETHODCALLTYPE Release();
47 virtual HRESULT STDMETHODCALLTYPE standardPreferences(_COM_Outptr_opt_ IWebPreferences**);
48 virtual HRESULT STDMETHODCALLTYPE initWithIdentifier(_In_ BSTR, _COM_Outptr_opt_ IWebPreferences**);
49 virtual HRESULT STDMETHODCALLTYPE identifier(__deref_opt_out BSTR*);
50 virtual HRESULT STDMETHODCALLTYPE standardFontFamily(__deref_opt_out BSTR*);
51 virtual HRESULT STDMETHODCALLTYPE setStandardFontFamily(_In_ BSTR);
52 virtual HRESULT STDMETHODCALLTYPE fixedFontFamily(__deref_opt_out BSTR*);
53 virtual HRESULT STDMETHODCALLTYPE setFixedFontFamily(_In_ BSTR);
54 virtual HRESULT STDMETHODCALLTYPE serifFontFamily(__deref_opt_out BSTR*);
55 virtual HRESULT STDMETHODCALLTYPE setSerifFontFamily(_In_ BSTR);
56 virtual HRESULT STDMETHODCALLTYPE sansSerifFontFamily(__deref_opt_out BSTR*);
57 virtual HRESULT STDMETHODCALLTYPE setSansSerifFontFamily(_In_ BSTR);
58 virtual HRESULT STDMETHODCALLTYPE cursiveFontFamily(__deref_opt_out BSTR*);
59 virtual HRESULT STDMETHODCALLTYPE setCursiveFontFamily(_In_ BSTR);
60 virtual HRESULT STDMETHODCALLTYPE fantasyFontFamily(__deref_opt_out BSTR*);
61 virtual HRESULT STDMETHODCALLTYPE setFantasyFontFamily(_In_ BSTR);
62 virtual HRESULT STDMETHODCALLTYPE pictographFontFamily(__deref_opt_out BSTR*);
63 virtual HRESULT STDMETHODCALLTYPE setPictographFontFamily(_In_ BSTR);
64 virtual HRESULT STDMETHODCALLTYPE defaultFontSize(_Out_ int*);
65 virtual HRESULT STDMETHODCALLTYPE setDefaultFontSize(int);
66 virtual HRESULT STDMETHODCALLTYPE defaultFixedFontSize(_Out_ int*);
67 virtual HRESULT STDMETHODCALLTYPE setDefaultFixedFontSize(int);
68 virtual HRESULT STDMETHODCALLTYPE minimumFontSize(_Out_ int*);
69 virtual HRESULT STDMETHODCALLTYPE setMinimumFontSize(int);
70 virtual HRESULT STDMETHODCALLTYPE minimumLogicalFontSize(_Out_ int*);
71 virtual HRESULT STDMETHODCALLTYPE setMinimumLogicalFontSize(int);
72 virtual HRESULT STDMETHODCALLTYPE defaultTextEncodingName(__deref_opt_out BSTR*);
73 virtual HRESULT STDMETHODCALLTYPE setDefaultTextEncodingName(_In_ BSTR);
74 virtual HRESULT STDMETHODCALLTYPE userStyleSheetEnabled(_Out_ BOOL*);
75 virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetEnabled(BOOL);
76 virtual HRESULT STDMETHODCALLTYPE userStyleSheetLocation(__deref_opt_out BSTR*);
77 virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetLocation(_In_ BSTR);
78 virtual HRESULT STDMETHODCALLTYPE isJavaEnabled(_Out_ BOOL*);
79 virtual HRESULT STDMETHODCALLTYPE setJavaEnabled(BOOL);
80 virtual HRESULT STDMETHODCALLTYPE isJavaScriptEnabled(_Out_ BOOL*);
81 virtual HRESULT STDMETHODCALLTYPE setJavaScriptEnabled(BOOL);
82 virtual HRESULT STDMETHODCALLTYPE javaScriptCanOpenWindowsAutomatically(_Out_ BOOL*);
83 virtual HRESULT STDMETHODCALLTYPE setJavaScriptCanOpenWindowsAutomatically(BOOL);
84 virtual HRESULT STDMETHODCALLTYPE arePlugInsEnabled(_Out_ BOOL*);
85 virtual HRESULT STDMETHODCALLTYPE setPlugInsEnabled(BOOL);
86 virtual HRESULT STDMETHODCALLTYPE isCSSRegionsEnabled(_Out_ BOOL*);
87 virtual HRESULT STDMETHODCALLTYPE setCSSRegionsEnabled(BOOL);
88 virtual HRESULT STDMETHODCALLTYPE unused7();
89 virtual HRESULT STDMETHODCALLTYPE unused8();
90 virtual HRESULT STDMETHODCALLTYPE allowsAnimatedImages(_Out_ BOOL*);
91 virtual HRESULT STDMETHODCALLTYPE setAllowsAnimatedImages(BOOL);
92 virtual HRESULT STDMETHODCALLTYPE allowAnimatedImageLooping(_Out_ BOOL*);
93 virtual HRESULT STDMETHODCALLTYPE setAllowAnimatedImageLooping(BOOL);
94 virtual HRESULT STDMETHODCALLTYPE setLoadsImagesAutomatically(BOOL);
95 virtual HRESULT STDMETHODCALLTYPE loadsImagesAutomatically(_Out_ BOOL*);
96 virtual HRESULT STDMETHODCALLTYPE setAutosaves(BOOL);
97 virtual HRESULT STDMETHODCALLTYPE autosaves(_Out_ BOOL*);
98 virtual HRESULT STDMETHODCALLTYPE setShouldPrintBackgrounds(BOOL);
99 virtual HRESULT STDMETHODCALLTYPE shouldPrintBackgrounds(_Out_ BOOL*);
100 virtual HRESULT STDMETHODCALLTYPE setPrivateBrowsingEnabled(BOOL);
101 virtual HRESULT STDMETHODCALLTYPE privateBrowsingEnabled(_Out_ BOOL*);
102 virtual HRESULT STDMETHODCALLTYPE setTabsToLinks(BOOL);
103 virtual HRESULT STDMETHODCALLTYPE tabsToLinks(_Out_ BOOL*);
104 virtual HRESULT STDMETHODCALLTYPE textAreasAreResizable(_Out_ BOOL*);
105 virtual HRESULT STDMETHODCALLTYPE setTextAreasAreResizable(BOOL);
106 virtual HRESULT STDMETHODCALLTYPE usesPageCache(_Out_ BOOL*);
107 virtual HRESULT STDMETHODCALLTYPE setUsesPageCache(BOOL);
108 virtual HRESULT STDMETHODCALLTYPE unused1();
109 virtual HRESULT STDMETHODCALLTYPE unused2();
110 virtual HRESULT STDMETHODCALLTYPE iconDatabaseLocation(__deref_opt_out BSTR*);
111 virtual HRESULT STDMETHODCALLTYPE setIconDatabaseLocation(_In_ BSTR);
112 virtual HRESULT STDMETHODCALLTYPE iconDatabaseEnabled(_Out_ BOOL*);
113 virtual HRESULT STDMETHODCALLTYPE setIconDatabaseEnabled(BOOL);
114 virtual HRESULT STDMETHODCALLTYPE fontSmoothing(_Out_ FontSmoothingType*);
115 virtual HRESULT STDMETHODCALLTYPE setFontSmoothing(FontSmoothingType);
116 virtual HRESULT STDMETHODCALLTYPE editableLinkBehavior(_Out_ WebKitEditableLinkBehavior*);
117 virtual HRESULT STDMETHODCALLTYPE setEditableLinkBehavior(WebKitEditableLinkBehavior);
118 virtual HRESULT STDMETHODCALLTYPE unused5();
119 virtual HRESULT STDMETHODCALLTYPE unused6();
120 virtual HRESULT STDMETHODCALLTYPE cookieStorageAcceptPolicy(_Out_ WebKitCookieStorageAcceptPolicy*);
121 virtual HRESULT STDMETHODCALLTYPE setCookieStorageAcceptPolicy(WebKitCookieStorageAcceptPolicy);
122 virtual HRESULT STDMETHODCALLTYPE continuousSpellCheckingEnabled(_Out_ BOOL*);
123 virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled(BOOL);
124 virtual HRESULT STDMETHODCALLTYPE grammarCheckingEnabled(_Out_ BOOL*);
125 virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled(BOOL);
126 virtual HRESULT STDMETHODCALLTYPE allowContinuousSpellChecking(_Out_ BOOL*);
127 virtual HRESULT STDMETHODCALLTYPE setAllowContinuousSpellChecking(BOOL);
128 virtual HRESULT STDMETHODCALLTYPE isDOMPasteAllowed(_Out_ BOOL*);
129 virtual HRESULT STDMETHODCALLTYPE setDOMPasteAllowed(BOOL);
130 virtual HRESULT STDMETHODCALLTYPE cacheModel(_Out_ WebCacheModel*);
131 virtual HRESULT STDMETHODCALLTYPE setCacheModel(WebCacheModel);
132 virtual HRESULT STDMETHODCALLTYPE unused3();
133 virtual HRESULT STDMETHODCALLTYPE unused4();
134 virtual HRESULT STDMETHODCALLTYPE setAVFoundationEnabled(BOOL);
135 virtual HRESULT STDMETHODCALLTYPE avFoundationEnabled(_Out_ BOOL*);
136 virtual HRESULT STDMETHODCALLTYPE setShouldDisplaySubtitles(BOOL);
137 virtual HRESULT STDMETHODCALLTYPE shouldDisplaySubtitles(_Out_ BOOL*);
138 virtual HRESULT STDMETHODCALLTYPE setShouldDisplayCaptions(BOOL);
139 virtual HRESULT STDMETHODCALLTYPE shouldDisplayCaptions(_Out_ BOOL*);
140 virtual HRESULT STDMETHODCALLTYPE setShouldDisplayTextDescriptions(BOOL);
141 virtual HRESULT STDMETHODCALLTYPE shouldDisplayTextDescriptions(_Out_ BOOL*);
143 // IWebPreferencesPrivate
144 virtual HRESULT STDMETHODCALLTYPE setDeveloperExtrasEnabled(BOOL);
145 virtual HRESULT STDMETHODCALLTYPE developerExtrasEnabled(_Out_ BOOL*);
146 virtual HRESULT STDMETHODCALLTYPE setAutomaticallyDetectsCacheModel(BOOL);
147 virtual HRESULT STDMETHODCALLTYPE automaticallyDetectsCacheModel(_Out_ BOOL*);
148 virtual HRESULT STDMETHODCALLTYPE setAuthorAndUserStylesEnabled(BOOL);
149 virtual HRESULT STDMETHODCALLTYPE authorAndUserStylesEnabled(_Out_ BOOL*);
150 virtual HRESULT STDMETHODCALLTYPE inApplicationChromeMode(_Out_ BOOL*);
151 virtual HRESULT STDMETHODCALLTYPE setApplicationChromeMode(BOOL);
152 virtual HRESULT STDMETHODCALLTYPE setOfflineWebApplicationCacheEnabled(BOOL);
153 virtual HRESULT STDMETHODCALLTYPE offlineWebApplicationCacheEnabled(_Out_ BOOL*);
154 virtual HRESULT STDMETHODCALLTYPE setDatabasesEnabled(BOOL);
155 virtual HRESULT STDMETHODCALLTYPE databasesEnabled(_Out_ BOOL*);
156 virtual HRESULT STDMETHODCALLTYPE setLocalStorageEnabled(BOOL);
157 virtual HRESULT STDMETHODCALLTYPE localStorageEnabled(_Out_ BOOL*);
158 virtual HRESULT STDMETHODCALLTYPE localStorageDatabasePath(__deref_opt_out BSTR*);
159 virtual HRESULT STDMETHODCALLTYPE setLocalStorageDatabasePath(_In_ BSTR);
160 virtual HRESULT STDMETHODCALLTYPE experimentalNotificationsEnabled(_Out_ BOOL*);
161 virtual HRESULT STDMETHODCALLTYPE setExperimentalNotificationsEnabled(BOOL);
163 // These two methods are no-ops, and only retained to keep
164 // the Interface consistent. DO NOT USE THEM.
165 virtual HRESULT STDMETHODCALLTYPE setShouldPaintNativeControls(BOOL);
166 virtual HRESULT STDMETHODCALLTYPE shouldPaintNativeControls(_Out_ BOOL*);
168 virtual HRESULT STDMETHODCALLTYPE setZoomsTextOnly(BOOL);
169 virtual HRESULT STDMETHODCALLTYPE zoomsTextOnly(_Out_ BOOL *);
170 virtual HRESULT STDMETHODCALLTYPE fontSmoothingContrast(_Out_ float*);
171 virtual HRESULT STDMETHODCALLTYPE setFontSmoothingContrast(float);
172 virtual HRESULT STDMETHODCALLTYPE isWebSecurityEnabled(_Out_ BOOL*);
173 virtual HRESULT STDMETHODCALLTYPE setWebSecurityEnabled(BOOL);
174 virtual HRESULT STDMETHODCALLTYPE allowUniversalAccessFromFileURLs(_Out_ BOOL*);
175 virtual HRESULT STDMETHODCALLTYPE setAllowUniversalAccessFromFileURLs(BOOL);
176 virtual HRESULT STDMETHODCALLTYPE allowFileAccessFromFileURLs(_Out_ BOOL*);
177 virtual HRESULT STDMETHODCALLTYPE setAllowFileAccessFromFileURLs(BOOL);
178 virtual HRESULT STDMETHODCALLTYPE javaScriptCanAccessClipboard(_Out_ BOOL*);
179 virtual HRESULT STDMETHODCALLTYPE setJavaScriptCanAccessClipboard(BOOL);
180 virtual HRESULT STDMETHODCALLTYPE isXSSAuditorEnabled(_Out_ BOOL*);
181 virtual HRESULT STDMETHODCALLTYPE setXSSAuditorEnabled(BOOL);
182 virtual HRESULT STDMETHODCALLTYPE setShouldUseHighResolutionTimers(BOOL);
183 virtual HRESULT STDMETHODCALLTYPE shouldUseHighResolutionTimers(_Out_ BOOL*);
184 virtual HRESULT STDMETHODCALLTYPE isFrameFlatteningEnabled(_Out_ BOOL*);
185 virtual HRESULT STDMETHODCALLTYPE setFrameFlatteningEnabled(BOOL);
186 virtual HRESULT STDMETHODCALLTYPE setPreferenceForTest(_In_ BSTR key, _In_ BSTR value);
187 virtual HRESULT STDMETHODCALLTYPE setAcceleratedCompositingEnabled(BOOL);
188 virtual HRESULT STDMETHODCALLTYPE acceleratedCompositingEnabled(_Out_ BOOL*);
189 virtual HRESULT STDMETHODCALLTYPE setCustomDragCursorsEnabled(BOOL);
190 virtual HRESULT STDMETHODCALLTYPE customDragCursorsEnabled(_Out_ BOOL*);
191 virtual HRESULT STDMETHODCALLTYPE setShowDebugBorders(BOOL);
192 virtual HRESULT STDMETHODCALLTYPE showDebugBorders(_Out_ BOOL*);
193 virtual HRESULT STDMETHODCALLTYPE setShowRepaintCounter(BOOL);
194 virtual HRESULT STDMETHODCALLTYPE showRepaintCounter(_Out_ BOOL*);
195 virtual HRESULT STDMETHODCALLTYPE setDNSPrefetchingEnabled(BOOL);
196 virtual HRESULT STDMETHODCALLTYPE isDNSPrefetchingEnabled(_Out_ BOOL*);
197 virtual HRESULT STDMETHODCALLTYPE hyperlinkAuditingEnabled(_Out_ BOOL*);
198 virtual HRESULT STDMETHODCALLTYPE setHyperlinkAuditingEnabled(BOOL);
199 virtual HRESULT STDMETHODCALLTYPE loadsSiteIconsIgnoringImageLoadingPreference(_Out_ BOOL*);
200 virtual HRESULT STDMETHODCALLTYPE setLoadsSiteIconsIgnoringImageLoadingPreference(BOOL);
201 virtual HRESULT STDMETHODCALLTYPE setFullScreenEnabled(BOOL);
202 virtual HRESULT STDMETHODCALLTYPE isFullScreenEnabled(_Out_ BOOL*);
203 virtual HRESULT STDMETHODCALLTYPE hixie76WebSocketProtocolEnabled(_Out_ BOOL*);
204 virtual HRESULT STDMETHODCALLTYPE setHixie76WebSocketProtocolEnabled(BOOL);
205 virtual HRESULT STDMETHODCALLTYPE mediaPlaybackRequiresUserGesture(_Out_ BOOL*);
206 virtual HRESULT STDMETHODCALLTYPE setMediaPlaybackRequiresUserGesture(BOOL);
207 virtual HRESULT STDMETHODCALLTYPE mediaPlaybackAllowsInline(_Out_ BOOL*);
208 virtual HRESULT STDMETHODCALLTYPE setMediaPlaybackAllowsInline(BOOL);
209 virtual HRESULT STDMETHODCALLTYPE showsToolTipOverTruncatedText(_Out_ BOOL*);
210 virtual HRESULT STDMETHODCALLTYPE setShowsToolTipOverTruncatedText(BOOL);
211 virtual HRESULT STDMETHODCALLTYPE shouldInvertColors(_Out_ BOOL*);
212 virtual HRESULT STDMETHODCALLTYPE setShouldInvertColors(BOOL);
213 virtual HRESULT STDMETHODCALLTYPE requestAnimationFrameEnabled(_Out_ BOOL*);
214 virtual HRESULT STDMETHODCALLTYPE setRequestAnimationFrameEnabled(BOOL);
215 virtual HRESULT STDMETHODCALLTYPE mockScrollbarsEnabled(_Out_ BOOL*);
216 virtual HRESULT STDMETHODCALLTYPE setMockScrollbarsEnabled(BOOL);
218 // These two methods are no-ops, and only retained to keep
219 // the Interface consistent. DO NOT USE THEM.
220 virtual HRESULT STDMETHODCALLTYPE screenFontSubstitutionEnabled(_Out_ BOOL*);
221 virtual HRESULT STDMETHODCALLTYPE setScreenFontSubstitutionEnabled(BOOL);
223 virtual HRESULT STDMETHODCALLTYPE isInheritURIQueryComponentEnabled(_Out_ BOOL*);
224 virtual HRESULT STDMETHODCALLTYPE setEnableInheritURIQueryComponent(BOOL);
226 // IWebPreferencesPrivate2
227 virtual HRESULT STDMETHODCALLTYPE javaScriptRuntimeFlags(_Out_ unsigned*);
228 virtual HRESULT STDMETHODCALLTYPE setJavaScriptRuntimeFlags(unsigned);
229 virtual HRESULT STDMETHODCALLTYPE allowDisplayAndRunningOfInsecureContent(_Out_ BOOL*);
230 virtual HRESULT STDMETHODCALLTYPE setAllowDisplayAndRunningOfInsecureContent(BOOL);
232 // IWebPreferencesPrivate3
233 virtual HRESULT STDMETHODCALLTYPE showTiledScrollingIndicator(_Out_ BOOL*);
234 virtual HRESULT STDMETHODCALLTYPE setShowTiledScrollingIndicator(BOOL);
235 virtual HRESULT STDMETHODCALLTYPE fetchAPIEnabled(_Out_ BOOL*);
236 virtual HRESULT STDMETHODCALLTYPE setFetchAPIEnabled(BOOL);
237 virtual HRESULT STDMETHODCALLTYPE shadowDOMEnabled(_Out_ BOOL*);
238 virtual HRESULT STDMETHODCALLTYPE setShadowDOMEnabled(BOOL);
239 virtual HRESULT STDMETHODCALLTYPE customElementsEnabled(_Out_ BOOL*);
240 virtual HRESULT STDMETHODCALLTYPE setCustomElementsEnabled(BOOL);
241 virtual HRESULT STDMETHODCALLTYPE modernMediaControlsEnabled(_Out_ BOOL*);
242 virtual HRESULT STDMETHODCALLTYPE setModernMediaControlsEnabled(BOOL);
243 virtual HRESULT STDMETHODCALLTYPE cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled(_Out_ BOOL*);
244 virtual HRESULT STDMETHODCALLTYPE setCSSAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled(BOOL);
246 // IWebPreferencesPrivate4
247 virtual HRESULT STDMETHODCALLTYPE setApplicationId(BSTR);
248 virtual HRESULT STDMETHODCALLTYPE webAnimationsEnabled(_Out_ BOOL*);
249 virtual HRESULT STDMETHODCALLTYPE setWebAnimationsEnabled(BOOL);
250 virtual HRESULT STDMETHODCALLTYPE userTimingEnabled(_Out_ BOOL*);
251 virtual HRESULT STDMETHODCALLTYPE setUserTimingEnabled(BOOL);
252 virtual HRESULT STDMETHODCALLTYPE resourceTimingEnabled(_Out_ BOOL*);
253 virtual HRESULT STDMETHODCALLTYPE setResourceTimingEnabled(BOOL);
254 virtual HRESULT STDMETHODCALLTYPE linkPreloadEnabled(_Out_ BOOL*);
255 virtual HRESULT STDMETHODCALLTYPE setLinkPreloadEnabled(BOOL);
256 virtual HRESULT STDMETHODCALLTYPE mediaPreloadingEnabled(_Out_ BOOL*);
257 virtual HRESULT STDMETHODCALLTYPE setMediaPreloadingEnabled(BOOL);
258 virtual HRESULT STDMETHODCALLTYPE clearNetworkLoaderSession();
259 virtual HRESULT STDMETHODCALLTYPE switchNetworkLoaderToNewTestingSession();
261 // IWebPreferencesPrivate5
262 virtual HRESULT STDMETHODCALLTYPE isSecureContextAttributeEnabled(_Out_ BOOL*);
263 virtual HRESULT STDMETHODCALLTYPE setIsSecureContextAttributeEnabled(BOOL);
265 // IWebPreferencesPrivate6
266 virtual HRESULT STDMETHODCALLTYPE dataTransferItemsEnabled(_Out_ BOOL*);
267 virtual HRESULT STDMETHODCALLTYPE setDataTransferItemsEnabled(BOOL);
268 virtual HRESULT STDMETHODCALLTYPE inspectorAdditionsEnabled(_Out_ BOOL*);
269 virtual HRESULT STDMETHODCALLTYPE setInspectorAdditionsEnabled(BOOL);
270 virtual HRESULT STDMETHODCALLTYPE visualViewportAPIEnabled(_Out_ BOOL*);
271 virtual HRESULT STDMETHODCALLTYPE setVisualViewportAPIEnabled(BOOL);
272 virtual HRESULT STDMETHODCALLTYPE fetchAPIKeepAliveEnabled(_Out_ BOOL*);
273 virtual HRESULT STDMETHODCALLTYPE setFetchAPIKeepAliveEnabled(BOOL);
274 virtual HRESULT STDMETHODCALLTYPE spatialNavigationEnabled(_Out_ BOOL*);
275 virtual HRESULT STDMETHODCALLTYPE setSpatialNavigationEnabled(BOOL);
276 virtual HRESULT STDMETHODCALLTYPE menuItemElementEnabled(_Out_ BOOL*);
277 virtual HRESULT STDMETHODCALLTYPE setMenuItemElementEnabled(BOOL);
279 // IWebPreferencesPrivate7
280 virtual HRESULT STDMETHODCALLTYPE crossOriginOptionsSupportEnabled(_Out_ BOOL*);
281 virtual HRESULT STDMETHODCALLTYPE setCrossOriginOptionsSupportEnabled(BOOL);
285 // This method accesses a different preference key than developerExtrasEnabled.
286 // See <rdar://5343767> for the justification.
287 bool developerExtrasDisabledByOverride();
289 static BSTR webPreferencesChangedNotification();
290 static BSTR webPreferencesRemovedNotification();
292 static void setInstance(WebPreferences* instance, BSTR identifier);
293 static void removeReferenceForIdentifier(BSTR identifier);
294 static WebPreferences* sharedStandardPreferences();
296 static CFStringRef applicationId();
299 HRESULT historyItemLimit(_Out_ int*);
300 HRESULT setHistoryItemLimit(int);
301 HRESULT historyAgeInDaysLimit(_Out_ int*);
302 HRESULT setHistoryAgeInDaysLimit(int);
304 void willAddToWebView();
305 void didRemoveFromWebView();
307 HRESULT postPreferencesChangesNotification();
310 void setValueForKey(CFStringRef key, CFPropertyListRef value);
311 RetainPtr<CFPropertyListRef> valueForKey(CFStringRef key);
312 void setValueForKey(const char* key, CFPropertyListRef value);
313 RetainPtr<CFPropertyListRef> valueForKey(const char* key);
314 BSTR stringValueForKey(const char* key);
315 int integerValueForKey(const char* key);
316 BOOL boolValueForKey(const char* key);
317 float floatValueForKey(const char* key);
318 LONGLONG longlongValueForKey(const char* key);
319 void setStringValue(const char* key, BSTR value);
320 void setIntegerValue(const char* key, int value);
321 void setBoolValue(const char* key, BOOL value);
322 void setFloatValue(const char* key, float value);
323 void setLongLongValue(const char* key, LONGLONG value);
324 static WebPreferences* getInstanceForIdentifier(BSTR identifier);
325 static void initializeDefaultSettings();
328 void migrateWebKitPreferencesToCFPreferences();
329 void copyWebKitPreferencesToCFPreferences(CFDictionaryRef);
332 ULONG m_refCount { 0 };
333 RetainPtr<CFMutableDictionaryRef> m_privatePrefs;
334 WebCore::BString m_identifier;
335 bool m_autoSaves { false };
336 bool m_automaticallyDetectsCacheModel { true };
337 unsigned m_numWebViews { 0 };
338 static RetainPtr<CFStringRef> m_applicationId;