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

Side by Side Diff: components/user_prefs/tracked/segregated_pref_store.cc

Issue 1227973003: Componentize //chrome/browser/prefs/tracked. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 4 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/prefs/tracked/segregated_pref_store.h" 5 #include "components/user_prefs/tracked/segregated_pref_store.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 10
11 SegregatedPrefStore::AggregatingObserver::AggregatingObserver( 11 SegregatedPrefStore::AggregatingObserver::AggregatingObserver(
12 SegregatedPrefStore* outer) 12 SegregatedPrefStore* outer)
13 : outer_(outer), 13 : outer_(outer),
14 failed_sub_initializations_(0), 14 failed_sub_initializations_(0),
15 successful_sub_initializations_(0) {} 15 successful_sub_initializations_(0) {
16 }
16 17
17 void SegregatedPrefStore::AggregatingObserver::OnPrefValueChanged( 18 void SegregatedPrefStore::AggregatingObserver::OnPrefValueChanged(
18 const std::string& key) { 19 const std::string& key) {
19 // There is no need to tell clients about changes if they have not yet been 20 // There is no need to tell clients about changes if they have not yet been
20 // told about initialization. 21 // told about initialization.
21 if (failed_sub_initializations_ + successful_sub_initializations_ < 2) 22 if (failed_sub_initializations_ + successful_sub_initializations_ < 2)
22 return; 23 return;
23 24
24 FOR_EACH_OBSERVER( 25 FOR_EACH_OBSERVER(PrefStore::Observer, outer_->observers_,
25 PrefStore::Observer, outer_->observers_, OnPrefValueChanged(key)); 26 OnPrefValueChanged(key));
26 } 27 }
27 28
28 void SegregatedPrefStore::AggregatingObserver::OnInitializationCompleted( 29 void SegregatedPrefStore::AggregatingObserver::OnInitializationCompleted(
29 bool succeeded) { 30 bool succeeded) {
30 if (succeeded) 31 if (succeeded)
31 ++successful_sub_initializations_; 32 ++successful_sub_initializations_;
32 else 33 else
33 ++failed_sub_initializations_; 34 ++failed_sub_initializations_;
34 35
35 DCHECK_LE(failed_sub_initializations_ + successful_sub_initializations_, 2); 36 DCHECK_LE(failed_sub_initializations_ + successful_sub_initializations_, 2);
36 37
37 if (failed_sub_initializations_ + successful_sub_initializations_ == 2) { 38 if (failed_sub_initializations_ + successful_sub_initializations_ == 2) {
38 if (successful_sub_initializations_ == 2 && outer_->read_error_delegate_) { 39 if (successful_sub_initializations_ == 2 && outer_->read_error_delegate_) {
39 PersistentPrefStore::PrefReadError read_error = outer_->GetReadError(); 40 PersistentPrefStore::PrefReadError read_error = outer_->GetReadError();
40 if (read_error != PersistentPrefStore::PREF_READ_ERROR_NONE) 41 if (read_error != PersistentPrefStore::PREF_READ_ERROR_NONE)
41 outer_->read_error_delegate_->OnError(read_error); 42 outer_->read_error_delegate_->OnError(read_error);
42 } 43 }
43 44
44 FOR_EACH_OBSERVER( 45 FOR_EACH_OBSERVER(
45 PrefStore::Observer, 46 PrefStore::Observer, outer_->observers_,
46 outer_->observers_,
47 OnInitializationCompleted(successful_sub_initializations_ == 2)); 47 OnInitializationCompleted(successful_sub_initializations_ == 2));
48 } 48 }
49 } 49 }
50 50
51 SegregatedPrefStore::SegregatedPrefStore( 51 SegregatedPrefStore::SegregatedPrefStore(
52 const scoped_refptr<PersistentPrefStore>& default_pref_store, 52 const scoped_refptr<PersistentPrefStore>& default_pref_store,
53 const scoped_refptr<PersistentPrefStore>& selected_pref_store, 53 const scoped_refptr<PersistentPrefStore>& selected_pref_store,
54 const std::set<std::string>& selected_pref_names) 54 const std::set<std::string>& selected_pref_names)
55 : default_pref_store_(default_pref_store), 55 : default_pref_store_(default_pref_store),
56 selected_pref_store_(selected_pref_store), 56 selected_pref_store_(selected_pref_store),
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 StoreForKey(key)->ReportValueChanged(key, flags); 102 StoreForKey(key)->ReportValueChanged(key, flags);
103 } 103 }
104 104
105 void SegregatedPrefStore::SetValueSilently(const std::string& key, 105 void SegregatedPrefStore::SetValueSilently(const std::string& key,
106 scoped_ptr<base::Value> value, 106 scoped_ptr<base::Value> value,
107 uint32 flags) { 107 uint32 flags) {
108 StoreForKey(key)->SetValueSilently(key, value.Pass(), flags); 108 StoreForKey(key)->SetValueSilently(key, value.Pass(), flags);
109 } 109 }
110 110
111 bool SegregatedPrefStore::ReadOnly() const { 111 bool SegregatedPrefStore::ReadOnly() const {
112 return selected_pref_store_->ReadOnly() || 112 return selected_pref_store_->ReadOnly() || default_pref_store_->ReadOnly();
113 default_pref_store_->ReadOnly();
114 } 113 }
115 114
116 PersistentPrefStore::PrefReadError SegregatedPrefStore::GetReadError() const { 115 PersistentPrefStore::PrefReadError SegregatedPrefStore::GetReadError() const {
117 PersistentPrefStore::PrefReadError read_error = 116 PersistentPrefStore::PrefReadError read_error =
118 default_pref_store_->GetReadError(); 117 default_pref_store_->GetReadError();
119 if (read_error == PersistentPrefStore::PREF_READ_ERROR_NONE) { 118 if (read_error == PersistentPrefStore::PREF_READ_ERROR_NONE) {
120 read_error = selected_pref_store_->GetReadError(); 119 read_error = selected_pref_store_->GetReadError();
121 // Ignore NO_FILE from selected_pref_store_. 120 // Ignore NO_FILE from selected_pref_store_.
122 if (read_error == PersistentPrefStore::PREF_READ_ERROR_NO_FILE) 121 if (read_error == PersistentPrefStore::PREF_READ_ERROR_NO_FILE)
123 read_error = PersistentPrefStore::PREF_READ_ERROR_NONE; 122 read_error = PersistentPrefStore::PREF_READ_ERROR_NONE;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 ? selected_pref_store_ 164 ? selected_pref_store_
166 : default_pref_store_).get(); 165 : default_pref_store_).get();
167 } 166 }
168 167
169 const PersistentPrefStore* SegregatedPrefStore::StoreForKey( 168 const PersistentPrefStore* SegregatedPrefStore::StoreForKey(
170 const std::string& key) const { 169 const std::string& key) const {
171 return (ContainsKey(selected_preference_names_, key) 170 return (ContainsKey(selected_preference_names_, key)
172 ? selected_pref_store_ 171 ? selected_pref_store_
173 : default_pref_store_).get(); 172 : default_pref_store_).get();
174 } 173 }
OLDNEW
« no previous file with comments | « components/user_prefs/tracked/segregated_pref_store.h ('k') | components/user_prefs/tracked/segregated_pref_store_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698