Home | History | Annotate | Download | only in win
      1 /*
      2  * Copyright (C) 2006, 2007, 2008, 2009 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 COMPUTER, 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 COMPUTER, 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 #ifndef WebPreferences_H
     27 #define WebPreferences_H
     28 
     29 #include "WebKit.h"
     30 #include <CoreFoundation/CoreFoundation.h>
     31 #include <WebCore/BString.h>
     32 #include <wtf/RetainPtr.h>
     33 
     34 class WebPreferences : public IWebPreferences, public IWebPreferencesPrivate {
     35 public:
     36     static WebPreferences* createInstance();
     37 protected:
     38     WebPreferences();
     39     ~WebPreferences();
     40 
     41 public:
     42     // IUnknown
     43     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
     44     virtual ULONG STDMETHODCALLTYPE AddRef(void);
     45     virtual ULONG STDMETHODCALLTYPE Release(void);
     46 
     47     // IWebPreferences
     48     virtual HRESULT STDMETHODCALLTYPE standardPreferences(
     49         /* [retval][out] */ IWebPreferences** standardPreferences);
     50 
     51     virtual HRESULT STDMETHODCALLTYPE initWithIdentifier(
     52         /* [in] */ BSTR anIdentifier,
     53         /* [retval][out] */ IWebPreferences** preferences);
     54 
     55     virtual HRESULT STDMETHODCALLTYPE identifier(
     56         /* [retval][out] */ BSTR* ident);
     57 
     58     virtual HRESULT STDMETHODCALLTYPE standardFontFamily(
     59         /* [retval][out] */ BSTR* family);
     60 
     61     virtual HRESULT STDMETHODCALLTYPE setStandardFontFamily(
     62         /* [in] */ BSTR family);
     63 
     64     virtual HRESULT STDMETHODCALLTYPE fixedFontFamily(
     65         /* [retval][out] */ BSTR* family);
     66 
     67     virtual HRESULT STDMETHODCALLTYPE setFixedFontFamily(
     68         /* [in] */ BSTR family);
     69 
     70     virtual HRESULT STDMETHODCALLTYPE serifFontFamily(
     71         /* [retval][out] */ BSTR* fontFamily);
     72 
     73     virtual HRESULT STDMETHODCALLTYPE setSerifFontFamily(
     74         /* [in] */ BSTR family);
     75 
     76     virtual HRESULT STDMETHODCALLTYPE sansSerifFontFamily(
     77         /* [retval][out] */ BSTR* family);
     78 
     79     virtual HRESULT STDMETHODCALLTYPE setSansSerifFontFamily(
     80         /* [in] */ BSTR family);
     81 
     82     virtual HRESULT STDMETHODCALLTYPE cursiveFontFamily(
     83         /* [retval][out] */ BSTR* family);
     84 
     85     virtual HRESULT STDMETHODCALLTYPE setCursiveFontFamily(
     86         /* [in] */ BSTR family);
     87 
     88     virtual HRESULT STDMETHODCALLTYPE fantasyFontFamily(
     89         /* [retval][out] */ BSTR* family);
     90 
     91     virtual HRESULT STDMETHODCALLTYPE setFantasyFontFamily(
     92         /* [in] */ BSTR family);
     93 
     94     virtual HRESULT STDMETHODCALLTYPE defaultFontSize(
     95         /* [retval][out] */ int* fontSize);
     96 
     97     virtual HRESULT STDMETHODCALLTYPE setDefaultFontSize(
     98         /* [in] */ int fontSize);
     99 
    100     virtual HRESULT STDMETHODCALLTYPE defaultFixedFontSize(
    101         /* [retval][out] */ int* fontSize);
    102 
    103     virtual HRESULT STDMETHODCALLTYPE setDefaultFixedFontSize(
    104         /* [in] */ int fontSize);
    105 
    106     virtual HRESULT STDMETHODCALLTYPE minimumFontSize(
    107         /* [retval][out] */ int* fontSize);
    108 
    109     virtual HRESULT STDMETHODCALLTYPE setMinimumFontSize(
    110         /* [in] */ int fontSize);
    111 
    112     virtual HRESULT STDMETHODCALLTYPE minimumLogicalFontSize(
    113         /* [retval][out] */ int* fontSize);
    114 
    115     virtual HRESULT STDMETHODCALLTYPE setMinimumLogicalFontSize(
    116         /* [in] */ int fontSize);
    117 
    118     virtual HRESULT STDMETHODCALLTYPE defaultTextEncodingName(
    119         /* [retval][out] */ BSTR* name);
    120 
    121     virtual HRESULT STDMETHODCALLTYPE setDefaultTextEncodingName(
    122         /* [in] */ BSTR name);
    123 
    124     virtual HRESULT STDMETHODCALLTYPE userStyleSheetEnabled(
    125         /* [retval][out] */ BOOL* enabled);
    126 
    127     virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetEnabled(
    128         /* [in] */ BOOL enabled);
    129 
    130     virtual HRESULT STDMETHODCALLTYPE userStyleSheetLocation(
    131         /* [retval][out] */ BSTR* location);
    132 
    133     virtual HRESULT STDMETHODCALLTYPE setUserStyleSheetLocation(
    134         /* [in] */ BSTR location);
    135 
    136     virtual HRESULT STDMETHODCALLTYPE isJavaEnabled(
    137         /* [retval][out] */ BOOL* enabled);
    138 
    139     virtual HRESULT STDMETHODCALLTYPE setJavaEnabled(
    140         /* [in] */ BOOL enabled);
    141 
    142     virtual HRESULT STDMETHODCALLTYPE isJavaScriptEnabled(
    143         /* [retval][out] */ BOOL* enabled);
    144 
    145     virtual HRESULT STDMETHODCALLTYPE setJavaScriptEnabled(
    146         /* [in] */ BOOL enabled);
    147 
    148     virtual HRESULT STDMETHODCALLTYPE javaScriptCanOpenWindowsAutomatically(
    149         /* [retval][out] */ BOOL* enabled);
    150 
    151     virtual HRESULT STDMETHODCALLTYPE setJavaScriptCanOpenWindowsAutomatically(
    152         /* [in] */ BOOL enabled);
    153 
    154     virtual HRESULT STDMETHODCALLTYPE arePlugInsEnabled(
    155         /* [retval][out] */ BOOL* enabled);
    156 
    157     virtual HRESULT STDMETHODCALLTYPE setPlugInsEnabled(
    158         /* [in] */ BOOL enabled);
    159 
    160     virtual HRESULT STDMETHODCALLTYPE allowsAnimatedImages(
    161         /* [retval][out] */ BOOL* enabled);
    162 
    163     virtual HRESULT STDMETHODCALLTYPE setAllowsAnimatedImages(
    164         /* [in] */ BOOL enabled);
    165 
    166     virtual HRESULT STDMETHODCALLTYPE allowAnimatedImageLooping(
    167         /* [retval][out] */ BOOL* enabled);
    168 
    169     virtual HRESULT STDMETHODCALLTYPE setAllowAnimatedImageLooping(
    170         /* [in] */ BOOL enabled);
    171 
    172     virtual HRESULT STDMETHODCALLTYPE setLoadsImagesAutomatically(
    173         /* [in] */ BOOL enabled);
    174 
    175     virtual HRESULT STDMETHODCALLTYPE loadsImagesAutomatically(
    176         /* [retval][out] */ BOOL* enabled);
    177 
    178     virtual HRESULT STDMETHODCALLTYPE setAutosaves(
    179         /* [in] */ BOOL enabled);
    180 
    181     virtual HRESULT STDMETHODCALLTYPE autosaves(
    182         /* [retval][out] */ BOOL* enabled);
    183 
    184     virtual HRESULT STDMETHODCALLTYPE setShouldPrintBackgrounds(
    185         /* [in] */ BOOL enabled);
    186 
    187     virtual HRESULT STDMETHODCALLTYPE shouldPrintBackgrounds(
    188         /* [retval][out] */ BOOL* enabled);
    189 
    190     virtual HRESULT STDMETHODCALLTYPE setPrivateBrowsingEnabled(
    191         /* [in] */ BOOL enabled);
    192 
    193     virtual HRESULT STDMETHODCALLTYPE privateBrowsingEnabled(
    194         /* [retval][out] */ BOOL* enabled);
    195 
    196     virtual HRESULT STDMETHODCALLTYPE setTabsToLinks(
    197         /* [in] */ BOOL enabled);
    198 
    199     virtual HRESULT STDMETHODCALLTYPE tabsToLinks(
    200         /* [retval][out] */ BOOL* enabled);
    201 
    202     virtual HRESULT STDMETHODCALLTYPE textAreasAreResizable(
    203         /* [retval][out] */ BOOL *enabled);
    204 
    205     virtual HRESULT STDMETHODCALLTYPE setTextAreasAreResizable(
    206         /* [in] */ BOOL enabled);
    207 
    208     virtual HRESULT STDMETHODCALLTYPE usesPageCache(
    209         /* [retval][out] */ BOOL *usesPageCache);
    210 
    211     virtual HRESULT STDMETHODCALLTYPE setUsesPageCache(
    212         /* [in] */ BOOL usesPageCache);
    213 
    214     virtual HRESULT STDMETHODCALLTYPE unused1();
    215     virtual HRESULT STDMETHODCALLTYPE unused2();
    216 
    217     virtual HRESULT STDMETHODCALLTYPE iconDatabaseLocation(
    218         /* [retval][out] */ BSTR* location);
    219 
    220     virtual HRESULT STDMETHODCALLTYPE setIconDatabaseLocation(
    221         /* [in] */ BSTR location);
    222 
    223     virtual HRESULT STDMETHODCALLTYPE iconDatabaseEnabled(
    224         /* [retval][out] */ BOOL* enabled);
    225 
    226     virtual HRESULT STDMETHODCALLTYPE setIconDatabaseEnabled(
    227         /* [in] */ BOOL enabled);
    228 
    229     virtual HRESULT STDMETHODCALLTYPE fontSmoothing(
    230         /* [retval][out] */ FontSmoothingType* smoothingType);
    231 
    232     virtual HRESULT STDMETHODCALLTYPE setFontSmoothing(
    233         /* [in] */ FontSmoothingType smoothingType);
    234 
    235     virtual HRESULT STDMETHODCALLTYPE editableLinkBehavior(
    236         /* [retval][out] */ WebKitEditableLinkBehavior* behavior);
    237 
    238     virtual HRESULT STDMETHODCALLTYPE setEditableLinkBehavior(
    239         /* [in] */ WebKitEditableLinkBehavior behavior);
    240 
    241     virtual HRESULT STDMETHODCALLTYPE cookieStorageAcceptPolicy(
    242         /* [retval][out] */ WebKitCookieStorageAcceptPolicy *acceptPolicy);
    243 
    244     virtual HRESULT STDMETHODCALLTYPE setCookieStorageAcceptPolicy(
    245         /* [in] */ WebKitCookieStorageAcceptPolicy acceptPolicy);
    246 
    247     virtual HRESULT STDMETHODCALLTYPE continuousSpellCheckingEnabled(
    248         /* [retval][out] */ BOOL *enabled);
    249 
    250     virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled(
    251         /* [in] */ BOOL enabled);
    252 
    253     virtual HRESULT STDMETHODCALLTYPE grammarCheckingEnabled(
    254         /* [retval][out] */ BOOL *enabled);
    255 
    256     virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled(
    257         /* [in] */ BOOL enabled);
    258 
    259     virtual HRESULT STDMETHODCALLTYPE allowContinuousSpellChecking(
    260         /* [retval][out] */ BOOL *enabled);
    261 
    262     virtual HRESULT STDMETHODCALLTYPE setAllowContinuousSpellChecking(
    263         /* [in] */ BOOL enabled);
    264 
    265     virtual HRESULT STDMETHODCALLTYPE isDOMPasteAllowed(
    266         /* [retval][out] */ BOOL *enabled);
    267 
    268     virtual HRESULT STDMETHODCALLTYPE setDOMPasteAllowed(
    269         /* [in] */ BOOL enabled);
    270 
    271     virtual HRESULT STDMETHODCALLTYPE cacheModel(
    272      /* [retval][out] */ WebCacheModel* cacheModel);
    273 
    274     virtual HRESULT STDMETHODCALLTYPE setCacheModel(
    275      /* [in] */ WebCacheModel cacheModel);
    276 
    277     virtual HRESULT STDMETHODCALLTYPE setShouldPaintCustomScrollbars(
    278     /* [in] */ BOOL shouldPaint);
    279 
    280     virtual HRESULT STDMETHODCALLTYPE shouldPaintCustomScrollbars(
    281     /* [retval][out] */ BOOL *shouldPaint);
    282 
    283     // IWebPreferencesPrivate
    284     virtual HRESULT STDMETHODCALLTYPE setDeveloperExtrasEnabled(
    285         /* [in] */ BOOL);
    286 
    287     virtual HRESULT STDMETHODCALLTYPE developerExtrasEnabled(
    288         /* [retval][out] */ BOOL*);
    289 
    290      virtual HRESULT STDMETHODCALLTYPE setAutomaticallyDetectsCacheModel(
    291          /* [in] */ BOOL automaticallyDetectsCacheModel);
    292 
    293      virtual HRESULT STDMETHODCALLTYPE automaticallyDetectsCacheModel(
    294          /* [out, retval] */ BOOL* automaticallyDetectsCacheModel);
    295 
    296     virtual HRESULT STDMETHODCALLTYPE setAuthorAndUserStylesEnabled(BOOL);
    297     virtual HRESULT STDMETHODCALLTYPE authorAndUserStylesEnabled(BOOL*);
    298 
    299     virtual HRESULT STDMETHODCALLTYPE inApplicationChromeMode(
    300         /* [retval][out] */ BOOL *enabled);
    301 
    302     virtual HRESULT STDMETHODCALLTYPE setApplicationChromeMode(
    303         /* [in] */ BOOL enabled);
    304 
    305     virtual HRESULT STDMETHODCALLTYPE setOfflineWebApplicationCacheEnabled(
    306         /* [in] */ BOOL enabled);
    307 
    308     virtual HRESULT STDMETHODCALLTYPE offlineWebApplicationCacheEnabled(
    309         /* [retval][out] */ BOOL *enabled);
    310 
    311     virtual HRESULT STDMETHODCALLTYPE setDatabasesEnabled(
    312         /* [in] */ BOOL enabled);
    313 
    314     virtual HRESULT STDMETHODCALLTYPE databasesEnabled(
    315         /* [retval][out] */ BOOL *enabled);
    316 
    317     virtual HRESULT STDMETHODCALLTYPE setLocalStorageEnabled(
    318         /* [in] */ BOOL enabled);
    319 
    320     virtual HRESULT STDMETHODCALLTYPE localStorageEnabled(
    321         /* [retval][out] */ BOOL *enabled);
    322 
    323     virtual HRESULT STDMETHODCALLTYPE localStorageDatabasePath(
    324         /* [out, retval] */ BSTR* location);
    325 
    326     virtual HRESULT STDMETHODCALLTYPE setLocalStorageDatabasePath(
    327         /* [in] */ BSTR location);
    328 
    329     virtual HRESULT STDMETHODCALLTYPE experimentalNotificationsEnabled(
    330         /* [retval][out] */ BOOL *enabled);
    331 
    332     virtual HRESULT STDMETHODCALLTYPE setExperimentalNotificationsEnabled(
    333         /* [in] */ BOOL enabled);
    334 
    335     virtual HRESULT STDMETHODCALLTYPE setShouldPaintNativeControls(
    336     /* [in] */ BOOL shouldPaint);
    337 
    338     virtual HRESULT STDMETHODCALLTYPE shouldPaintNativeControls(
    339     /* [retval][out] */ BOOL *shouldPaint);
    340 
    341     virtual HRESULT STDMETHODCALLTYPE setZoomsTextOnly(
    342     /* [retval][out] */ BOOL zoomsTextOnly);
    343 
    344     virtual HRESULT STDMETHODCALLTYPE zoomsTextOnly(
    345     /* [retval][out] */ BOOL *zoomsTextOnly);
    346 
    347     virtual HRESULT STDMETHODCALLTYPE fontSmoothingContrast(
    348     /* [retval][out] */ float* contrast);
    349 
    350     virtual HRESULT STDMETHODCALLTYPE setFontSmoothingContrast(
    351     /* [in] */ float contrast);
    352 
    353     virtual HRESULT STDMETHODCALLTYPE isWebSecurityEnabled(
    354     /* [retval][out] */ BOOL* enabled);
    355 
    356     virtual HRESULT STDMETHODCALLTYPE setWebSecurityEnabled(
    357     /* [in] */ BOOL enabled);
    358 
    359     virtual HRESULT STDMETHODCALLTYPE allowUniversalAccessFromFileURLs(
    360     /* [retval][out] */ BOOL* allowAccess);
    361 
    362     virtual HRESULT STDMETHODCALLTYPE setAllowUniversalAccessFromFileURLs(
    363     /* [in] */ BOOL allowAccess);
    364 
    365     virtual HRESULT STDMETHODCALLTYPE isXSSAuditorEnabled(
    366     /* [retval][out] */ BOOL* enabled);
    367 
    368     virtual HRESULT STDMETHODCALLTYPE setXSSAuditorEnabled(
    369     /* [in] */ BOOL enabled);
    370 
    371     virtual HRESULT STDMETHODCALLTYPE setShouldUseHighResolutionTimers(
    372     /* [in] */ BOOL useHighResolutionTimers);
    373 
    374     virtual HRESULT STDMETHODCALLTYPE shouldUseHighResolutionTimers(
    375     /* [retval][out] */ BOOL* useHighResolutionTimers);
    376 
    377     virtual HRESULT STDMETHODCALLTYPE setPluginAllowedRunTime(
    378     /* [in] */ UINT allowedRunTime);
    379 
    380     virtual HRESULT STDMETHODCALLTYPE pluginAllowedRunTime(
    381     /* [retval][out] */ UINT* allowedRunTime);
    382 
    383     virtual HRESULT STDMETHODCALLTYPE isFrameSetFlatteningEnabled(
    384     /* [retval][out] */ BOOL* enabled);
    385 
    386     virtual HRESULT STDMETHODCALLTYPE setFrameSetFlatteningEnabled(
    387     /* [in] */ BOOL enabled);
    388 
    389     virtual HRESULT STDMETHODCALLTYPE setPreferenceForTest(
    390     /* [in] */ BSTR key,
    391     /* [in] */ BSTR value);
    392 
    393     virtual HRESULT STDMETHODCALLTYPE setAcceleratedCompositingEnabled(BOOL);
    394     virtual HRESULT STDMETHODCALLTYPE acceleratedCompositingEnabled(BOOL*);
    395 
    396     virtual HRESULT STDMETHODCALLTYPE setCustomDragCursorsEnabled(BOOL);
    397     virtual HRESULT STDMETHODCALLTYPE customDragCursorsEnabled(BOOL*);
    398 
    399     // WebPreferences
    400 
    401     // This method accesses a different preference key than developerExtrasEnabled.
    402     // See <rdar://5343767> for the justification.
    403     bool developerExtrasDisabledByOverride();
    404 
    405     static BSTR webPreferencesChangedNotification();
    406     static BSTR webPreferencesRemovedNotification();
    407 
    408     static void setInstance(WebPreferences* instance, BSTR identifier);
    409     static void removeReferenceForIdentifier(BSTR identifier);
    410     static WebPreferences* sharedStandardPreferences();
    411 
    412     // From WebHistory.h
    413     HRESULT historyItemLimit(int* limit);
    414     HRESULT setHistoryItemLimit(int limit);
    415     HRESULT historyAgeInDaysLimit(int* limit);
    416     HRESULT setHistoryAgeInDaysLimit(int limit);
    417 
    418      void willAddToWebView();
    419      void didRemoveFromWebView();
    420 
    421     HRESULT postPreferencesChangesNotification();
    422 
    423 protected:
    424     void setValueForKey(CFStringRef key, CFPropertyListRef value);
    425     RetainPtr<CFPropertyListRef> valueForKey(CFStringRef key);
    426     BSTR stringValueForKey(CFStringRef key);
    427     int integerValueForKey(CFStringRef key);
    428     BOOL boolValueForKey(CFStringRef key);
    429     float floatValueForKey(CFStringRef key);
    430     LONGLONG longlongValueForKey(CFStringRef key);
    431     void setStringValue(CFStringRef key, LPCTSTR value);
    432     void setIntegerValue(CFStringRef key, int value);
    433     void setBoolValue(CFStringRef key, BOOL value);
    434     void setFloatValue(CFStringRef key, float value);
    435     void setLongLongValue(CFStringRef key, LONGLONG value);
    436     static WebPreferences* getInstanceForIdentifier(BSTR identifier);
    437     static void initializeDefaultSettings();
    438     void save();
    439     void load();
    440     void migrateWebKitPreferencesToCFPreferences();
    441     void copyWebKitPreferencesToCFPreferences(CFDictionaryRef);
    442 
    443 protected:
    444     ULONG m_refCount;
    445     RetainPtr<CFMutableDictionaryRef> m_privatePrefs;
    446     WebCore::BString m_identifier;
    447     bool m_autoSaves;
    448     bool m_automaticallyDetectsCacheModel;
    449     unsigned m_numWebViews;
    450 };
    451 
    452 #endif
    453