| Index: components/metrics/metrics_state_manager.cc
|
| diff --git a/components/metrics/metrics_state_manager.cc b/components/metrics/metrics_state_manager.cc
|
| index b470e3db1e6cbc1a8a473b6628a16a74b6d2adff..ae0754e8ea1134b9e8ddcacca676ccb0c7772394 100644
|
| --- a/components/metrics/metrics_state_manager.cc
|
| +++ b/components/metrics/metrics_state_manager.cc
|
| @@ -83,10 +83,15 @@ bool MetricsStateManager::IsMetricsReportingEnabled() {
|
| }
|
|
|
| void MetricsStateManager::ForceClientIdCreation() {
|
| - if (!client_id_.empty())
|
| - return;
|
| + {
|
| + std::string client_id_from_prefs =
|
| + local_state_->GetString(prefs::kMetricsClientID);
|
| + // If client id in prefs matches the cached copy, return early.
|
| + if (!client_id_from_prefs.empty() && client_id_from_prefs == client_id_)
|
| + return;
|
| + client_id_.swap(client_id_from_prefs);
|
| + }
|
|
|
| - client_id_ = local_state_->GetString(prefs::kMetricsClientID);
|
| if (!client_id_.empty()) {
|
| // It is technically sufficient to only save a backup of the client id when
|
| // it is initially generated below, but since the backup was only introduced
|
|
|