Commit 89d27148 authored by khmel's avatar khmel Committed by Commit Bot

arc: Fix metrics change in ARC OptIn is not reflected in Settings.

This modifies ChromeOS settings for metrics instead of lower level
metrics preferences. ChromeOS settings change has mapping to lower
level metrics but not the opposite way. That is why change in metrics
mode from ARC OptIn page was not propogated to Chrome settings.

Test: Manually on device
Bug: 755716
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: I81ce5d38d34ade6d6f2737804eee5c1e7fa0822e
Reviewed-on: https://chromium-review.googlesource.com/736145Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Yury Khmel <khmel@google.com>
Cr-Commit-Position: refs/heads/master@{#513014}
parent 61437c92
......@@ -7,10 +7,10 @@
#include "base/bind.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/arc/optin/arc_optin_preference_handler_observer.h"
#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/extensions/api/settings_private/prefs_util.h"
#include "chrome/browser/metrics/metrics_reporting_state.h"
#include "components/arc/arc_prefs.h"
#include "components/metrics/metrics_pref_names.h"
#include "components/prefs/pref_service.h"
namespace arc {
......@@ -24,13 +24,11 @@ ArcOptInPreferenceHandler::ArcOptInPreferenceHandler(
}
void ArcOptInPreferenceHandler::Start() {
if (g_browser_process->local_state()) {
pref_local_change_registrar_.Init(g_browser_process->local_state());
pref_local_change_registrar_.Add(
metrics::prefs::kMetricsReportingEnabled,
base::Bind(&ArcOptInPreferenceHandler::OnMetricsPreferenceChanged,
base::Unretained(this)));
}
reporting_consent_subscription_ =
chromeos::CrosSettings::Get()->AddSettingsObserver(
chromeos::kStatsReportingPref,
base::Bind(&ArcOptInPreferenceHandler::OnMetricsPreferenceChanged,
base::Unretained(this)));
pref_change_registrar_.Init(pref_service_);
pref_change_registrar_.Add(
......@@ -65,9 +63,11 @@ void ArcOptInPreferenceHandler::OnLocationServicePreferenceChanged() {
void ArcOptInPreferenceHandler::SendMetricsMode() {
if (g_browser_process->local_state()) {
observer_->OnMetricsModeChanged(
ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(),
IsMetricsReportingPolicyManaged());
bool enabled = false;
const bool exists = chromeos::CrosSettings::Get()->GetBoolean(
chromeos::kStatsReportingPref, &enabled);
DCHECK(exists);
observer_->OnMetricsModeChanged(enabled, IsMetricsReportingPolicyManaged());
}
}
......@@ -96,8 +96,8 @@ void ArcOptInPreferenceHandler::SendLocationServicesMode() {
}
void ArcOptInPreferenceHandler::EnableMetrics(bool is_enabled) {
if (g_browser_process->local_state())
ChangeMetricsReportingState(is_enabled);
chromeos::CrosSettings::Get()->SetBoolean(chromeos::kStatsReportingPref,
is_enabled);
}
void ArcOptInPreferenceHandler::EnableBackupRestore(bool is_enabled) {
......
......@@ -5,8 +5,11 @@
#ifndef CHROME_BROWSER_CHROMEOS_ARC_OPTIN_ARC_OPTIN_PREFERENCE_HANDLER_H_
#define CHROME_BROWSER_CHROMEOS_ARC_OPTIN_ARC_OPTIN_PREFERENCE_HANDLER_H_
#include <memory>
#include "base/macros.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "components/prefs/pref_change_registrar.h"
class PrefService;
......@@ -54,6 +57,9 @@ class ArcOptInPreferenceHandler {
PrefChangeRegistrar pref_local_change_registrar_;
// Used to track backup&restore and location service preference.
PrefChangeRegistrar pref_change_registrar_;
// Metrics consent observer.
std::unique_ptr<chromeos::CrosSettings::ObserverSubscription>
reporting_consent_subscription_;
DISALLOW_COPY_AND_ASSIGN(ArcOptInPreferenceHandler);
};
......
......@@ -25,10 +25,6 @@ class CrashesDOMHandler;
class FlashDOMHandler;
}
namespace arc {
class ArcOptInPreferenceHandler;
}
namespace chrome {
void AttemptRestart();
namespace android {
......@@ -92,7 +88,6 @@ class ChromeMetricsServiceAccessor : public metrics::MetricsServiceAccessor {
private:
friend class ::CrashesDOMHandler;
friend class ::FlashDOMHandler;
friend class arc::ArcOptInPreferenceHandler;
friend class BrowserProcessImpl;
friend void chrome::AttemptRestart();
friend class chrome::android::ExternalDataUseObserverBridge;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment