Changeset 83918 in webkit


Ignore:
Timestamp:
Apr 14, 2011 5:47:25 PM (13 years ago)
Author:
weinig@apple.com
Message:

2011-04-14 Sam Weinig <sam@webkit.org>

Reviewed by Anders Carlsson.

Add CFPreference based backend for WebKit2 preferences
https://bugs.webkit.org/show_bug.cgi?id=58605

  • UIProcess/cf/WebPreferencesCF.cpp: (WebKit::cfStringFromWebCoreString): (WebKit::makeKey): (WebKit::setStringValueIfInUserDefaults): (WebKit::setBoolValueIfInUserDefaults): (WebKit::setUInt32ValueIfInUserDefaults): (WebKit::setDoubleValueIfInUserDefaults): (WebKit::WebPreferences::platformInitializeStore): (WebKit::WebPreferences::platformUpdateStringValueForKey): (WebKit::WebPreferences::platformUpdateBoolValueForKey): (WebKit::WebPreferences::platformUpdateUInt32ValueForKey): (WebKit::WebPreferences::platformUpdateDoubleValueForKey): Implement platform functions using CFPreferences API.
Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r83909 r83918  
     12011-04-14  Sam Weinig  <sam@webkit.org>
     2
     3        Reviewed by Anders Carlsson.
     4
     5        Add CFPreference based backend for WebKit2 preferences
     6        https://bugs.webkit.org/show_bug.cgi?id=58605
     7
     8        * UIProcess/cf/WebPreferencesCF.cpp:
     9        (WebKit::cfStringFromWebCoreString):
     10        (WebKit::makeKey):
     11        (WebKit::setStringValueIfInUserDefaults):
     12        (WebKit::setBoolValueIfInUserDefaults):
     13        (WebKit::setUInt32ValueIfInUserDefaults):
     14        (WebKit::setDoubleValueIfInUserDefaults):
     15        (WebKit::WebPreferences::platformInitializeStore):
     16        (WebKit::WebPreferences::platformUpdateStringValueForKey):
     17        (WebKit::WebPreferences::platformUpdateBoolValueForKey):
     18        (WebKit::WebPreferences::platformUpdateUInt32ValueForKey):
     19        (WebKit::WebPreferences::platformUpdateDoubleValueForKey):
     20        Implement platform functions using CFPreferences API.
     21
    1222011-04-14  Brady Eidson  <beidson@apple.com>
    223
  • trunk/Source/WebKit2/UIProcess/cf/WebPreferencesCF.cpp

    r76916 r83918  
    2727#include "WebPreferences.h"
    2828
     29#include <wtf/RetainPtr.h>
     30#include <wtf/text/StringConcatenate.h>
     31
    2932#if !PLATFORM(MAC)
    3033
    3134namespace WebKit {
    3235
     36static RetainPtr<CFStringRef> cfStringFromWebCoreString(const String& string)
     37{
     38    return RetainPtr<CFStringRef>(AdoptCF, CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar*>(string.characters()), string.length()));
     39}
     40
     41static inline RetainPtr<CFStringRef> makeKey(const String& identifier, const String& baseKey)
     42{
     43    return cfStringFromWebCoreString(makeString(identifier, ".WebKit2", baseKey));
     44}
     45
     46static void setStringValueIfInUserDefaults(const String& identifier, const String& baseKey, WebPreferencesStore& store)
     47{
     48    RetainPtr<CFPropertyListRef> value(AdoptCF, CFPreferencesCopyAppValue(makeKey(identifier, baseKey).get(), kCFPreferencesCurrentApplication));
     49    if (!value)
     50        return;
     51    if (CFGetTypeID(value.get()) != CFStringGetTypeID())
     52        return;
     53
     54    store.setStringValueForKey(baseKey, (CFStringRef)value.get());
     55}
     56
     57static void setBoolValueIfInUserDefaults(const String& identifier, const String& baseKey, WebPreferencesStore& store)
     58{
     59    RetainPtr<CFPropertyListRef> value(AdoptCF, CFPreferencesCopyAppValue(makeKey(identifier, baseKey).get(), kCFPreferencesCurrentApplication));
     60    if (!value)
     61        return;
     62    if (CFGetTypeID(value.get()) != CFBooleanGetTypeID())
     63        return;
     64
     65    store.setBoolValueForKey(baseKey, CFBooleanGetValue((CFBooleanRef)value.get()) ? true : false);
     66}
     67
     68static void setUInt32ValueIfInUserDefaults(const String& identifier, const String& baseKey, WebPreferencesStore& store)
     69{
     70    RetainPtr<CFPropertyListRef> value(AdoptCF, CFPreferencesCopyAppValue(makeKey(identifier, baseKey).get(), kCFPreferencesCurrentApplication));
     71    if (!value)
     72        return;
     73    if (CFGetTypeID(value.get()) != CFNumberGetTypeID())
     74        return;
     75    int32_t intValue = 0;
     76    if (!CFNumberGetValue((CFNumberRef)value.get(), kCFNumberSInt32Type, &intValue))
     77        return;
     78
     79    store.setUInt32ValueForKey(baseKey, intValue);
     80}
     81
     82static void setDoubleValueIfInUserDefaults(const String& identifier, const String& baseKey, WebPreferencesStore& store)
     83{
     84    RetainPtr<CFPropertyListRef> value(AdoptCF, CFPreferencesCopyAppValue(makeKey(identifier, baseKey).get(), kCFPreferencesCurrentApplication));
     85    if (!value)
     86        return;
     87    if (CFGetTypeID(value.get()) != CFNumberGetTypeID())
     88        return;
     89    double doubleValue = 0;
     90    if (!CFNumberGetValue((CFNumberRef)value.get(), kCFNumberDoubleType, &doubleValue))
     91        return;
     92
     93    store.setDoubleValueForKey(baseKey, doubleValue);
     94}
     95
    3396void WebPreferences::platformInitializeStore()
    3497{
     98    if (!m_identifier)
     99        return;
     100
     101#define INITIALIZE_PREFERENCE_FROM_NSUSERDEFAULTS(KeyUpper, KeyLower, TypeName, Type, DefaultValue) \
     102    set##TypeName##ValueIfInUserDefaults(m_identifier, WebPreferencesKey::KeyLower##Key(), m_store);
     103
     104    FOR_EACH_WEBKIT_PREFERENCE(INITIALIZE_PREFERENCE_FROM_NSUSERDEFAULTS)
     105
     106#undef INITIALIZE_PREFERENCE_FROM_NSUSERDEFAULTS
     107
    35108}
    36109
    37 void WebPreferences::platformUpdateStringValueForKey(const String&, const String&)
     110void WebPreferences::platformUpdateStringValueForKey(const String& key, const String& value)
    38111{
     112    if (!m_identifier)
     113        return;
     114
     115    CFPreferencesSetAppValue(makeKey(m_identifier, key).get(), cfStringFromWebCoreString(value).get(), kCFPreferencesCurrentApplication);
    39116}
    40117
    41 void WebPreferences::platformUpdateBoolValueForKey(const String&, bool)
     118void WebPreferences::platformUpdateBoolValueForKey(const String& key, bool value)
    42119{
     120    if (!m_identifier)
     121        return;
     122
     123    CFPreferencesSetAppValue(makeKey(m_identifier, key).get(), value ? kCFBooleanTrue : kCFBooleanFalse, kCFPreferencesCurrentApplication);
    43124}
    44125
    45 void WebPreferences::platformUpdateUInt32ValueForKey(const String&, uint32_t)
     126void WebPreferences::platformUpdateUInt32ValueForKey(const String& key, uint32_t value)
    46127{
     128    if (!m_identifier)
     129        return;
     130
     131    RetainPtr<CFNumberRef> number(AdoptCF, CFNumberCreate(0, kCFNumberSInt32Type, &value));
     132    CFPreferencesSetAppValue(makeKey(m_identifier, key).get(), number.get(), kCFPreferencesCurrentApplication);
    47133}
    48134
    49 void WebPreferences::platformUpdateDoubleValueForKey(const String&, double)
     135void WebPreferences::platformUpdateDoubleValueForKey(const String& key, double value)
    50136{
     137    if (!m_identifier)
     138        return;
     139
     140    RetainPtr<CFNumberRef> number(AdoptCF, CFNumberCreate(0, kCFNumberDoubleType, &value));
     141    CFPreferencesSetAppValue(makeKey(m_identifier, key).get(), number.get(), kCFPreferencesCurrentApplication);
    51142}
    52143
Note: See TracChangeset for help on using the changeset viewer.