Home | History | Annotate | Download | only in service
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/service/service_process_prefs.h"
      6 
      7 #include "base/message_loop/message_loop_proxy.h"
      8 #include "base/prefs/pref_filter.h"
      9 #include "base/values.h"
     10 
     11 ServiceProcessPrefs::ServiceProcessPrefs(
     12     const base::FilePath& pref_filename,
     13     base::SequencedTaskRunner* task_runner)
     14     : prefs_(new JsonPrefStore(pref_filename,
     15                                task_runner,
     16                                scoped_ptr<PrefFilter>())) {
     17 }
     18 
     19 ServiceProcessPrefs::~ServiceProcessPrefs() {}
     20 
     21 void ServiceProcessPrefs::ReadPrefs() {
     22   prefs_->ReadPrefs();
     23 }
     24 
     25 void ServiceProcessPrefs::WritePrefs() {
     26   prefs_->CommitPendingWrite();
     27 }
     28 
     29 std::string ServiceProcessPrefs::GetString(
     30     const std::string& key,
     31     const std::string& default_value) const {
     32   const base::Value* value;
     33   std::string result;
     34   if (!prefs_->GetValue(key, &value) || !value->GetAsString(&result))
     35     return default_value;
     36 
     37   return result;
     38 }
     39 
     40 void ServiceProcessPrefs::SetString(const std::string& key,
     41                                     const std::string& value) {
     42   prefs_->SetValue(key, new base::StringValue(value));
     43 }
     44 
     45 bool ServiceProcessPrefs::GetBoolean(const std::string& key,
     46                                      bool default_value) const {
     47   const base::Value* value;
     48   bool result = false;
     49   if (!prefs_->GetValue(key, &value) || !value->GetAsBoolean(&result))
     50     return default_value;
     51 
     52   return result;
     53 }
     54 
     55 void ServiceProcessPrefs::SetBoolean(const std::string& key, bool value) {
     56   prefs_->SetValue(key, new base::FundamentalValue(value));
     57 }
     58 
     59 int ServiceProcessPrefs::GetInt(const std::string& key,
     60                                 int default_value) const {
     61   const base::Value* value;
     62   int result = default_value;
     63   if (!prefs_->GetValue(key, &value) || !value->GetAsInteger(&result))
     64     return default_value;
     65 
     66   return result;
     67 }
     68 
     69 void ServiceProcessPrefs::SetInt(const std::string& key, int value) {
     70   prefs_->SetValue(key, new base::FundamentalValue(value));
     71 }
     72 
     73 const base::DictionaryValue* ServiceProcessPrefs::GetDictionary(
     74     const std::string& key) const {
     75   const base::Value* value;
     76   if (!prefs_->GetValue(key, &value) ||
     77       !value->IsType(base::Value::TYPE_DICTIONARY)) {
     78     return NULL;
     79   }
     80 
     81   return static_cast<const base::DictionaryValue*>(value);
     82 }
     83 
     84 const base::ListValue* ServiceProcessPrefs::GetList(
     85     const std::string& key) const {
     86   const base::Value* value;
     87   if (!prefs_->GetValue(key, &value) || !value->IsType(base::Value::TYPE_LIST))
     88     return NULL;
     89 
     90   return static_cast<const base::ListValue*>(value);
     91 }
     92 
     93 void ServiceProcessPrefs::SetValue(const std::string& key, base::Value* value) {
     94   prefs_->SetValue(key, value);
     95 }
     96 
     97 void ServiceProcessPrefs::RemovePref(const std::string& key) {
     98   prefs_->RemoveValue(key);
     99 }
    100 
    101