REGRESSION: editing/async-clipboard/clipboard-interfaces.html is failing in WebKit1
[WebKit-https.git] / Source / WebKitLegacy / win / WebPreferences.h
1 /*
2  * Copyright (C) 2006-2009, 2015 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 #pragma once
27
28 #include "WebKit.h"
29 #include <CoreFoundation/CoreFoundation.h>
30 #include <WebCore/BString.h>
31 #include <wtf/RetainPtr.h>
32
33 class WebPreferences final : public IWebPreferences, public IWebPreferencesPrivate7 {
34 public:
35     static WebPreferences* createInstance();
36 protected:
37     WebPreferences();
38     ~WebPreferences();
39
40 public:
41     // IUnknown
42     virtual HRESULT STDMETHODCALLTYPE QueryInterface(_In_ REFIID riid, _COM_Outptr_ void** ppvObject);
43     virtual ULONG STDMETHODCALLTYPE AddRef();
44     virtual ULONG STDMETHODCALLTYPE Release();
45
46     // IWebPreferences
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*);
142
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);
162
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*);
167
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);
217
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);
222
223     virtual HRESULT STDMETHODCALLTYPE isInheritURIQueryComponentEnabled(_Out_ BOOL*);
224     virtual HRESULT STDMETHODCALLTYPE setEnableInheritURIQueryComponent(BOOL);
225
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);
231
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 webAnimationsCSSIntegrationEnabled(_Out_ BOOL*);
244     virtual HRESULT STDMETHODCALLTYPE setWebAnimationsCSSIntegrationEnabled(BOOL);
245     
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();
260
261     // IWebPreferencesPrivate5
262     virtual HRESULT STDMETHODCALLTYPE isSecureContextAttributeEnabled(_Out_ BOOL*);
263     virtual HRESULT STDMETHODCALLTYPE setIsSecureContextAttributeEnabled(BOOL);
264
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 CSSOMViewScrollingAPIEnabled(_Out_ BOOL*);
273     virtual HRESULT STDMETHODCALLTYPE setCSSOMViewScrollingAPIEnabled(BOOL);
274     virtual HRESULT STDMETHODCALLTYPE fetchAPIKeepAliveEnabled(_Out_ BOOL*);
275     virtual HRESULT STDMETHODCALLTYPE setFetchAPIKeepAliveEnabled(BOOL);
276     virtual HRESULT STDMETHODCALLTYPE spatialNavigationEnabled(_Out_ BOOL*);
277     virtual HRESULT STDMETHODCALLTYPE setSpatialNavigationEnabled(BOOL);
278     virtual HRESULT STDMETHODCALLTYPE menuItemElementEnabled(_Out_ BOOL*);
279     virtual HRESULT STDMETHODCALLTYPE setMenuItemElementEnabled(BOOL);
280     virtual HRESULT STDMETHODCALLTYPE keygenElementEnabled(_Out_ BOOL*);
281     virtual HRESULT STDMETHODCALLTYPE setKeygenElementEnabled(BOOL);
282     virtual HRESULT STDMETHODCALLTYPE serverTimingEnabled(_Out_ BOOL*);
283     virtual HRESULT STDMETHODCALLTYPE setServerTimingEnabled(BOOL);
284
285     // IWebPreferencesPrivate7
286     virtual HRESULT STDMETHODCALLTYPE crossOriginWindowPolicySupportEnabled(_Out_ BOOL*);
287     virtual HRESULT STDMETHODCALLTYPE setCrossOriginWindowPolicySupportEnabled(BOOL);
288     virtual HRESULT STDMETHODCALLTYPE resizeObserverEnabled(_Out_ BOOL*);
289     virtual HRESULT STDMETHODCALLTYPE setResizeObserverEnabled(BOOL);
290     virtual HRESULT STDMETHODCALLTYPE coreMathMLEnabled(_Out_ BOOL*);
291     virtual HRESULT STDMETHODCALLTYPE setCoreMathMLEnabled(BOOL);
292     virtual HRESULT STDMETHODCALLTYPE requestIdleCallbackEnabled(_Out_ BOOL*);
293     virtual HRESULT STDMETHODCALLTYPE setRequestIdleCallbackEnabled(BOOL);
294     virtual HRESULT STDMETHODCALLTYPE asyncClipboardAPIEnabled(_Out_ BOOL*);
295     virtual HRESULT STDMETHODCALLTYPE setAsyncClipboardAPIEnabled(BOOL);
296
297     // WebPreferences
298
299     // This method accesses a different preference key than developerExtrasEnabled.
300     // See <rdar://5343767> for the justification.
301     bool developerExtrasDisabledByOverride();
302
303     static BSTR webPreferencesChangedNotification();
304     static BSTR webPreferencesRemovedNotification();
305
306     static void setInstance(WebPreferences* instance, BSTR identifier);
307     static void removeReferenceForIdentifier(BSTR identifier);
308     static WebPreferences* sharedStandardPreferences();
309
310     static CFStringRef applicationId();
311
312     // From WebHistory.h
313     HRESULT historyItemLimit(_Out_ int*);
314     HRESULT setHistoryItemLimit(int);
315     HRESULT historyAgeInDaysLimit(_Out_ int*);
316     HRESULT setHistoryAgeInDaysLimit(int);
317
318     void willAddToWebView();
319     void didRemoveFromWebView();
320
321     HRESULT postPreferencesChangesNotification();
322
323 protected:
324 #if USE(CF)
325     void setValueForKey(CFStringRef key, CFPropertyListRef value);
326     RetainPtr<CFPropertyListRef> valueForKey(CFStringRef key);
327     void setValueForKey(const char* key, CFPropertyListRef value);
328     RetainPtr<CFPropertyListRef> valueForKey(const char* key);
329 #endif
330     BSTR stringValueForKey(const char* key);
331     int integerValueForKey(const char* key);
332     BOOL boolValueForKey(const char* key);
333     float floatValueForKey(const char* key);
334     LONGLONG longlongValueForKey(const char* key);
335     void setStringValue(const char* key, BSTR value);
336     void setIntegerValue(const char* key, int value);
337     void setBoolValue(const char* key, BOOL value);
338     void setFloatValue(const char* key, float value);
339     void setLongLongValue(const char* key, LONGLONG value);
340     static WebPreferences* getInstanceForIdentifier(BSTR identifier);
341     static void initializeDefaultSettings();
342     void save();
343     void load();
344 #if USE(CF)
345     void migrateWebKitPreferencesToCFPreferences();
346     void copyWebKitPreferencesToCFPreferences(CFDictionaryRef);
347 #endif
348
349 protected:
350     ULONG m_refCount { 0 };
351     WebCore::BString m_identifier;
352     bool m_autoSaves { false };
353     bool m_automaticallyDetectsCacheModel { true };
354     unsigned m_numWebViews { 0 };
355
356 #if USE(CF)
357     RetainPtr<CFMutableDictionaryRef> m_privatePrefs;
358     static RetainPtr<CFStringRef> m_applicationId;
359 #endif
360 };