summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prefs
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/prefs')
-rw-r--r--chrome/browser/prefs/default_pref_store.cc5
-rw-r--r--chrome/browser/prefs/default_pref_store.h3
-rw-r--r--chrome/browser/prefs/per_tab_user_pref_store.cc45
-rw-r--r--chrome/browser/prefs/pref_model_associator.cc5
-rw-r--r--chrome/browser/prefs/pref_model_associator.h4
-rw-r--r--chrome/browser/prefs/pref_service.cc18
-rw-r--r--chrome/browser/prefs/pref_service.h2
-rw-r--r--chrome/browser/prefs/pref_service_unittest.cc4
8 files changed, 83 insertions, 3 deletions
diff --git a/chrome/browser/prefs/default_pref_store.cc b/chrome/browser/prefs/default_pref_store.cc
index c8b9b8a..06168bc 100644
--- a/chrome/browser/prefs/default_pref_store.cc
+++ b/chrome/browser/prefs/default_pref_store.cc
@@ -15,6 +15,11 @@ void DefaultPrefStore::SetDefaultValue(const std::string& key, Value* value) {
SetValue(key, value);
}
+void DefaultPrefStore::RemoveDefaultValue(const std::string& key) {
+ CHECK(GetValue(key, NULL) == READ_OK);
+ RemoveValue(key);
+}
+
base::Value::Type DefaultPrefStore::GetType(const std::string& key) const {
const Value* value;
return GetValue(key, &value) == READ_OK ? value->GetType() : Value::TYPE_NULL;
diff --git a/chrome/browser/prefs/default_pref_store.h b/chrome/browser/prefs/default_pref_store.h
index 4f818a5..96de6d3 100644
--- a/chrome/browser/prefs/default_pref_store.h
+++ b/chrome/browser/prefs/default_pref_store.h
@@ -21,6 +21,9 @@ class DefaultPrefStore : public ValueMapPrefStore {
// Stores a new |value| for |key|. Assumes ownership of |value|.
void SetDefaultValue(const std::string& key, Value* value);
+ // Removes the value for |key|.
+ void RemoveDefaultValue(const std::string& key);
+
// Returns the registered type for |key| or Value::TYPE_NULL if the |key|
// has not been registered.
base::Value::Type GetType(const std::string& key) const;
diff --git a/chrome/browser/prefs/per_tab_user_pref_store.cc b/chrome/browser/prefs/per_tab_user_pref_store.cc
index d521ea1..41f0c8f 100644
--- a/chrome/browser/prefs/per_tab_user_pref_store.cc
+++ b/chrome/browser/prefs/per_tab_user_pref_store.cc
@@ -8,5 +8,48 @@
PerTabUserPrefStore::PerTabUserPrefStore(PersistentPrefStore* underlay)
: OverlayUserPrefStore(underlay) {
RegisterOverlayProperty(
- prefs::kWebKitJavascriptEnabled, prefs::kWebKitGlobalJavascriptEnabled);
+ prefs::kWebKitJavascriptEnabled,
+ prefs::kWebKitGlobalJavascriptEnabled);
+ RegisterOverlayProperty(
+ prefs::kWebKitJavascriptCanOpenWindowsAutomatically,
+ prefs::kWebKitGlobalJavascriptCanOpenWindowsAutomatically);
+ RegisterOverlayProperty(
+ prefs::kWebKitLoadsImagesAutomatically,
+ prefs::kWebKitGlobalLoadsImagesAutomatically);
+ RegisterOverlayProperty(
+ prefs::kWebKitPluginsEnabled,
+ prefs::kWebKitGlobalPluginsEnabled);
+ RegisterOverlayProperty(
+ prefs::kDefaultCharset,
+ prefs::kGlobalDefaultCharset);
+ RegisterOverlayProperty(
+ prefs::kWebKitStandardFontFamily,
+ prefs::kWebKitGlobalStandardFontFamily);
+ RegisterOverlayProperty(
+ prefs::kWebKitFixedFontFamily,
+ prefs::kWebKitGlobalFixedFontFamily);
+ RegisterOverlayProperty(
+ prefs::kWebKitSerifFontFamily,
+ prefs::kWebKitGlobalSerifFontFamily);
+ RegisterOverlayProperty(
+ prefs::kWebKitSansSerifFontFamily,
+ prefs::kWebKitGlobalSansSerifFontFamily);
+ RegisterOverlayProperty(
+ prefs::kWebKitCursiveFontFamily,
+ prefs::kWebKitGlobalCursiveFontFamily);
+ RegisterOverlayProperty(
+ prefs::kWebKitFantasyFontFamily,
+ prefs::kWebKitGlobalFantasyFontFamily);
+ RegisterOverlayProperty(
+ prefs::kWebKitDefaultFontSize,
+ prefs::kWebKitGlobalDefaultFontSize);
+ RegisterOverlayProperty(
+ prefs::kWebKitDefaultFixedFontSize,
+ prefs::kWebKitGlobalDefaultFixedFontSize);
+ RegisterOverlayProperty(
+ prefs::kWebKitMinimumFontSize,
+ prefs::kWebKitGlobalMinimumFontSize);
+ RegisterOverlayProperty(
+ prefs::kWebKitMinimumLogicalFontSize,
+ prefs::kWebKitGlobalMinimumLogicalFontSize);
}
diff --git a/chrome/browser/prefs/pref_model_associator.cc b/chrome/browser/prefs/pref_model_associator.cc
index 4f06c19..45d4332 100644
--- a/chrome/browser/prefs/pref_model_associator.cc
+++ b/chrome/browser/prefs/pref_model_associator.cc
@@ -376,6 +376,11 @@ bool PrefModelAssociator::IsPrefRegistered(const char* name) {
return registered_preferences_.count(name) > 0;
}
+void PrefModelAssociator::UnregisterPref(const char* name) {
+ DCHECK(synced_preferences_.count(name) == 0);
+ registered_preferences_.erase(name);
+}
+
void PrefModelAssociator::ProcessPrefChange(const std::string& name) {
if (processing_syncer_changes_)
return; // These are changes originating from us, ignore.
diff --git a/chrome/browser/prefs/pref_model_associator.h b/chrome/browser/prefs/pref_model_associator.h
index cf1dd77..3d2fd1f 100644
--- a/chrome/browser/prefs/pref_model_associator.h
+++ b/chrome/browser/prefs/pref_model_associator.h
@@ -60,6 +60,10 @@ class PrefModelAssociator
// Returns true if the specified preference is registered for syncing.
virtual bool IsPrefRegistered(const char* name);
+ // Unregisters a previously registered preference. This must be called
+ // prior to making the first sync.
+ virtual void UnregisterPref(const char* name);
+
// Process a local preference change. This can trigger new SyncChanges being
// sent to the syncer.
virtual void ProcessPrefChange(const std::string& name);
diff --git a/chrome/browser/prefs/pref_service.cc b/chrome/browser/prefs/pref_service.cc
index 6ec0802..5022bdd 100644
--- a/chrome/browser/prefs/pref_service.cc
+++ b/chrome/browser/prefs/pref_service.cc
@@ -745,6 +745,24 @@ void PrefService::RegisterPreference(const char* path,
pref_sync_associator_->RegisterPref(path);
}
+void PrefService::UnregisterPreference(const char* path) {
+ DCHECK(CalledOnValidThread());
+
+ Preference p(this, path, Value::TYPE_NULL);
+ PreferenceSet::const_iterator it = prefs_.find(&p);
+ if (it == prefs_.end()) {
+ NOTREACHED() << "Trying to unregister an unregistered pref: " << path;
+ return;
+ }
+
+ prefs_.erase(it);
+ default_store_->RemoveDefaultValue(path);
+ if (pref_sync_associator_.get() &&
+ pref_sync_associator_->IsPrefRegistered(path)) {
+ pref_sync_associator_->UnregisterPref(path);
+ }
+}
+
void PrefService::ClearPref(const char* path) {
DCHECK(CalledOnValidThread());
diff --git a/chrome/browser/prefs/pref_service.h b/chrome/browser/prefs/pref_service.h
index a035de86..f0ed120 100644
--- a/chrome/browser/prefs/pref_service.h
+++ b/chrome/browser/prefs/pref_service.h
@@ -238,6 +238,8 @@ class PrefService : public base::NonThreadSafe {
void RegisterInt64Pref(const char* path,
int64 default_value,
PrefSyncStatus sync_status);
+ // Unregisters a preference.
+ void UnregisterPreference(const char* path);
// If the path is valid and the value at the end of the path matches the type
// specified, it will return the specified value. Otherwise, the default
diff --git a/chrome/browser/prefs/pref_service_unittest.cc b/chrome/browser/prefs/pref_service_unittest.cc
index 9a490a4..de2060d 100644
--- a/chrome/browser/prefs/pref_service_unittest.cc
+++ b/chrome/browser/prefs/pref_service_unittest.cc
@@ -255,9 +255,9 @@ class PrefServiceWebKitPrefs : public ChromeRenderViewHostTestHarness {
pref_services->SetUserPref(prefs::kUsesSystemTheme,
Value::CreateBooleanValue(false));
#endif
- pref_services->SetUserPref(prefs::kDefaultCharset,
+ pref_services->SetUserPref(prefs::kGlobalDefaultCharset,
Value::CreateStringValue("utf8"));
- pref_services->SetUserPref(prefs::kWebKitDefaultFontSize,
+ pref_services->SetUserPref(prefs::kWebKitGlobalDefaultFontSize,
Value::CreateIntegerValue(20));
pref_services->SetUserPref(prefs::kWebKitTextAreasAreResizable,
Value::CreateBooleanValue(false));