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

Side by Side Diff: components/sync_driver/device_info_sync_service.cc

Issue 1082853007: [Sync] Record histogram for mismatched device_ids (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 unified diff | Download patch
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/sync_driver/device_info_sync_service.h" 5 #include "components/sync_driver/device_info_sync_service.h"
6 6
7 #include "base/metrics/histogram.h"
7 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
8 #include "components/sync_driver/local_device_info_provider.h" 9 #include "components/sync_driver/local_device_info_provider.h"
9 #include "sync/api/sync_change.h" 10 #include "sync/api/sync_change.h"
10 #include "sync/protocol/sync.pb.h" 11 #include "sync/protocol/sync.pb.h"
11 #include "sync/util/time.h" 12 #include "sync/util/time.h"
12 13
13 namespace sync_driver { 14 namespace sync_driver {
14 15
15 using syncer::ModelType; 16 using syncer::ModelType;
16 using syncer::SyncChange; 17 using syncer::SyncChange;
17 using syncer::SyncChangeList; 18 using syncer::SyncChangeList;
18 using syncer::SyncChangeProcessor; 19 using syncer::SyncChangeProcessor;
19 using syncer::SyncData; 20 using syncer::SyncData;
20 using syncer::SyncDataList; 21 using syncer::SyncDataList;
21 using syncer::SyncErrorFactory; 22 using syncer::SyncErrorFactory;
22 using syncer::SyncMergeResult; 23 using syncer::SyncMergeResult;
23 24
25 namespace {
26
27 // 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.
28 // When signin_scoped_device_id from pref doesn't match the one in
29 // DeviceInfoSpecfics record histogram telling if sync or pref copy was empty.
30 // This will indicate how often such mismatch happens and what was the state
31 // before.
32 enum DeviceIdMismatchForHistogram {
33 DEVICE_ID_MISMATCH_BOTH_NONEMPTY = 0,
34 DEVICE_ID_MISMATCH_SYNC_EMPTY,
35 DEVICE_ID_MISMATCH_PREF_EMPTY,
36 DEVICE_ID_MISMATCH_COUNT,
37 };
38
39 void RecordDeviceIdChangedHistogram(const std::string& device_id_from_sync,
40 const std::string& device_id_from_pref) {
41 DCHECK(device_id_from_sync != device_id_from_pref);
42 DeviceIdMismatchForHistogram device_id_mismatch_for_histogram =
43 DEVICE_ID_MISMATCH_BOTH_NONEMPTY;
44 if (device_id_from_sync.empty()) {
45 device_id_mismatch_for_histogram = DEVICE_ID_MISMATCH_SYNC_EMPTY;
46 } else if (device_id_from_pref.empty()) {
47 device_id_mismatch_for_histogram = DEVICE_ID_MISMATCH_PREF_EMPTY;
48 }
49 UMA_HISTOGRAM_ENUMERATION("Sync.DeviceIdMismatchDetails",
50 device_id_mismatch_for_histogram,
51 DEVICE_ID_MISMATCH_COUNT);
52 }
53
54 } // namespace
55
24 DeviceInfoSyncService::DeviceInfoSyncService( 56 DeviceInfoSyncService::DeviceInfoSyncService(
25 LocalDeviceInfoProvider* local_device_info_provider) 57 LocalDeviceInfoProvider* local_device_info_provider)
26 : local_device_backup_time_(-1), 58 : local_device_backup_time_(-1),
27 local_device_info_provider_(local_device_info_provider) { 59 local_device_info_provider_(local_device_info_provider) {
28 DCHECK(local_device_info_provider); 60 DCHECK(local_device_info_provider);
29 } 61 }
30 62
31 DeviceInfoSyncService::~DeviceInfoSyncService() { 63 DeviceInfoSyncService::~DeviceInfoSyncService() {
32 } 64 }
33 65
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 int64 synced_backup_time = 110 int64 synced_backup_time =
79 has_synced_backup_time 111 has_synced_backup_time
80 ? iter->GetSpecifics().device_info().backup_timestamp() 112 ? iter->GetSpecifics().device_info().backup_timestamp()
81 : -1; 113 : -1;
82 114
83 // Overwrite |local_device_backup_time_| with this value if it 115 // Overwrite |local_device_backup_time_| with this value if it
84 // hasn't been set yet. 116 // hasn't been set yet.
85 if (!has_local_device_backup_time() && has_synced_backup_time) { 117 if (!has_local_device_backup_time() && has_synced_backup_time) {
86 set_local_device_backup_time(synced_backup_time); 118 set_local_device_backup_time(synced_backup_time);
87 } 119 }
120 // TODO(pavely): Remove histogram once device_id mismatch is understood.
121 if (synced_local_device_info->signin_scoped_device_id() !=
122 local_device_info->signin_scoped_device_id()) {
123 RecordDeviceIdChangedHistogram(
124 synced_local_device_info->signin_scoped_device_id(),
125 local_device_info->signin_scoped_device_id());
126 }
88 127
89 // Store the synced device info for the local device only 128 // Store the synced device info for the local device only
90 // it is the same as the local info. Otherwise store the local 129 // it is the same as the local info. Otherwise store the local
91 // device info and issue a change further below after finishing 130 // device info and issue a change further below after finishing
92 // processing the |initial_sync_data|. 131 // processing the |initial_sync_data|.
93 if (synced_local_device_info->Equals(*local_device_info) && 132 if (synced_local_device_info->Equals(*local_device_info) &&
94 synced_backup_time == local_device_backup_time()) { 133 synced_backup_time == local_device_backup_time()) {
95 change_type = SyncChange::ACTION_INVALID; 134 change_type = SyncChange::ACTION_INVALID;
96 } else { 135 } else {
97 num_items_updated++; 136 num_items_updated++;
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 SyncDataMap::iterator iter = all_data_.find(client_id); 383 SyncDataMap::iterator iter = all_data_.find(client_id);
345 if (iter != all_data_.end()) { 384 if (iter != all_data_.end()) {
346 DVLOG(1) << "Deleting DEVICE_INFO for " 385 DVLOG(1) << "Deleting DEVICE_INFO for "
347 << iter->second.GetSpecifics().device_info().client_name() 386 << iter->second.GetSpecifics().device_info().client_name()
348 << " with ID " << client_id; 387 << " with ID " << client_id;
349 all_data_.erase(iter); 388 all_data_.erase(iter);
350 } 389 }
351 } 390 }
352 391
353 } // namespace sync_driver 392 } // namespace sync_driver
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698