12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef BASE_PREFS_TESTING_PREF_SERVICE_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define BASE_PREFS_TESTING_PREF_SERVICE_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_registry.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/testing_pref_store.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefNotifierImpl; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefRegistrySimple; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TestingPrefStore; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// A PrefService subclass for testing. It operates totally in memory and 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// provides additional API for manipulating preferences at the different levels 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// (managed, extension, user) conveniently. 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use this via its specializations, e.g. TestingPrefServiceSimple. 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template <class SuperPrefService, class ConstructionPrefRegistry> 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TestingPrefServiceBase : public SuperPrefService { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TestingPrefServiceBase(); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Read the value of a preference from the managed layer. Returns NULL if the 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // preference is not defined at the managed layer. 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const base::Value* GetManagedPref(const char* path) const; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Set a preference on the managed layer and fire observers if the preference 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // changed. Assumes ownership of |value|. 347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetManagedPref(const char* path, base::Value* value); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Clear the preference on the managed layer and fire observers if the 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // preference has been defined previously. 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveManagedPref(const char* path); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Similar to the above, but for user preferences. 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const base::Value* GetUserPref(const char* path) const; 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetUserPref(const char* path, base::Value* value); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveUserPref(const char* path); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Similar to the above, but for recommended policy preferences. 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const base::Value* GetRecommendedPref(const char* path) const; 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetRecommendedPref(const char* path, base::Value* value); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveRecommendedPref(const char* path); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Do-nothing implementation for TestingPrefService. 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static void HandleReadError(PersistentPrefStore::PrefReadError error) {} 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceBase( 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefStore* managed_prefs, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefStore* user_prefs, 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefStore* recommended_prefs, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ConstructionPrefRegistry* pref_registry, 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefNotifierImpl* pref_notifier); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Reads the value of the preference indicated by |path| from |pref_store|. 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns NULL if the preference was not found. 647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const base::Value* GetPref(TestingPrefStore* pref_store, 657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const char* path) const; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Sets the value for |path| in |pref_store|. 687d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void SetPref(TestingPrefStore* pref_store, const char* path, 697d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::Value* value); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Removes the preference identified by |path| from |pref_store|. 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemovePref(TestingPrefStore* pref_store, const char* path); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Pointers to the pref stores our value store uses. 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<TestingPrefStore> managed_prefs_; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<TestingPrefStore> user_prefs_; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<TestingPrefStore> recommended_prefs_; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestingPrefServiceBase); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Test version of PrefService. 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TestingPrefServiceSimple 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : public TestingPrefServiceBase<PrefService, PrefRegistry> { 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSimple(); 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TestingPrefServiceSimple(); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This is provided as a convenience for registering preferences on 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // an existing TestingPrefServiceSimple instance. On a production 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // PrefService you would do all registrations before constructing 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // it, passing it a PrefRegistry via its constructor (or via 93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // e.g. PrefServiceFactory). 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefRegistrySimple* registry(); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TestingPrefServiceSimple); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<> 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TestingPrefServiceBase<PrefService, PrefRegistry>::TestingPrefServiceBase( 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefStore* managed_prefs, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefStore* user_prefs, 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefStore* recommended_prefs, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefRegistry* pref_registry, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefNotifierImpl* pref_notifier); 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TestingPrefServiceBase< 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::~TestingPrefServiceBase() { 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)const base::Value* TestingPrefServiceBase< 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::GetManagedPref( 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* path) const { 1177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return GetPref(managed_prefs_.get(), path); 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestingPrefServiceBase< 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::SetManagedPref( 1237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const char* path, base::Value* value) { 124868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetPref(managed_prefs_.get(), path, value); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestingPrefServiceBase< 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::RemoveManagedPref( 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* path) { 131868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RemovePref(managed_prefs_.get(), path); 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)const base::Value* TestingPrefServiceBase< 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::GetUserPref( 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* path) const { 1387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return GetPref(user_prefs_.get(), path); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestingPrefServiceBase< 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::SetUserPref( 1447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const char* path, base::Value* value) { 145868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetPref(user_prefs_.get(), path, value); 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestingPrefServiceBase< 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::RemoveUserPref( 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* path) { 152868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RemovePref(user_prefs_.get(), path); 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)const base::Value* TestingPrefServiceBase< 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::GetRecommendedPref( 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* path) const { 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return GetPref(recommended_prefs_, path); 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestingPrefServiceBase< 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::SetRecommendedPref( 1657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const char* path, base::Value* value) { 166868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SetPref(recommended_prefs_.get(), path, value); 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestingPrefServiceBase< 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::RemoveRecommendedPref( 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* path) { 1737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) RemovePref(recommended_prefs_.get(), path); 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)const base::Value* TestingPrefServiceBase< 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::GetPref( 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefStore* pref_store, const char* path) const { 1807d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const base::Value* res; 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return pref_store->GetValue(path, &res) ? res : NULL; 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestingPrefServiceBase< 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::SetPref( 1877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) TestingPrefStore* pref_store, const char* path, base::Value* value) { 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_store->SetValue(path, value); 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)template<class SuperPrefService, class ConstructionPrefRegistry> 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TestingPrefServiceBase< 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SuperPrefService, ConstructionPrefRegistry>::RemovePref( 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefStore* pref_store, const char* path) { 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_store->RemoveValue(path); 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // BASE_PREFS_TESTING_PREF_SERVICE_H_ 199