Index: components/prefs/overlay_user_pref_store.cc |
diff --git a/components/prefs/overlay_user_pref_store.cc b/components/prefs/overlay_user_pref_store.cc |
index 2b2208ed8214408290c312125e5309689dfecaff..5bdd1d0ec5545561059784a5643af896cf58d95e 100644 |
--- a/components/prefs/overlay_user_pref_store.cc |
+++ b/components/prefs/overlay_user_pref_store.cc |
@@ -47,6 +47,21 @@ bool OverlayUserPrefStore::GetValue(const std::string& key, |
return underlay_->GetValue(GetUnderlayKey(key), result); |
} |
+std::unique_ptr<base::DictionaryValue> OverlayUserPrefStore::GetValues() const { |
+ auto overlay_values = overlay_.AsDictionaryValue(); |
+ auto underlay_values = underlay_->GetValues(); |
+ auto underlay_iter = base::DictionaryValue::Iterator(*underlay_values); |
+ while (!underlay_iter.IsAtEnd()) { |
+ const std::string& overlay_key = GetOverlayKey(underlay_iter.key()); |
+ if (!overlay_values->HasKey(overlay_key)) { |
+ overlay_values->SetWithoutPathExpansion( |
+ overlay_key, underlay_iter.value().CreateDeepCopy()); |
+ } |
+ underlay_iter.Advance(); |
+ } |
+ return overlay_values; |
+} |
+ |
bool OverlayUserPrefStore::GetMutableValue(const std::string& key, |
base::Value** result) { |
if (!ShallBeStoredInOverlay(key)) |