Index: chrome/browser/dom_ui/advanced_options_handler.cc |
=================================================================== |
--- chrome/browser/dom_ui/advanced_options_handler.cc (revision 60664) |
+++ chrome/browser/dom_ui/advanced_options_handler.cc (working copy) |
@@ -10,6 +10,7 @@ |
#include "base/command_line.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/dom_ui/options_managed_banner_handler.h" |
#include "chrome/browser/download/download_manager.h" |
#include "chrome/browser/download/download_prefs.h" |
@@ -150,10 +151,13 @@ |
l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_OKLABEL)); |
localized_strings->SetString("optionsResetCancelLabel", |
l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_CANCELLABEL)); |
+ localized_strings->SetString("optionsRestartRequired", |
+ l10n_util::GetStringUTF16(IDS_OPTIONS_RESTART_REQUIRED)); |
} |
void AdvancedOptionsHandler::Initialize() { |
DCHECK(dom_ui_); |
+ SetupMetricsReportingCheckbox(false); |
SetupDownloadLocationPath(); |
SetupAutoOpenFileTypesDisabledAttribute(); |
SetupProxySettingsSection(); |
@@ -174,6 +178,8 @@ |
// special behaviors that aren't handled by the standard prefs UI. |
DCHECK(dom_ui_); |
PrefService* prefs = dom_ui_->GetProfile()->GetPrefs(); |
+ enable_metrics_recording_.Init(prefs::kMetricsReportingEnabled, |
+ g_browser_process->local_state(), this); |
default_download_location_.Init(prefs::kDownloadDefaultDirectory, |
prefs, this); |
auto_open_files_.Init(prefs::kDownloadExtensionsToOpen, prefs, this); |
@@ -196,6 +202,9 @@ |
dom_ui_->RegisterMessageCallback("resetToDefaults", |
NewCallback(this, |
&AdvancedOptionsHandler::HandleResetToDefaults)); |
+ dom_ui_->RegisterMessageCallback("metricsReportingCheckboxAction", |
+ NewCallback(this, |
+ &AdvancedOptionsHandler::HandleMetricsReportingCheckbox)); |
#if !defined(OS_CHROMEOS) |
dom_ui_->RegisterMessageCallback("showManageSSLCertificates", |
NewCallback(this, |
@@ -264,6 +273,23 @@ |
OptionsUtil::ResetToDefaults(dom_ui_->GetProfile()); |
} |
+void AdvancedOptionsHandler::HandleMetricsReportingCheckbox( |
+ const ListValue* args) { |
+#if defined(GOOGLE_CHROME_BUILD) |
+ std::string checked_str = WideToUTF8(ExtractStringValue(args)); |
+ bool enabled = (checked_str == "true"); |
+ UserMetricsRecordAction( |
+ enabled ? |
+ UserMetricsAction("Options_MetricsReportingCheckbox_Enable") : |
+ UserMetricsAction("Options_MetricsReportingCheckbox_Disable")); |
+ bool is_enabled = OptionsUtil::ResolveMetricsReportingEnabled(enabled); |
+ enable_metrics_recording_.SetValue(is_enabled); |
+ |
+ bool user_changed = (enabled == is_enabled); |
+ SetupMetricsReportingCheckbox(user_changed); |
+#endif |
+} |
+ |
#if defined(OS_WIN) |
void AdvancedOptionsHandler::HandleCheckRevocationCheckbox( |
const ListValue* args) { |
@@ -303,6 +329,17 @@ |
} |
#endif |
+void AdvancedOptionsHandler::SetupMetricsReportingCheckbox(bool user_changed) { |
+#if defined(GOOGLE_CHROME_BUILD) |
+ FundamentalValue checked(enable_metrics_recording_.GetValue()); |
+ FundamentalValue disabled(enable_metrics_recording_.IsManaged()); |
+ FundamentalValue user_has_changed(user_changed); |
+ dom_ui_->CallJavascriptFunction( |
+ L"options.AdvancedOptions.SetMetricsReportingCheckboxState", checked, |
+ disabled, user_has_changed); |
+#endif |
+} |
+ |
void AdvancedOptionsHandler::SetupDownloadLocationPath() { |
StringValue value(default_download_location_.GetValue().value()); |
dom_ui_->CallJavascriptFunction( |