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

Unified Diff: components/login/screens/screen_context.cc

Issue 755203002: Added usage of ScreenContext in EulaScreen. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed comments. Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: components/login/screens/screen_context.cc
diff --git a/components/login/screens/screen_context.cc b/components/login/screens/screen_context.cc
index 5324164ee6af6283062e8bd79fd44a70c6ebd71c..71ffdf14b23c68140b20978a0e4ba809f6a9fc67 100644
--- a/components/login/screens/screen_context.cc
+++ b/components/login/screens/screen_context.cc
@@ -122,6 +122,19 @@ String16List ScreenContext::GetString16List(
return Get(key, default_value);
}
+scoped_ptr<ScreenContext::KeyObserverSubscription>
+ScreenContext::AddKeyObserver(const KeyType& key, const KeyObserver& observer) {
+ auto it = key_observers_.find(key);
+ linked_ptr<KeyObserversList> observers_list;
+ if (it == key_observers_.end()) {
+ observers_list.reset(new KeyObserversList());
+ key_observers_[key] = observers_list;
+ } else {
+ observers_list = it->second;
+ }
+ return observers_list->Add(observer);
+}
+
bool ScreenContext::HasKey(const KeyType& key) const {
DCHECK(CalledOnValidThread());
return storage_.HasKey(key);
@@ -147,12 +160,15 @@ void ScreenContext::ApplyChanges(const base::DictionaryValue& diff,
keys->clear();
keys->reserve(diff.size());
}
- base::DictionaryValue::Iterator it(diff);
- while (!it.IsAtEnd()) {
+
+ for (base::DictionaryValue::Iterator it(diff); !it.IsAtEnd(); it.Advance()) {
Set(it.key(), it.value().DeepCopy());
if (keys)
keys->push_back(it.key());
- it.Advance();
+
+ linked_ptr<KeyObserversList> observers = key_observers_[it.key()];
+ if (observers.get())
+ observers->Notify(it.key(), it.value());
}
changes_.Clear();
}

Powered by Google App Engine
This is Rietveld 408576698