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

Unified Diff: chrome/browser/supervised_user/supervised_user_settings_service.cc

Issue 1563833002: [Part-2]Add Statistics for SupervisedUserSettingService during merging and syncing data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/supervised_user/supervised_user_settings_service.cc
diff --git a/chrome/browser/supervised_user/supervised_user_settings_service.cc b/chrome/browser/supervised_user/supervised_user_settings_service.cc
index db09106b4e5df4dd6792f75746f69d280395fa07..642205fb64edc0e6820d00770ef938f5ab0b8f85 100644
--- a/chrome/browser/supervised_user/supervised_user_settings_service.cc
+++ b/chrome/browser/supervised_user/supervised_user_settings_service.cc
@@ -193,8 +193,31 @@ SyncMergeResult SupervisedUserSettingsService::MergeDataAndStartSyncing(
sync_processor_ = std::move(sync_processor);
error_handler_ = std::move(error_handler);
+ std::map<std::string, std::string> seen_keys;
+ int num_before_association = GetAtomicSettings()->size();
+ for (base::DictionaryValue::Iterator it(*GetAtomicSettings()); !it.IsAtEnd();
+ it.Advance()) {
+ std::string json_value;
+ base::JSONWriter::Write(it.value(), &json_value);
+ seen_keys[it.key()] = json_value;
+ }
+ for (base::DictionaryValue::Iterator it(*GetSplitSettings()); !it.IsAtEnd();
+ it.Advance()) {
+ const base::DictionaryValue* dict = nullptr;
+ it.value().GetAsDictionary(&dict);
+ num_before_association += dict->size();
+ for (base::DictionaryValue::Iterator jt(*dict); !jt.IsAtEnd();
+ jt.Advance()) {
+ std::string json_value;
+ base::JSONWriter::Write(jt.value(), &json_value);
Bernhard Bauer 2016/01/08 16:04:46 You serialize the values and then compare them bel
Deepak 2016/01/11 10:38:36 Done.
+ seen_keys[MakeSplitSettingKey(it.key(), jt.key())] = json_value;
+ }
+ }
+
// Clear all atomic and split settings, then recreate them from Sync data.
Clear();
+ int num_added = 0;
+ int num_modified = 0;
for (const SyncData& sync_data : initial_sync_data) {
DCHECK_EQ(SUPERVISED_USER_SETTINGS, sync_data.GetDataType());
const ::sync_pb::ManagedUserSettingSpecifics& supervised_user_setting =
@@ -202,9 +225,22 @@ SyncMergeResult SupervisedUserSettingsService::MergeDataAndStartSyncing(
scoped_ptr<base::Value> value =
JSONReader::Read(supervised_user_setting.value());
std::string name_suffix = supervised_user_setting.name();
+ std::string name_key = name_suffix;
base::DictionaryValue* dict = GetDictionaryAndSplitKey(&name_suffix);
dict->SetWithoutPathExpansion(name_suffix, value.release());
+
+ if (seen_keys.find(name_key) == seen_keys.end()) {
+ num_added++;
+ } else {
+ for (DictionaryValue::Iterator jt(*dict); !jt.IsAtEnd(); jt.Advance()) {
+ std::string json_value;
Bernhard Bauer 2016/01/08 16:04:46 This is identical to supervised_user_setting.value
Deepak 2016/01/11 10:38:36 Done.
+ base::JSONWriter::Write(jt.value(), &json_value);
+ if (seen_keys[name_key] != json_value)
+ num_modified++;
+ }
+ }
}
+
store_->ReportValueChanged(kAtomicSettings,
WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
store_->ReportValueChanged(kSplitSettings,
@@ -237,7 +273,11 @@ SyncMergeResult SupervisedUserSettingsService::MergeDataAndStartSyncing(
sync_processor_->ProcessSyncChanges(FROM_HERE, change_list));
}
- // TODO(bauerb): Statistics?
+ result.set_num_items_added(num_added);
+ result.set_num_items_modified(num_modified);
+ result.set_num_items_deleted(num_before_association - num_modified);
+ result.set_num_items_before_association(num_before_association);
+ result.set_num_items_after_association(GetAllSyncData(type).size());
Bernhard Bauer 2016/01/08 16:04:46 This is clever, but I'm a bit wary that this does
Deepak 2016/01/11 10:38:36 Done.
return result;
}

Powered by Google App Engine
This is Rietveld 408576698