| Index: chrome/browser/prefs/pref_service.h | 
| diff --git a/chrome/browser/prefs/pref_service.h b/chrome/browser/prefs/pref_service.h | 
| index f17bbbd2cfd358fefd1fe9d6c8a831e4e2206ca7..626a5e462d5d5e38341b6b399a6fd46cca92db3b 100644 | 
| --- a/chrome/browser/prefs/pref_service.h | 
| +++ b/chrome/browser/prefs/pref_service.h | 
| @@ -1,4 +1,4 @@ | 
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| // Use of this source code is governed by a BSD-style license that can be | 
| // found in the LICENSE file. | 
|  | 
| @@ -42,7 +42,8 @@ class PrefService : public base::NonThreadSafe { | 
| // dictionary (a branch), or list.  You shouldn't need to construct this on | 
| // your own; use the PrefService::Register*Pref methods instead. | 
| Preference(const PrefService* service, | 
| -               const char* name); | 
| +               const char* name, | 
| +               Value::ValueType type); | 
| ~Preference() {} | 
|  | 
| // Returns the name of the Preference (i.e., the key, e.g., | 
| @@ -92,6 +93,8 @@ class PrefService : public base::NonThreadSafe { | 
|  | 
| std::string name_; | 
|  | 
| +    Value::ValueType type_; | 
| + | 
| // Reference to the PrefService in which this pref was created. | 
| const PrefService* pref_service_; | 
|  | 
| @@ -109,6 +112,12 @@ class PrefService : public base::NonThreadSafe { | 
| PrefStore* extension_pref_store, | 
| Profile* profile); | 
|  | 
| +  // Creates an incognito copy of the pref service that shares most pref stores | 
| +  // but uses a fresh non-persistent overlay for the user pref store and an | 
| +  // individual extension pref store (to cache the effective extension prefs for | 
| +  // incognito windows). | 
| +  PrefService* CreateIncognitoPrefService(PrefStore* incognito_extension_prefs); | 
| + | 
| virtual ~PrefService(); | 
|  | 
| // Reloads the data from file. This should only be called when the importer | 
| @@ -230,7 +239,8 @@ class PrefService : public base::NonThreadSafe { | 
| PrefStore* extension_prefs, | 
| PrefStore* command_line_prefs, | 
| PersistentPrefStore* user_prefs, | 
| -              PrefStore* recommended_prefs); | 
| +              PrefStore* recommended_prefs, | 
| +              DefaultPrefStore* default_store); | 
|  | 
| // The PrefNotifier handles registering and notifying preference observers. | 
| // It is created and owned by this PrefService. Subclasses may access it for | 
| @@ -272,14 +282,20 @@ class PrefService : public base::NonThreadSafe { | 
| // and owned by this PrefService. Subclasses may access it for unit testing. | 
| scoped_refptr<PrefValueStore> pref_value_store_; | 
|  | 
| -  // The persistent pref store used for actual user data. | 
| -  PersistentPrefStore* user_pref_store_; | 
| - | 
| -  // Points to the default pref store we passed to the PrefValueStore. | 
| -  DefaultPrefStore* default_store_; | 
| - | 
| -  // A set of all the registered Preference objects. | 
| -  PreferenceSet prefs_; | 
| +  // Pref Stores and profile that we passed to the PrefValueStore. | 
| +  scoped_refptr<PrefStore> managed_platform_prefs_; | 
| +  scoped_refptr<PrefStore> device_management_prefs_; | 
| +  scoped_refptr<PrefStore> extension_prefs_; | 
| +  scoped_refptr<PrefStore> command_line_prefs_; | 
| +  scoped_refptr<PrefStore> recommended_prefs_; | 
| +  scoped_refptr<PersistentPrefStore> user_pref_store_; | 
| +  scoped_refptr<DefaultPrefStore> default_store_; | 
| +  Profile* profile_; | 
| + | 
| +  // Local cache of registered Preference objects. The default_store_ | 
| +  // is authoritative with respect to what the types and default values | 
| +  // of registered preferences are. | 
| +  mutable PreferenceSet prefs_; | 
|  | 
| DISALLOW_COPY_AND_ASSIGN(PrefService); | 
| }; | 
|  |