Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2012 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/browser/extensions/extension_pref_store.h"
      6 
      7 #include "base/values.h"
      8 #include "chrome/browser/extensions/extension_pref_value_map.h"
      9 
     10 ExtensionPrefStore::ExtensionPrefStore(
     11     ExtensionPrefValueMap* extension_pref_value_map,
     12     bool incognito_pref_store)
     13     : extension_pref_value_map_(extension_pref_value_map),
     14       incognito_pref_store_(incognito_pref_store) {
     15   extension_pref_value_map_->AddObserver(this);
     16 }
     17 
     18 void ExtensionPrefStore::OnInitializationCompleted() {
     19   NotifyInitializationCompleted();
     20 }
     21 
     22 void ExtensionPrefStore::OnPrefValueChanged(const std::string& key) {
     23   CHECK(extension_pref_value_map_);
     24   const Value *winner =
     25       extension_pref_value_map_->GetEffectivePrefValue(key,
     26                                                        incognito_pref_store_,
     27                                                        NULL);
     28   if (winner)
     29     SetValue(key, winner->DeepCopy());
     30   else
     31     RemoveValue(key);
     32 }
     33 
     34 void ExtensionPrefStore::OnExtensionPrefValueMapDestruction() {
     35   CHECK(extension_pref_value_map_);
     36   extension_pref_value_map_->RemoveObserver(this);
     37   extension_pref_value_map_ = NULL;
     38 }
     39 
     40 ExtensionPrefStore::~ExtensionPrefStore() {
     41   if (extension_pref_value_map_)
     42     extension_pref_value_map_->RemoveObserver(this);
     43 }
     44