Index: chrome/browser/ui/webui/options/chromeos/stats_options_handler.cc |
=================================================================== |
--- chrome/browser/ui/webui/options/chromeos/stats_options_handler.cc (revision 94787) |
+++ chrome/browser/ui/webui/options/chromeos/stats_options_handler.cc (working copy) |
@@ -4,24 +4,27 @@ |
#include "chrome/browser/ui/webui/options/chromeos/stats_options_handler.h" |
+#include "base/basictypes.h" |
#include "base/callback.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
-#include "chrome/browser/chromeos/user_cros_settings_provider.h" |
+#include "chrome/browser/chromeos/cros_settings_names.h" |
+#include "chrome/browser/chromeos/login/user_manager.h" |
+#include "chrome/browser/chromeos/metrics_cros_settings_provider.h" |
#include "content/browser/user_metrics.h" |
namespace chromeos { |
StatsOptionsHandler::StatsOptionsHandler() |
- : CrosOptionsPageUIHandler(new UserCrosSettingsProvider) { |
+ : CrosOptionsPageUIHandler(new MetricsCrosSettingsProvider()) { |
} |
// OptionsPageUIHandler implementation. |
void StatsOptionsHandler::GetLocalizedValues( |
DictionaryValue* localized_strings) { |
} |
- |
void StatsOptionsHandler::Initialize() { |
+ SetupMetricsReportingCheckbox(false); |
} |
// WebUIMessageHandler implementation. |
@@ -31,6 +34,10 @@ |
NewCallback(this, &StatsOptionsHandler::HandleMetricsReportingCheckbox)); |
} |
+MetricsCrosSettingsProvider* StatsOptionsHandler::provider() const { |
+ return static_cast<MetricsCrosSettingsProvider*>(settings_provider_.get()); |
+} |
+ |
void StatsOptionsHandler::HandleMetricsReportingCheckbox( |
const ListValue* args) { |
#if defined(GOOGLE_CHROME_BUILD) |
@@ -40,7 +47,20 @@ |
enabled ? |
UserMetricsAction("Options_MetricsReportingCheckbox_Enable") : |
UserMetricsAction("Options_MetricsReportingCheckbox_Disable")); |
+ const bool is_enabled = MetricsCrosSettingsProvider::GetMetricsStatus(); |
+ SetupMetricsReportingCheckbox(enabled == is_enabled); |
#endif |
} |
+void StatsOptionsHandler::SetupMetricsReportingCheckbox(bool user_changed) { |
+#if defined(GOOGLE_CHROME_BUILD) |
+ FundamentalValue checked(MetricsCrosSettingsProvider::GetMetricsStatus()); |
+ FundamentalValue disabled(!UserManager::Get()->current_user_is_owner()); |
+ FundamentalValue user_has_changed(user_changed); |
+ web_ui_->CallJavascriptFunction( |
+ "options.AdvancedOptions.SetMetricsReportingCheckboxState", checked, |
+ disabled, user_has_changed); |
+#endif |
+} |
+ |
} // namespace chromeos |