Index: components/sync_driver/device_info_sync_service.cc |
diff --git a/components/sync_driver/device_info_sync_service.cc b/components/sync_driver/device_info_sync_service.cc |
index 76ea831a70d94fd00dc3419635aeb668ff612411..9443cd1bc739e9f60112f132c15c02b94c97fef3 100644 |
--- a/components/sync_driver/device_info_sync_service.cc |
+++ b/components/sync_driver/device_info_sync_service.cc |
@@ -4,6 +4,7 @@ |
#include "components/sync_driver/device_info_sync_service.h" |
+#include "base/metrics/histogram.h" |
#include "base/strings/stringprintf.h" |
#include "components/sync_driver/local_device_info_provider.h" |
#include "sync/api/sync_change.h" |
@@ -21,6 +22,37 @@ using syncer::SyncDataList; |
using syncer::SyncErrorFactory; |
using syncer::SyncMergeResult; |
+namespace { |
+ |
+// TODO(pavely): Remove histogram once device_id mismatch is understood. |
stanisc
2015/04/24 23:05:40
Perhaps mention the crbug here.
pavely
2015/04/27 18:40:35
Done.
|
+// When signin_scoped_device_id from pref doesn't match the one in |
+// DeviceInfoSpecfics record histogram telling if sync or pref copy was empty. |
+// This will indicate how often such mismatch happens and what was the state |
+// before. |
+enum DeviceIdMismatchForHistogram { |
+ DEVICE_ID_MISMATCH_BOTH_NONEMPTY = 0, |
+ DEVICE_ID_MISMATCH_SYNC_EMPTY, |
+ DEVICE_ID_MISMATCH_PREF_EMPTY, |
+ DEVICE_ID_MISMATCH_COUNT, |
+}; |
+ |
+void RecordDeviceIdChangedHistogram(const std::string& device_id_from_sync, |
+ const std::string& device_id_from_pref) { |
+ DCHECK(device_id_from_sync != device_id_from_pref); |
+ DeviceIdMismatchForHistogram device_id_mismatch_for_histogram = |
+ DEVICE_ID_MISMATCH_BOTH_NONEMPTY; |
+ if (device_id_from_sync.empty()) { |
+ device_id_mismatch_for_histogram = DEVICE_ID_MISMATCH_SYNC_EMPTY; |
+ } else if (device_id_from_pref.empty()) { |
+ device_id_mismatch_for_histogram = DEVICE_ID_MISMATCH_PREF_EMPTY; |
+ } |
+ UMA_HISTOGRAM_ENUMERATION("Sync.DeviceIdMismatchDetails", |
+ device_id_mismatch_for_histogram, |
+ DEVICE_ID_MISMATCH_COUNT); |
+} |
+ |
+} // namespace |
+ |
DeviceInfoSyncService::DeviceInfoSyncService( |
LocalDeviceInfoProvider* local_device_info_provider) |
: local_device_backup_time_(-1), |
@@ -85,6 +117,13 @@ SyncMergeResult DeviceInfoSyncService::MergeDataAndStartSyncing( |
if (!has_local_device_backup_time() && has_synced_backup_time) { |
set_local_device_backup_time(synced_backup_time); |
} |
+ // TODO(pavely): Remove histogram once device_id mismatch is understood. |
+ if (synced_local_device_info->signin_scoped_device_id() != |
+ local_device_info->signin_scoped_device_id()) { |
+ RecordDeviceIdChangedHistogram( |
+ synced_local_device_info->signin_scoped_device_id(), |
+ local_device_info->signin_scoped_device_id()); |
+ } |
// Store the synced device info for the local device only |
// it is the same as the local info. Otherwise store the local |