summaryrefslogtreecommitdiffstats
path: root/sync/sessions
diff options
context:
space:
mode:
authorrlarocque@chromium.org <rlarocque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-24 02:17:30 +0000
committerrlarocque@chromium.org <rlarocque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-24 02:17:30 +0000
commitde4963c3f017007f36853564f4ed2ccbf299f454 (patch)
tree9d68f678cfceb2c61d29bc68fca27b421e2194b8 /sync/sessions
parentc87efedd255ab42f25fc44588ecdb22e7af43bcb (diff)
downloadchromium_src-de4963c3f017007f36853564f4ed2ccbf299f454.zip
chromium_src-de4963c3f017007f36853564f4ed2ccbf299f454.tar.gz
chromium_src-de4963c3f017007f36853564f4ed2ccbf299f454.tar.bz2
sync: Count and report reflected updates
Many of the updates a sync client receives are echoes of its own changes. This patch attempts to count how often these updates are received by comparing the version of downloaded updates against the local version. These counts are exposed locally through AllStatus/about:sync. We also upload this information to the server through the ClientDebugInfo mechanism. BUG=117565 TEST= Review URL: http://codereview.chromium.org/9702083 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128659 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/sessions')
-rw-r--r--sync/sessions/session_state.cc6
-rw-r--r--sync/sessions/session_state.h3
-rw-r--r--sync/sessions/session_state_unittest.cc9
-rw-r--r--sync/sessions/status_controller.cc6
-rw-r--r--sync/sessions/status_controller.h1
-rw-r--r--sync/sessions/sync_session.cc1
6 files changed, 24 insertions, 2 deletions
diff --git a/sync/sessions/session_state.cc b/sync/sessions/session_state.cc
index 2c68125..f49c41d 100644
--- a/sync/sessions/session_state.cc
+++ b/sync/sessions/session_state.cc
@@ -50,6 +50,7 @@ SyncerStatus::SyncerStatus()
num_successful_bookmark_commits(0),
num_updates_downloaded_total(0),
num_tombstone_updates_downloaded_total(0),
+ num_reflected_updates_downloaded_total(0),
num_local_overwrites(0),
num_server_overwrites(0) {
}
@@ -67,6 +68,8 @@ DictionaryValue* SyncerStatus::ToValue() const {
num_updates_downloaded_total);
value->SetInteger("numTombstoneUpdatesDownloadedTotal",
num_tombstone_updates_downloaded_total);
+ value->SetInteger("numReflectedUpdatesDownloadedTotal",
+ num_reflected_updates_downloaded_total);
value->SetInteger("numLocalOverwrites", num_local_overwrites);
value->SetInteger("numServerOverwrites", num_server_overwrites);
return value;
@@ -113,6 +116,7 @@ SyncSessionSnapshot::SyncSessionSnapshot(
int num_server_conflicts,
bool did_commit_items,
const SyncSourceInfo& source,
+ bool notifications_enabled,
size_t num_entries,
base::Time sync_start_time,
bool retry_scheduled)
@@ -131,6 +135,7 @@ SyncSessionSnapshot::SyncSessionSnapshot(
num_server_conflicts(num_server_conflicts),
did_commit_items(did_commit_items),
source(source),
+ notifications_enabled(notifications_enabled),
num_entries(num_entries),
sync_start_time(sync_start_time),
retry_scheduled(retry_scheduled) {
@@ -170,6 +175,7 @@ DictionaryValue* SyncSessionSnapshot::ToValue() const {
value->SetBoolean("didCommitItems", did_commit_items);
value->SetInteger("numEntries", num_entries);
value->Set("source", source.ToValue());
+ value->SetBoolean("notificationsEnabled", notifications_enabled);
return value;
}
diff --git a/sync/sessions/session_state.h b/sync/sessions/session_state.h
index 676fe5b..7403758 100644
--- a/sync/sessions/session_state.h
+++ b/sync/sessions/session_state.h
@@ -72,6 +72,7 @@ struct SyncerStatus {
// Download event counters.
int num_updates_downloaded_total;
int num_tombstone_updates_downloaded_total;
+ int num_reflected_updates_downloaded_total;
// If the syncer encountered a MIGRATION_DONE code, these are the types that
// the client must now "migrate", by purging and re-downloading all updates.
@@ -121,6 +122,7 @@ struct SyncSessionSnapshot {
int num_server_conflicts,
bool did_commit_items,
const SyncSourceInfo& source,
+ bool notifications_enabled,
size_t num_entries,
base::Time sync_start_time,
bool retry_scheduled);
@@ -146,6 +148,7 @@ struct SyncSessionSnapshot {
const int num_server_conflicts;
const bool did_commit_items;
const SyncSourceInfo source;
+ const bool notifications_enabled;
const size_t num_entries;
base::Time sync_start_time;
const bool retry_scheduled;
diff --git a/sync/sessions/session_state_unittest.cc b/sync/sessions/session_state_unittest.cc
index b18964a..a37dc17 100644
--- a/sync/sessions/session_state_unittest.cc
+++ b/sync/sessions/session_state_unittest.cc
@@ -49,11 +49,12 @@ TEST_F(SessionStateTest, SyncerStatusToValue) {
status.num_successful_bookmark_commits = 10;
status.num_updates_downloaded_total = 100;
status.num_tombstone_updates_downloaded_total = 200;
+ status.num_reflected_updates_downloaded_total = 50;
status.num_local_overwrites = 15;
status.num_server_overwrites = 18;
scoped_ptr<DictionaryValue> value(status.ToValue());
- EXPECT_EQ(7u, value->size());
+ EXPECT_EQ(8u, value->size());
ExpectDictBooleanValue(status.invalid_store, *value, "invalidStore");
ExpectDictIntegerValue(status.num_successful_commits,
*value, "numSuccessfulCommits");
@@ -63,6 +64,8 @@ TEST_F(SessionStateTest, SyncerStatusToValue) {
*value, "numUpdatesDownloadedTotal");
ExpectDictIntegerValue(status.num_tombstone_updates_downloaded_total,
*value, "numTombstoneUpdatesDownloadedTotal");
+ ExpectDictIntegerValue(status.num_reflected_updates_downloaded_total,
+ *value, "numReflectedUpdatesDownloadedTotal");
ExpectDictIntegerValue(status.num_local_overwrites,
*value, "numLocalOverwrites");
ExpectDictIntegerValue(status.num_server_overwrites,
@@ -141,11 +144,12 @@ TEST_F(SessionStateTest, SyncSessionSnapshotToValue) {
kNumServerConflicts,
kDidCommitItems,
source,
+ false,
0,
base::Time::Now(),
false);
scoped_ptr<DictionaryValue> value(snapshot.ToValue());
- EXPECT_EQ(15u, value->size());
+ EXPECT_EQ(16u, value->size());
ExpectDictDictionaryValue(*expected_syncer_status_value, *value,
"syncerStatus");
ExpectDictIntegerValue(kNumServerChangesRemaining, *value,
@@ -169,6 +173,7 @@ TEST_F(SessionStateTest, SyncSessionSnapshotToValue) {
ExpectDictBooleanValue(kDidCommitItems, *value,
"didCommitItems");
ExpectDictDictionaryValue(*expected_source_value, *value, "source");
+ ExpectDictBooleanValue(false, *value, "notificationsEnabled");
}
} // namespace
diff --git a/sync/sessions/status_controller.cc b/sync/sessions/status_controller.cc
index 2ae1a96..19fdbaf 100644
--- a/sync/sessions/status_controller.cc
+++ b/sync/sessions/status_controller.cc
@@ -116,6 +116,12 @@ void StatusController::increment_num_tombstone_updates_downloaded_by(
value;
}
+void StatusController::increment_num_reflected_updates_downloaded_by(
+ int value) {
+ shared_.syncer_status.mutate()->num_reflected_updates_downloaded_total +=
+ value;
+}
+
void StatusController::set_num_server_changes_remaining(
int64 changes_remaining) {
if (shared_.num_server_changes_remaining.value() != changes_remaining)
diff --git a/sync/sessions/status_controller.h b/sync/sessions/status_controller.h
index 6a2491c..c2a3cfc 100644
--- a/sync/sessions/status_controller.h
+++ b/sync/sessions/status_controller.h
@@ -214,6 +214,7 @@ class StatusController {
void increment_num_successful_bookmark_commits();
void increment_num_updates_downloaded_by(int value);
void increment_num_tombstone_updates_downloaded_by(int value);
+ void increment_num_reflected_updates_downloaded_by(int value);
void set_types_needing_local_migration(syncable::ModelTypeSet types);
void set_unsynced_handles(const std::vector<int64>& unsynced_handles);
void increment_num_local_overwrites();
diff --git a/sync/sessions/sync_session.cc b/sync/sessions/sync_session.cc
index 2a93b44..307ae97 100644
--- a/sync/sessions/sync_session.cc
+++ b/sync/sessions/sync_session.cc
@@ -165,6 +165,7 @@ SyncSessionSnapshot SyncSession::TakeSnapshot() const {
status_controller_->TotalNumServerConflictingItems(),
status_controller_->did_commit_items(),
source_,
+ context_->notifications_enabled(),
dir->GetEntriesCount(),
status_controller_->sync_start_time(),
!Succeeded());