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 10ExtensionPrefStore::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 18void ExtensionPrefStore::OnInitializationCompleted() { 19 NotifyInitializationCompleted(); 20} 21 22void 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 34void ExtensionPrefStore::OnExtensionPrefValueMapDestruction() { 35 CHECK(extension_pref_value_map_); 36 extension_pref_value_map_->RemoveObserver(this); 37 extension_pref_value_map_ = NULL; 38} 39 40ExtensionPrefStore::~ExtensionPrefStore() { 41 if (extension_pref_value_map_) 42 extension_pref_value_map_->RemoveObserver(this); 43} 44