/* * 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 #include #include 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*); virtual HRESULT STDMETHODCALLTYPE hyperlinkAuditingEnabled(BOOL*); virtual HRESULT STDMETHODCALLTYPE setHyperlinkAuditingEnabled(BOOL); virtual HRESULT STDMETHODCALLTYPE loadsSiteIconsIgnoringImageLoadingPreference(BOOL*); virtual HRESULT STDMETHODCALLTYPE setLoadsSiteIconsIgnoringImageLoadingPreference(BOOL); // WebPreferences // This method accesses a different preference key than developerExtrasEnabled. // See 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 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 m_privatePrefs; WebCore::BString m_identifier; bool m_autoSaves; bool m_automaticallyDetectsCacheModel; unsigned m_numWebViews; }; #endif