WebKit/win/WebPreferences.h
changeset 0 4f2f89ce4247
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebKit/win/WebPreferences.h	Fri Sep 17 09:02:29 2010 +0300
@@ -0,0 +1,482 @@
+/*
+ * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#ifndef WebPreferences_H
+#define WebPreferences_H
+
+#include "WebKit.h"
+#include <CoreFoundation/CoreFoundation.h>
+#include <WebCore/BString.h>
+#include <wtf/RetainPtr.h>
+
+class WebPreferences : public IWebPreferences, public IWebPreferencesPrivate {
+public:
+    static WebPreferences* createInstance();
+protected:
+    WebPreferences();
+    ~WebPreferences();
+
+public:
+    // IUnknown
+    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
+    virtual ULONG STDMETHODCALLTYPE AddRef(void);
+    virtual ULONG STDMETHODCALLTYPE Release(void);
+
+    // IWebPreferences
+    virtual HRESULT STDMETHODCALLTYPE standardPreferences( 
+        /* [retval][out] */ IWebPreferences** standardPreferences);
+    
+    virtual HRESULT STDMETHODCALLTYPE initWithIdentifier( 
+        /* [in] */ BSTR anIdentifier,
+        /* [retval][out] */ IWebPreferences** preferences);
+    
+    virtual HRESULT STDMETHODCALLTYPE identifier( 
+        /* [retval][out] */ BSTR* ident);
+    
+    virtual HRESULT STDMETHODCALLTYPE standardFontFamily( 
+        /* [retval][out] */ BSTR* family);
+    
+    virtual HRESULT STDMETHODCALLTYPE setStandardFontFamily( 
+        /* [in] */ BSTR family);
+    
+    virtual HRESULT STDMETHODCALLTYPE fixedFontFamily( 
+        /* [retval][out] */ BSTR* family);
+    
+    virtual HRESULT STDMETHODCALLTYPE setFixedFontFamily( 
+        /* [in] */ BSTR family);
+    
+    virtual HRESULT STDMETHODCALLTYPE serifFontFamily( 
+        /* [retval][out] */ BSTR* fontFamily);
+    
+    virtual HRESULT STDMETHODCALLTYPE setSerifFontFamily( 
+        /* [in] */ BSTR family);
+    
+    virtual HRESULT STDMETHODCALLTYPE sansSerifFontFamily( 
+        /* [retval][out] */ BSTR* family);
+    
+    virtual HRESULT STDMETHODCALLTYPE setSansSerifFontFamily( 
+        /* [in] */ BSTR family);
+    
+    virtual HRESULT STDMETHODCALLTYPE cursiveFontFamily( 
+        /* [retval][out] */ BSTR* family);
+    
+    virtual HRESULT STDMETHODCALLTYPE setCursiveFontFamily( 
+        /* [in] */ BSTR family);
+    
+    virtual HRESULT STDMETHODCALLTYPE fantasyFontFamily( 
+        /* [retval][out] */ BSTR* family);
+    
+    virtual HRESULT STDMETHODCALLTYPE setFantasyFontFamily( 
+        /* [in] */ BSTR family);
+    
+    virtual HRESULT STDMETHODCALLTYPE defaultFontSize( 
+        /* [retval][out] */ int* fontSize);
+    
+    virtual HRESULT STDMETHODCALLTYPE setDefaultFontSize( 
+        /* [in] */ int fontSize);
+    
+    virtual HRESULT STDMETHODCALLTYPE defaultFixedFontSize( 
+        /* [retval][out] */ int* fontSize);
+    
+    virtual HRESULT STDMETHODCALLTYPE setDefaultFixedFontSize( 
+        /* [in] */ int fontSize);
+    
+    virtual HRESULT STDMETHODCALLTYPE minimumFontSize( 
+        /* [retval][out] */ int* fontSize);
+    
+    virtual HRESULT STDMETHODCALLTYPE setMinimumFontSize( 
+        /* [in] */ int fontSize);
+    
+    virtual HRESULT STDMETHODCALLTYPE minimumLogicalFontSize( 
+        /* [retval][out] */ int* fontSize);
+    
+    virtual HRESULT STDMETHODCALLTYPE setMinimumLogicalFontSize( 
+        /* [in] */ int fontSize);
+    
+    virtual HRESULT STDMETHODCALLTYPE defaultTextEncodingName( 
+        /* [retval][out] */ BSTR* name);
+    
+    virtual HRESULT STDMETHODCALLTYPE setDefaultTextEncodingName( 
+        /* [in] */ BSTR name);
+    
+    virtual HRESULT STDMETHODCALLTYPE userStyleSheetEnabled( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetEnabled( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE userStyleSheetLocation( 
+        /* [retval][out] */ BSTR* location);
+    
+    virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetLocation( 
+        /* [in] */ BSTR location);
+    
+    virtual HRESULT STDMETHODCALLTYPE isJavaEnabled( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setJavaEnabled( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE isJavaScriptEnabled( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setJavaScriptEnabled( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE javaScriptCanOpenWindowsAutomatically( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setJavaScriptCanOpenWindowsAutomatically( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE arePlugInsEnabled( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setPlugInsEnabled( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE allowsAnimatedImages( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setAllowsAnimatedImages( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE allowAnimatedImageLooping( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setAllowAnimatedImageLooping( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setLoadsImagesAutomatically( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE loadsImagesAutomatically( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setAutosaves( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE autosaves( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setShouldPrintBackgrounds( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE shouldPrintBackgrounds( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setPrivateBrowsingEnabled( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE privateBrowsingEnabled( 
+        /* [retval][out] */ BOOL* enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setTabsToLinks( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE tabsToLinks( 
+        /* [retval][out] */ BOOL* enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE textAreasAreResizable( 
+        /* [retval][out] */ BOOL *enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setTextAreasAreResizable( 
+        /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE usesPageCache( 
+        /* [retval][out] */ BOOL *usesPageCache);
+
+    virtual HRESULT STDMETHODCALLTYPE setUsesPageCache( 
+        /* [in] */ BOOL usesPageCache);
+
+    virtual HRESULT STDMETHODCALLTYPE unused1();
+    virtual HRESULT STDMETHODCALLTYPE unused2();
+
+    virtual HRESULT STDMETHODCALLTYPE iconDatabaseLocation(
+        /* [retval][out] */ BSTR* location);
+
+    virtual HRESULT STDMETHODCALLTYPE setIconDatabaseLocation(
+        /* [in] */ BSTR location);
+
+    virtual HRESULT STDMETHODCALLTYPE iconDatabaseEnabled(
+        /* [retval][out] */ BOOL* enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setIconDatabaseEnabled(
+        /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE fontSmoothing( 
+        /* [retval][out] */ FontSmoothingType* smoothingType);
+    
+    virtual HRESULT STDMETHODCALLTYPE setFontSmoothing( 
+        /* [in] */ FontSmoothingType smoothingType);
+
+    virtual HRESULT STDMETHODCALLTYPE editableLinkBehavior( 
+        /* [retval][out] */ WebKitEditableLinkBehavior* behavior);
+    
+    virtual HRESULT STDMETHODCALLTYPE setEditableLinkBehavior( 
+        /* [in] */ WebKitEditableLinkBehavior behavior);
+
+    virtual HRESULT STDMETHODCALLTYPE editingBehavior(
+        /* [retval][out] */ WebKitEditingBehavior* behavior);
+
+    virtual HRESULT STDMETHODCALLTYPE setEditingBehavior(
+        /* [in] */ WebKitEditingBehavior behavior);
+
+    virtual HRESULT STDMETHODCALLTYPE cookieStorageAcceptPolicy( 
+        /* [retval][out] */ WebKitCookieStorageAcceptPolicy *acceptPolicy);
+        
+    virtual HRESULT STDMETHODCALLTYPE setCookieStorageAcceptPolicy( 
+        /* [in] */ WebKitCookieStorageAcceptPolicy acceptPolicy);
+
+    virtual HRESULT STDMETHODCALLTYPE continuousSpellCheckingEnabled( 
+        /* [retval][out] */ BOOL *enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled( 
+        /* [in] */ BOOL enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE grammarCheckingEnabled( 
+        /* [retval][out] */ BOOL *enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled( 
+        /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE allowContinuousSpellChecking( 
+        /* [retval][out] */ BOOL *enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setAllowContinuousSpellChecking( 
+        /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE isDOMPasteAllowed( 
+        /* [retval][out] */ BOOL *enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setDOMPasteAllowed( 
+        /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE cacheModel(
+     /* [retval][out] */ WebCacheModel* cacheModel);
+
+    virtual HRESULT STDMETHODCALLTYPE setCacheModel(
+     /* [in] */ WebCacheModel cacheModel);
+
+    virtual HRESULT STDMETHODCALLTYPE setShouldPaintCustomScrollbars( 
+    /* [in] */ BOOL shouldPaint);
+
+    virtual HRESULT STDMETHODCALLTYPE shouldPaintCustomScrollbars( 
+    /* [retval][out] */ BOOL *shouldPaint);
+
+    // IWebPreferencesPrivate
+    virtual HRESULT STDMETHODCALLTYPE setDeveloperExtrasEnabled(
+        /* [in] */ BOOL);
+
+    virtual HRESULT STDMETHODCALLTYPE developerExtrasEnabled(
+        /* [retval][out] */ BOOL*);
+
+     virtual HRESULT STDMETHODCALLTYPE setAutomaticallyDetectsCacheModel(
+         /* [in] */ BOOL automaticallyDetectsCacheModel);
+
+     virtual HRESULT STDMETHODCALLTYPE automaticallyDetectsCacheModel(
+         /* [out, retval] */ BOOL* automaticallyDetectsCacheModel);
+
+    virtual HRESULT STDMETHODCALLTYPE setAuthorAndUserStylesEnabled(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE authorAndUserStylesEnabled(BOOL*);
+
+    virtual HRESULT STDMETHODCALLTYPE inApplicationChromeMode( 
+        /* [retval][out] */ BOOL *enabled);
+    
+    virtual HRESULT STDMETHODCALLTYPE setApplicationChromeMode( 
+        /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setOfflineWebApplicationCacheEnabled( 
+        /* [in] */ BOOL enabled);
+        
+    virtual HRESULT STDMETHODCALLTYPE offlineWebApplicationCacheEnabled( 
+        /* [retval][out] */ BOOL *enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setDatabasesEnabled( 
+        /* [in] */ BOOL enabled);
+        
+    virtual HRESULT STDMETHODCALLTYPE databasesEnabled( 
+        /* [retval][out] */ BOOL *enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setLocalStorageEnabled( 
+        /* [in] */ BOOL enabled);
+        
+    virtual HRESULT STDMETHODCALLTYPE localStorageEnabled( 
+        /* [retval][out] */ BOOL *enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE localStorageDatabasePath(
+        /* [out, retval] */ BSTR* location);
+
+    virtual HRESULT STDMETHODCALLTYPE setLocalStorageDatabasePath(
+        /* [in] */ BSTR location);
+
+    virtual HRESULT STDMETHODCALLTYPE experimentalNotificationsEnabled(
+        /* [retval][out] */ BOOL *enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setExperimentalNotificationsEnabled(
+        /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setShouldPaintNativeControls( 
+    /* [in] */ BOOL shouldPaint);
+
+    virtual HRESULT STDMETHODCALLTYPE shouldPaintNativeControls( 
+    /* [retval][out] */ BOOL *shouldPaint);
+
+    virtual HRESULT STDMETHODCALLTYPE setZoomsTextOnly( 
+    /* [retval][out] */ BOOL zoomsTextOnly);
+
+    virtual HRESULT STDMETHODCALLTYPE zoomsTextOnly( 
+    /* [retval][out] */ BOOL *zoomsTextOnly);
+
+    virtual HRESULT STDMETHODCALLTYPE fontSmoothingContrast( 
+    /* [retval][out] */ float* contrast);
+
+    virtual HRESULT STDMETHODCALLTYPE setFontSmoothingContrast( 
+    /* [in] */ float contrast);
+
+    virtual HRESULT STDMETHODCALLTYPE isWebSecurityEnabled(
+    /* [retval][out] */ BOOL* enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setWebSecurityEnabled(
+    /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE allowUniversalAccessFromFileURLs(
+    /* [retval][out] */ BOOL* allowAccess);
+
+    virtual HRESULT STDMETHODCALLTYPE setAllowUniversalAccessFromFileURLs(
+    /* [in] */ BOOL allowAccess);
+
+    virtual HRESULT STDMETHODCALLTYPE allowFileAccessFromFileURLs(
+    /* [retval][out] */ BOOL* allowAccess);
+
+    virtual HRESULT STDMETHODCALLTYPE setAllowFileAccessFromFileURLs(
+    /* [in] */ BOOL allowAccess);
+
+    virtual HRESULT STDMETHODCALLTYPE javaScriptCanAccessClipboard(
+    /* [retval][out] */ BOOL* enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setJavaScriptCanAccessClipboard(
+    /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE isXSSAuditorEnabled(
+    /* [retval][out] */ BOOL* enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setXSSAuditorEnabled(
+    /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setShouldUseHighResolutionTimers(
+    /* [in] */ BOOL useHighResolutionTimers);
+
+    virtual HRESULT STDMETHODCALLTYPE shouldUseHighResolutionTimers(
+    /* [retval][out] */ BOOL* useHighResolutionTimers);
+
+    virtual HRESULT STDMETHODCALLTYPE setPluginAllowedRunTime(
+    /* [in] */ UINT allowedRunTime);
+
+    virtual HRESULT STDMETHODCALLTYPE pluginAllowedRunTime(
+    /* [retval][out] */ UINT* allowedRunTime);
+
+    virtual HRESULT STDMETHODCALLTYPE isFrameFlatteningEnabled(
+    /* [retval][out] */ BOOL* enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setFrameFlatteningEnabled(
+    /* [in] */ BOOL enabled);
+
+    virtual HRESULT STDMETHODCALLTYPE setPreferenceForTest(
+    /* [in] */ BSTR key,
+    /* [in] */ BSTR value);
+
+    virtual HRESULT STDMETHODCALLTYPE setAcceleratedCompositingEnabled(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE acceleratedCompositingEnabled(BOOL*);
+
+    virtual HRESULT STDMETHODCALLTYPE setCustomDragCursorsEnabled(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE customDragCursorsEnabled(BOOL*);
+
+    virtual HRESULT STDMETHODCALLTYPE setShowDebugBorders(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE showDebugBorders(BOOL*);
+
+    virtual HRESULT STDMETHODCALLTYPE setShowRepaintCounter(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE showRepaintCounter(BOOL*);
+
+    virtual HRESULT STDMETHODCALLTYPE setDNSPrefetchingEnabled(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE isDNSPrefetchingEnabled(BOOL*);
+
+    virtual HRESULT STDMETHODCALLTYPE setMemoryInfoEnabled(BOOL);
+    virtual HRESULT STDMETHODCALLTYPE memoryInfoEnabled(BOOL*);
+
+    // WebPreferences
+
+    // This method accesses a different preference key than developerExtrasEnabled.
+    // See <rdar://5343767> for the justification.
+    bool developerExtrasDisabledByOverride();
+
+    static BSTR webPreferencesChangedNotification();
+    static BSTR webPreferencesRemovedNotification();
+
+    static void setInstance(WebPreferences* instance, BSTR identifier);
+    static void removeReferenceForIdentifier(BSTR identifier);
+    static WebPreferences* sharedStandardPreferences();
+
+    // From WebHistory.h
+    HRESULT historyItemLimit(int* limit);
+    HRESULT setHistoryItemLimit(int limit);
+    HRESULT historyAgeInDaysLimit(int* limit);
+    HRESULT setHistoryAgeInDaysLimit(int limit);
+
+     void willAddToWebView();
+     void didRemoveFromWebView();
+
+    HRESULT postPreferencesChangesNotification();
+
+protected:
+    void setValueForKey(CFStringRef key, CFPropertyListRef value);
+    RetainPtr<CFPropertyListRef> valueForKey(CFStringRef key);
+    BSTR stringValueForKey(CFStringRef key);
+    int integerValueForKey(CFStringRef key);
+    BOOL boolValueForKey(CFStringRef key);
+    float floatValueForKey(CFStringRef key);
+    LONGLONG longlongValueForKey(CFStringRef key);
+    void setStringValue(CFStringRef key, LPCTSTR value);
+    void setIntegerValue(CFStringRef key, int value);
+    void setBoolValue(CFStringRef key, BOOL value);
+    void setFloatValue(CFStringRef key, float value);
+    void setLongLongValue(CFStringRef key, LONGLONG value);
+    static WebPreferences* getInstanceForIdentifier(BSTR identifier);
+    static void initializeDefaultSettings();
+    void save();
+    void load();
+    void migrateWebKitPreferencesToCFPreferences();
+    void copyWebKitPreferencesToCFPreferences(CFDictionaryRef);
+
+protected:
+    ULONG m_refCount;
+    RetainPtr<CFMutableDictionaryRef> m_privatePrefs;
+    WebCore::BString m_identifier;
+    bool m_autoSaves;
+    bool m_automaticallyDetectsCacheModel;
+    unsigned m_numWebViews;
+};
+
+#endif