Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: components/prefs/overlay_user_pref_store.cc

Issue 2692203007: Add PrefStore::GetValues (Closed)
Patch Set: Deal correctly with expanded keys Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/prefs/overlay_user_pref_store.h" 5 #include "components/prefs/overlay_user_pref_store.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 29 matching lines...) Expand all
40 const base::Value** result) const { 40 const base::Value** result) const {
41 // If the |key| shall NOT be stored in the overlay store, there must not 41 // If the |key| shall NOT be stored in the overlay store, there must not
42 // be an entry. 42 // be an entry.
43 DCHECK(ShallBeStoredInOverlay(key) || !overlay_.GetValue(key, NULL)); 43 DCHECK(ShallBeStoredInOverlay(key) || !overlay_.GetValue(key, NULL));
44 44
45 if (overlay_.GetValue(key, result)) 45 if (overlay_.GetValue(key, result))
46 return true; 46 return true;
47 return underlay_->GetValue(GetUnderlayKey(key), result); 47 return underlay_->GetValue(GetUnderlayKey(key), result);
48 } 48 }
49 49
50 std::unique_ptr<base::DictionaryValue> OverlayUserPrefStore::GetValues() const {
51 auto values = underlay_->GetValues();
52 auto overlay_values = overlay_.AsDictionaryValue();
53 for (const auto& overlay_mapping : overlay_to_underlay_names_map_) {
54 const std::string& overlay_key = overlay_mapping.first;
55 const std::string& underlay_key = overlay_mapping.first;
Sam McNally 2017/02/21 01:58:25 second
tibell 2017/02/21 02:11:07 Done.
56 std::unique_ptr<base::Value> out_value;
57 if (overlay_values->Remove(overlay_key, &out_value)) {
58 values->Set(overlay_key, std::move(out_value));
59 } else if (overlay_key != underlay_key) {
60 if (values->Remove(underlay_key, &out_value)) {
Sam McNally 2017/02/21 01:58:25 Merge this into the else if?
tibell 2017/02/21 02:11:07 Done. Reordered things to remove some if-statemen
61 values->Set(overlay_key, std::move(out_value));
62 }
63 }
64 }
65 return values;
66 }
67
50 bool OverlayUserPrefStore::GetMutableValue(const std::string& key, 68 bool OverlayUserPrefStore::GetMutableValue(const std::string& key,
51 base::Value** result) { 69 base::Value** result) {
52 if (!ShallBeStoredInOverlay(key)) 70 if (!ShallBeStoredInOverlay(key))
53 return underlay_->GetMutableValue(GetUnderlayKey(key), result); 71 return underlay_->GetMutableValue(GetUnderlayKey(key), result);
54 72
55 if (overlay_.GetValue(key, result)) 73 if (overlay_.GetValue(key, result))
56 return true; 74 return true;
57 75
58 // Try to create copy of underlay if the overlay does not contain a value. 76 // Try to create copy of underlay if the overlay does not contain a value.
59 base::Value* underlay_value = NULL; 77 base::Value* underlay_value = NULL;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 NamesMap::const_iterator i = 201 NamesMap::const_iterator i =
184 overlay_to_underlay_names_map_.find(overlay_key); 202 overlay_to_underlay_names_map_.find(overlay_key);
185 return i != overlay_to_underlay_names_map_.end() ? i->second : overlay_key; 203 return i != overlay_to_underlay_names_map_.end() ? i->second : overlay_key;
186 } 204 }
187 205
188 bool OverlayUserPrefStore::ShallBeStoredInOverlay( 206 bool OverlayUserPrefStore::ShallBeStoredInOverlay(
189 const std::string& key) const { 207 const std::string& key) const {
190 return overlay_to_underlay_names_map_.find(key) != 208 return overlay_to_underlay_names_map_.find(key) !=
191 overlay_to_underlay_names_map_.end(); 209 overlay_to_underlay_names_map_.end();
192 } 210 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698