1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/options/options_util.h" 6 7#include "base/threading/thread_restrictions.h" 8#include "chrome/browser/browser_process.h" 9#include "chrome/installer/util/google_update_settings.h" 10#include "components/metrics/metrics_service.h" 11 12// static 13bool OptionsUtil::ResolveMetricsReportingEnabled(bool enabled) { 14 // GoogleUpdateSettings touches the disk from the UI thread. MetricsService 15 // also calls GoogleUpdateSettings below. http://crbug/62626 16 base::ThreadRestrictions::ScopedAllowIO allow_io; 17 18 GoogleUpdateSettings::SetCollectStatsConsent(enabled); 19 bool update_pref = GoogleUpdateSettings::GetCollectStatsConsent(); 20 21 if (enabled != update_pref) 22 DVLOG(1) << "OptionsUtil: Unable to set crash report status to " << enabled; 23 24 // Only change the pref if GoogleUpdateSettings::GetCollectStatsConsent 25 // succeeds. 26 enabled = update_pref; 27 28 MetricsService* metrics = g_browser_process->metrics_service(); 29 if (metrics) { 30 if (enabled) 31 metrics->Start(); 32 else 33 metrics->Stop(); 34 } 35 36 return enabled; 37} 38