Index: chrome/browser/prefs/pref_service.cc |
diff --git a/chrome/browser/prefs/pref_service.cc b/chrome/browser/prefs/pref_service.cc |
index 215fbd3bbf91b5c7300260a31899ee0d2c81bfe8..1e9b5e311274c2109c34d42865f2f2023e333cf8 100644 |
--- a/chrome/browser/prefs/pref_service.cc |
+++ b/chrome/browser/prefs/pref_service.cc |
@@ -24,13 +24,13 @@ |
#include "chrome/browser/policy/configuration_policy_pref_store.h" |
#include "chrome/browser/prefs/command_line_pref_store.h" |
#include "chrome/browser/prefs/default_pref_store.h" |
-#include "chrome/browser/prefs/incognito_user_pref_store.h" |
-#include "chrome/browser/prefs/per_tab_user_pref_store.h" |
+#include "chrome/browser/prefs/overlay_user_pref_store.h" |
#include "chrome/browser/prefs/pref_model_associator.h" |
#include "chrome/browser/prefs/pref_notifier_impl.h" |
#include "chrome/browser/prefs/pref_value_store.h" |
#include "chrome/browser/ui/profile_error_dialog.h" |
#include "chrome/common/json_pref_store.h" |
+#include "chrome/common/pref_names.h" |
#include "content/public/browser/browser_thread.h" |
#include "grit/chromium_strings.h" |
#include "grit/generated_resources.h" |
@@ -111,6 +111,66 @@ class ReadErrorHandler : public PersistentPrefStore::ReadErrorDelegate { |
} |
}; |
+static void InitIncognitoUserPrefStore(OverlayUserPrefStore* pref_store) { |
Bernhard Bauer
2011/12/30 17:54:16
You could move this into browser_prefs.cc, where t
|
+ // List of keys that cannot be changed in the user prefs file by the incognito |
+ // profile. All preferences that store information about the browsing history |
+ // or behavior of the user should have this property. |
+ pref_store->RegisterOverlayPref(prefs::kBrowserWindowPlacement); |
+} |
+ |
+static void InitPerTabUserPrefStore(OverlayUserPrefStore* pref_store) { |
+ // List of keys that have per-tab and per-profile (Global) counterpart. |
+ // Setting a per-profile preference affects all tabs sharing the profile, |
+ // unless a tab has specified its own per-tab property value. Changing a |
+ // per-profile preference on a per-tab pref store delegates to underlay |
+ // per-profile pref store. |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitJavascriptEnabled, |
+ prefs::kWebKitGlobalJavascriptEnabled); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitJavascriptCanOpenWindowsAutomatically, |
+ prefs::kWebKitGlobalJavascriptCanOpenWindowsAutomatically); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitLoadsImagesAutomatically, |
+ prefs::kWebKitGlobalLoadsImagesAutomatically); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitPluginsEnabled, |
+ prefs::kWebKitGlobalPluginsEnabled); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kDefaultCharset, |
+ prefs::kGlobalDefaultCharset); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitStandardFontFamily, |
+ prefs::kWebKitGlobalStandardFontFamily); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitFixedFontFamily, |
+ prefs::kWebKitGlobalFixedFontFamily); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitSerifFontFamily, |
+ prefs::kWebKitGlobalSerifFontFamily); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitSansSerifFontFamily, |
+ prefs::kWebKitGlobalSansSerifFontFamily); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitCursiveFontFamily, |
+ prefs::kWebKitGlobalCursiveFontFamily); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitFantasyFontFamily, |
+ prefs::kWebKitGlobalFantasyFontFamily); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitDefaultFontSize, |
+ prefs::kWebKitGlobalDefaultFontSize); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitDefaultFixedFontSize, |
+ prefs::kWebKitGlobalDefaultFixedFontSize); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitMinimumFontSize, |
+ prefs::kWebKitGlobalMinimumFontSize); |
+ pref_store->RegisterOverlayPref( |
+ prefs::kWebKitMinimumLogicalFontSize, |
+ prefs::kWebKitGlobalMinimumLogicalFontSize); |
+} |
+ |
} // namespace |
// static |
@@ -180,8 +240,9 @@ PrefService* PrefService::CreatePrefService(const FilePath& pref_filename, |
PrefService* PrefService::CreateIncognitoPrefService( |
PrefStore* incognito_extension_prefs) { |
PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); |
- PersistentPrefStore* incognito_pref_store = |
- new IncognitoUserPrefStore(user_pref_store_.get()); |
+ OverlayUserPrefStore* incognito_pref_store = |
+ new OverlayUserPrefStore(user_pref_store_.get()); |
+ InitIncognitoUserPrefStore(incognito_pref_store); |
return new PrefService( |
pref_notifier, |
pref_value_store_->CloneAndSpecialize( |
@@ -203,8 +264,9 @@ PrefService* PrefService::CreateIncognitoPrefService( |
PrefService* PrefService::CreatePrefServiceWithPerTabPrefStore() { |
PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); |
- PersistentPrefStore* per_tab_pref_store = |
- new PerTabUserPrefStore(user_pref_store_.get()); |
+ OverlayUserPrefStore* per_tab_pref_store = |
+ new OverlayUserPrefStore(user_pref_store_.get()); |
+ InitPerTabUserPrefStore(per_tab_pref_store); |
DefaultPrefStore* default_store = new DefaultPrefStore(); |
return new PrefService( |
pref_notifier, |