summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-17 19:42:10 +0000
committerhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-17 19:42:10 +0000
commit1b909d357fa576d260e686fe5121edef270f1ae7 (patch)
tree00ce6b9701c7558a7b3a1bcc721ecf91df4fabe3
parent2ef32354021c840043d7b213d1f220c7d2942e90 (diff)
downloadchromium_src-1b909d357fa576d260e686fe5121edef270f1ae7.zip
chromium_src-1b909d357fa576d260e686fe5121edef270f1ae7.tar.gz
chromium_src-1b909d357fa576d260e686fe5121edef270f1ae7.tar.bz2
Add model version to association stats and client debug info.
BUG=249978 Review URL: https://chromiumcodereview.appspot.com/16854019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206774 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/sync/glue/bookmark_model_associator.cc16
-rw-r--r--chrome/browser/sync/glue/bookmark_model_associator.h3
-rw-r--r--chrome/browser/sync/glue/model_association_manager.cc4
-rw-r--r--sync/api/sync_merge_result.cc11
-rw-r--r--sync/api/sync_merge_result.h5
-rw-r--r--sync/internal_api/debug_info_event_listener.cc4
-rw-r--r--sync/internal_api/public/data_type_association_stats.cc2
-rw-r--r--sync/internal_api/public/data_type_association_stats.h4
-rw-r--r--sync/protocol/client_debug_info.proto6
-rw-r--r--sync/protocol/proto_value_conversions.cc2
10 files changed, 51 insertions, 6 deletions
diff --git a/chrome/browser/sync/glue/bookmark_model_associator.cc b/chrome/browser/sync/glue/bookmark_model_associator.cc
index b214f2d..846d3e2 100644
--- a/chrome/browser/sync/glue/bookmark_model_associator.cc
+++ b/chrome/browser/sync/glue/bookmark_model_associator.cc
@@ -364,7 +364,7 @@ bool BookmarkModelAssociator::GetSyncIdForTaggedNode(const std::string& tag,
syncer::SyncError BookmarkModelAssociator::AssociateModels(
syncer::SyncMergeResult* local_merge_result,
syncer::SyncMergeResult* syncer_merge_result) {
- CheckModelSyncState();
+ CheckModelSyncState(local_merge_result, syncer_merge_result);
scoped_ptr<ScopedAssociationUpdater> association_updater(
new ScopedAssociationUpdater(bookmark_model_));
@@ -702,14 +702,22 @@ bool BookmarkModelAssociator::CryptoReadyIfNecessary() {
trans.GetCryptographer()->is_ready();
}
-void BookmarkModelAssociator::CheckModelSyncState() const {
+void BookmarkModelAssociator::CheckModelSyncState(
+ syncer::SyncMergeResult* local_merge_result,
+ syncer::SyncMergeResult* syncer_merge_result) const {
std::string version_str;
if (bookmark_model_->root_node()->GetMetaInfo(kBookmarkTransactionVersionKey,
&version_str)) {
syncer::ReadTransaction trans(FROM_HERE, user_share_);
int64 native_version;
- if (base::StringToInt64(version_str, &native_version) &&
- native_version != trans.GetModelVersion(syncer::BOOKMARKS)) {
+ if (!base::StringToInt64(version_str, &native_version))
+ return;
+ local_merge_result->set_pre_association_version(native_version);
+
+ int64 sync_version = trans.GetModelVersion(syncer::BOOKMARKS);
+ syncer_merge_result->set_pre_association_version(sync_version);
+
+ if (native_version != sync_version) {
UMA_HISTOGRAM_ENUMERATION("Sync.LocalModelOutOfSync",
ModelTypeToHistogramInt(syncer::BOOKMARKS),
syncer::MODEL_TYPE_COUNT);
diff --git a/chrome/browser/sync/glue/bookmark_model_associator.h b/chrome/browser/sync/glue/bookmark_model_associator.h
index b37bb25..8a0ff5f 100644
--- a/chrome/browser/sync/glue/bookmark_model_associator.h
+++ b/chrome/browser/sync/glue/bookmark_model_associator.h
@@ -141,7 +141,8 @@ class BookmarkModelAssociator
// Check whether bookmark model and sync model are synced by comparing
// their transaction versions.
- void CheckModelSyncState() const;
+ void CheckModelSyncState(syncer::SyncMergeResult* local_merge_result,
+ syncer::SyncMergeResult* syncer_merge_result) const;
BookmarkModel* bookmark_model_;
Profile* profile_;
diff --git a/chrome/browser/sync/glue/model_association_manager.cc b/chrome/browser/sync/glue/model_association_manager.cc
index 4c68714..4049523 100644
--- a/chrome/browser/sync/glue/model_association_manager.cc
+++ b/chrome/browser/sync/glue/model_association_manager.cc
@@ -99,12 +99,16 @@ syncer::DataTypeAssociationStats BuildAssociationStatsFromMergeResults(
local_merge_result.num_items_deleted();
stats.num_local_items_modified =
local_merge_result.num_items_modified();
+ stats.local_version_pre_association =
+ local_merge_result.pre_association_version();
stats.num_sync_items_added =
syncer_merge_result.num_items_added();
stats.num_sync_items_deleted =
syncer_merge_result.num_items_deleted();
stats.num_sync_items_modified =
syncer_merge_result.num_items_modified();
+ stats.sync_version_pre_association =
+ syncer_merge_result.pre_association_version();
stats.association_wait_time = association_wait_time;
stats.association_time = association_time;
return stats;
diff --git a/sync/api/sync_merge_result.cc b/sync/api/sync_merge_result.cc
index 0caf57b..0c2fb83 100644
--- a/sync/api/sync_merge_result.cc
+++ b/sync/api/sync_merge_result.cc
@@ -12,7 +12,8 @@ SyncMergeResult::SyncMergeResult(ModelType type)
num_items_after_association_(0),
num_items_added_(0),
num_items_deleted_(0),
- num_items_modified_(0) {
+ num_items_modified_(0),
+ pre_association_version_(0) {
}
SyncMergeResult::~SyncMergeResult() {
@@ -46,6 +47,10 @@ void SyncMergeResult::set_num_items_modified(int num_items_modified) {
num_items_modified_ = num_items_modified;
}
+void SyncMergeResult::set_pre_association_version(int64 version) {
+ pre_association_version_ = version;
+}
+
ModelType SyncMergeResult::model_type() const {
return model_type_;
}
@@ -74,4 +79,8 @@ int SyncMergeResult::num_items_modified() const {
return num_items_modified_;
}
+int64 SyncMergeResult::pre_association_version() const {
+ return pre_association_version_;
+}
+
} // namespace syncer
diff --git a/sync/api/sync_merge_result.h b/sync/api/sync_merge_result.h
index 4ffd474..712f4bd 100644
--- a/sync/api/sync_merge_result.h
+++ b/sync/api/sync_merge_result.h
@@ -34,6 +34,7 @@ class SYNC_EXPORT SyncMergeResult {
void set_num_items_added(int num_items_added);
void set_num_items_deleted(int num_items_deleted);
void set_num_items_modified(int num_items_modified);
+ void set_pre_association_version(int64 version);
// Getters.
ModelType model_type() const;
@@ -43,6 +44,7 @@ class SYNC_EXPORT SyncMergeResult {
int num_items_added() const;
int num_items_deleted() const;
int num_items_modified() const;
+ int64 pre_association_version() const;
private:
// Make |this| into a copy of |other|.
@@ -66,6 +68,9 @@ class SYNC_EXPORT SyncMergeResult {
int num_items_added_;
int num_items_deleted_;
int num_items_modified_;
+
+ // Version of model before association.
+ int64 pre_association_version_;
};
} // namespace syncer
diff --git a/sync/internal_api/debug_info_event_listener.cc b/sync/internal_api/debug_info_event_listener.cc
index ae02a7c..d0c9be0 100644
--- a/sync/internal_api/debug_info_event_listener.cc
+++ b/sync/internal_api/debug_info_event_listener.cc
@@ -204,6 +204,10 @@ void DebugInfoEventListener::OnSingleDataTypeConfigureComplete(
association_stats.num_sync_items_deleted);
datatype_stats->set_num_sync_items_modified(
association_stats.num_sync_items_modified);
+ datatype_stats->set_local_version_pre_association(
+ association_stats.local_version_pre_association);
+ datatype_stats->set_sync_version_pre_association(
+ association_stats.sync_version_pre_association);
datatype_stats->set_had_error(association_stats.had_error);
datatype_stats->set_association_wait_time_for_same_priority_us(
association_stats.association_wait_time.InMicroseconds());
diff --git a/sync/internal_api/public/data_type_association_stats.cc b/sync/internal_api/public/data_type_association_stats.cc
index 4ae4bd1..4988de1 100644
--- a/sync/internal_api/public/data_type_association_stats.cc
+++ b/sync/internal_api/public/data_type_association_stats.cc
@@ -17,6 +17,8 @@ DataTypeAssociationStats::DataTypeAssociationStats()
num_sync_items_added(0),
num_sync_items_deleted(0),
num_sync_items_modified(0),
+ local_version_pre_association(0),
+ sync_version_pre_association(0),
had_error(false) {
}
diff --git a/sync/internal_api/public/data_type_association_stats.h b/sync/internal_api/public/data_type_association_stats.h
index bda8ff3..ddddb94 100644
--- a/sync/internal_api/public/data_type_association_stats.h
+++ b/sync/internal_api/public/data_type_association_stats.h
@@ -32,6 +32,10 @@ struct SYNC_EXPORT DataTypeAssociationStats {
int num_sync_items_deleted;
int num_sync_items_modified;
+ // Model versions before association.
+ int64 local_version_pre_association;
+ int64 sync_version_pre_association;
+
// Whether a datatype unrecoverable error was encountered during association.
bool had_error;
diff --git a/sync/protocol/client_debug_info.proto b/sync/protocol/client_debug_info.proto
index 7ae5a3c..171909f 100644
--- a/sync/protocol/client_debug_info.proto
+++ b/sync/protocol/client_debug_info.proto
@@ -86,6 +86,12 @@ message DatatypeAssociationStats {
optional int32 num_sync_items_deleted = 10;
optional int32 num_sync_items_modified = 11;
+ // Model versions before association. Ideally local and sync model should
+ // have same version if models were persisted properly in last session.
+ // Note: currently version is only set on bookmark model.
+ optional int64 local_version_pre_association = 20;
+ optional int64 sync_version_pre_association = 21;
+
// The data type ran into an error during model association.
optional bool had_error = 12;
diff --git a/sync/protocol/proto_value_conversions.cc b/sync/protocol/proto_value_conversions.cc
index 868fd37..bd9a205 100644
--- a/sync/protocol/proto_value_conversions.cc
+++ b/sync/protocol/proto_value_conversions.cc
@@ -800,6 +800,8 @@ base::DictionaryValue* DatatypeAssociationStatsToValue(
SET_INT32(num_sync_items_added);
SET_INT32(num_sync_items_deleted);
SET_INT32(num_sync_items_modified);
+ SET_INT64(local_version_pre_association);
+ SET_INT64(sync_version_pre_association)
SET_BOOL(had_error);
SET_INT64(download_wait_time_us);
SET_INT64(download_time_us);