Home | History | Annotate | Download | only in UIProcess
      1 /*
      2  * Copyright (C) 2010, 2011 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 INC. AND ITS CONTRIBUTORS ``AS IS''
     14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
     17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     23  * THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #include "config.h"
     27 #include "WebPreferences.h"
     28 
     29 #include "WebPageGroup.h"
     30 
     31 namespace WebKit {
     32 
     33 WebPreferences::WebPreferences()
     34 {
     35     platformInitializeStore();
     36 }
     37 
     38 WebPreferences::WebPreferences(const String& identifier)
     39     : m_identifier(identifier)
     40 {
     41     platformInitializeStore();
     42 }
     43 
     44 WebPreferences::~WebPreferences()
     45 {
     46 }
     47 
     48 void WebPreferences::addPageGroup(WebPageGroup* pageGroup)
     49 {
     50     m_pageGroups.add(pageGroup);
     51 }
     52 
     53 void WebPreferences::removePageGroup(WebPageGroup* pageGroup)
     54 {
     55     m_pageGroups.remove(pageGroup);
     56 }
     57 
     58 void WebPreferences::update()
     59 {
     60     for (HashSet<WebPageGroup*>::iterator it = m_pageGroups.begin(), end = m_pageGroups.end(); it != end; ++it)
     61         (*it)->preferencesDidChange();
     62 }
     63 
     64 void WebPreferences::updateStringValueForKey(const String& key, const String& value)
     65 {
     66     platformUpdateStringValueForKey(key, value);
     67     update(); // FIXME: Only send over the changed key and value.
     68 }
     69 
     70 void WebPreferences::updateBoolValueForKey(const String& key, bool value)
     71 {
     72     platformUpdateBoolValueForKey(key, value);
     73     update(); // FIXME: Only send over the changed key and value.
     74 }
     75 
     76 void WebPreferences::updateUInt32ValueForKey(const String& key, uint32_t value)
     77 {
     78     platformUpdateUInt32ValueForKey(key, value);
     79     update(); // FIXME: Only send over the changed key and value.
     80 }
     81 
     82 void WebPreferences::updateDoubleValueForKey(const String& key, double value)
     83 {
     84     platformUpdateDoubleValueForKey(key, value);
     85     update(); // FIXME: Only send over the changed key and value.
     86 }
     87 
     88 #define DEFINE_PREFERENCE_GETTER_AND_SETTERS(KeyUpper, KeyLower, TypeName, Type, DefaultValue) \
     89     void WebPreferences::set##KeyUpper(const Type& value) \
     90     { \
     91         if (!m_store.set##TypeName##ValueForKey(WebPreferencesKey::KeyLower##Key(), value)) \
     92             return; \
     93         update##TypeName##ValueForKey(WebPreferencesKey::KeyLower##Key(), value); \
     94         \
     95     } \
     96     \
     97     Type WebPreferences::KeyLower() const \
     98     { \
     99         return m_store.get##TypeName##ValueForKey(WebPreferencesKey::KeyLower##Key()); \
    100     } \
    101 
    102 FOR_EACH_WEBKIT_PREFERENCE(DEFINE_PREFERENCE_GETTER_AND_SETTERS)
    103 
    104 #undef DEFINE_PREFERENCE_GETTER_AND_SETTERS
    105 
    106 } // namespace WebKit
    107