webengine/osswebengine/WebKit/win/WebPreferences.h
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/win/WebPreferences.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,331 @@
+/*
+ * Copyright (C) 2006, 2007 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 "IWebPreferences.h"
+#include "IWebPreferencesPrivate.h"
+#include <CoreFoundation/CoreFoundation.h>
+#include <WebCore/BString.h>
+#include <wtf/RetainPtr.h>
+
+// {A20B5645-692D-4147-BF80-E8CD84BE82A1}
+DEFINE_GUID(IID_WebPreferences, 0xa20b5645, 0x692d, 0x4147, 0xbf, 0x80, 0xe8, 0xcd, 0x84, 0xbe, 0x82, 0xa1);
+
+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 pageCacheSize( 
+        /* [retval][out] */ unsigned int *limit);
+
+    virtual HRESULT STDMETHODCALLTYPE objectCacheSize( 
+        /* [retval][out] */ unsigned int *limit);
+    
+    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 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);
+
+    // IWebPreferencesPrivate
+    virtual HRESULT STDMETHODCALLTYPE setDeveloperExtrasEnabled(
+        /* [in] */ BOOL);
+
+    virtual HRESULT STDMETHODCALLTYPE developerExtrasEnabled(
+        /* [retval][out] */ BOOL*);
+
+
+    // WebPreferences
+
+    // This method accesses a different preference key than developerExtrasEnabled.
+    // See <rdar://5343767> for the justification.
+    bool developerExtrasDisabledByOverride();
+
+    static BSTR webPreferencesChangedNotification();
+    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);
+
+protected:
+    HRESULT postPreferencesChangesNotification();
+    const void* valueForKey(CFStringRef key);
+    BSTR stringValueForKey(CFStringRef key);
+    int integerValueForKey(CFStringRef key);
+    BOOL boolValueForKey(CFStringRef key);
+    float floatValueForKey(CFStringRef key);
+    void setStringValue(CFStringRef key, LPCTSTR value);
+    void setIntegerValue(CFStringRef key, int value);
+    void setBoolValue(CFStringRef key, BOOL value);
+    static WebPreferences* getInstanceForIdentifier(BSTR identifier);
+    static void initializeDefaultSettings();
+    void save();
+    void load();
+    void migrateDefaultSettingsFromSafari3Beta();
+    void removeValuesMatchingDefaultSettings();
+    static HRESULT preferencesPath(LPTSTR path, size_t cchPath);
+    static HRESULT safeCreateFileWithData(LPCTSTR path, void* data, size_t length);
+
+protected:
+    ULONG m_refCount;
+    RetainPtr<CFMutableDictionaryRef> m_privatePrefs;
+    bool m_autoSaves;
+    WebCore::BString m_identifier;
+    static CFDictionaryRef s_defaultSettings;
+    static WebPreferences* s_standardPreferences;
+};
+
+#endif