| Index: chrome/browser/ui/webui/options/browser_options_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/browser_options_handler.cc b/chrome/browser/ui/webui/options/browser_options_handler.cc
|
| index 4d47b81667d87da645834484e703b5f32641bde6..727b3acf84ee95b5fef6aad8a60e91113f51107a 100644
|
| --- a/chrome/browser/ui/webui/options/browser_options_handler.cc
|
| +++ b/chrome/browser/ui/webui/options/browser_options_handler.cc
|
| @@ -30,6 +30,8 @@
|
| #include "chrome/browser/download/download_prefs.h"
|
| #include "chrome/browser/gpu/gpu_mode_manager.h"
|
| #include "chrome/browser/lifetime/application_lifetime.h"
|
| +#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
|
| +#include "chrome/browser/metrics/metrics_reporting_state.h"
|
| #include "chrome/browser/net/prediction_options.h"
|
| #include "chrome/browser/prefs/session_startup_pref.h"
|
| #include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
|
| @@ -540,9 +542,8 @@ void BrowserOptionsHandler::GetLocalizedValues(base::DictionaryValue* values) {
|
| values->SetString("doNotTrackLearnMoreURL", chrome::kDoNotTrackLearnMoreURL);
|
|
|
| #if !defined(OS_CHROMEOS)
|
| - PrefService* pref_service = g_browser_process->local_state();
|
| - values->SetBoolean("metricsReportingEnabledAtStart", pref_service->GetBoolean(
|
| - prefs::kMetricsReportingEnabled));
|
| + values->SetBoolean("metricsReportingEnabledAtStart",
|
| + ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
|
| #endif
|
|
|
| #if defined(OS_CHROMEOS)
|
| @@ -761,6 +762,9 @@ void BrowserOptionsHandler::RegisterMessages() {
|
| &BrowserOptionsHandler::HandleRefreshExtensionControlIndicators,
|
| base::Unretained(this)));
|
| #endif // defined(OS_WIN)
|
| + web_ui()->RegisterMessageCallback("metricsReportingCheckboxChanged",
|
| + base::Bind(&BrowserOptionsHandler::HandleMetricsReportingChange,
|
| + base::Unretained(this)));
|
| }
|
|
|
| void BrowserOptionsHandler::Uninitialize() {
|
| @@ -922,6 +926,7 @@ void BrowserOptionsHandler::InitializePage() {
|
| UpdateDefaultBrowserState();
|
|
|
| SetupMetricsReportingSettingVisibility();
|
| + SetupMetricsReportingCheckbox();
|
| SetupNetworkPredictionControl();
|
| SetupFontSizeSelector();
|
| SetupPageZoomSelector();
|
| @@ -1869,4 +1874,40 @@ void BrowserOptionsHandler::SetupExtensionControlledIndicators() {
|
| #endif // defined(OS_WIN)
|
| }
|
|
|
| +void BrowserOptionsHandler::SetupMetricsReportingCheckbox() {
|
| + // This function does not work for ChromeOS. In ChromeOS a different
|
| + // preference is used. It is tied to HTML element, and therefore, no special
|
| + // setup is needed.
|
| +#if !defined(OS_CHROMEOS)
|
| + bool checked = ChromeMetricsServiceAccessor::IsMetricsReportingEnabled();
|
| + bool disabled = !IsMetricsReportingUserChangable();
|
| +
|
| + SetMetricsReportingCheckbox(checked, disabled);
|
| +#endif
|
| +}
|
| +
|
| +void BrowserOptionsHandler::HandleMetricsReportingChange(
|
| + const base::ListValue* args) {
|
| + bool enable;
|
| + if (!args->GetBoolean(0, &enable))
|
| + return;
|
| +
|
| + base::Callback<void(bool)> callback_fn = base::Bind(
|
| + &BrowserOptionsHandler::MetricsReportingChangeCallback,
|
| + base::Unretained(this));
|
| + InitiateMetricsReportingChange(enable, callback_fn);
|
| +}
|
| +
|
| +void BrowserOptionsHandler::MetricsReportingChangeCallback(bool enabled) {
|
| + SetMetricsReportingCheckbox(enabled, !IsMetricsReportingUserChangable());
|
| +}
|
| +
|
| +void BrowserOptionsHandler::SetMetricsReportingCheckbox(bool checked,
|
| + bool disabled) {
|
| + web_ui()->CallJavascriptFunction(
|
| + "BrowserOptions.setMetricsReportingCheckboxState",
|
| + base::FundamentalValue(checked),
|
| + base::FundamentalValue(disabled));
|
| +}
|
| +
|
| } // namespace options
|
|
|