Chromium Code Reviews| 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 |