| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/dom_ui/advanced_options_handler.h" | 5 #include "chrome/browser/dom_ui/advanced_options_handler.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| 11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
| 12 #include "base/values.h" | 12 #include "base/values.h" |
| 13 #include "chrome/browser/browser_process.h" |
| 13 #include "chrome/browser/dom_ui/options_managed_banner_handler.h" | 14 #include "chrome/browser/dom_ui/options_managed_banner_handler.h" |
| 14 #include "chrome/browser/download/download_manager.h" | 15 #include "chrome/browser/download/download_manager.h" |
| 15 #include "chrome/browser/download/download_prefs.h" | 16 #include "chrome/browser/download/download_prefs.h" |
| 16 #include "chrome/browser/metrics/user_metrics.h" | 17 #include "chrome/browser/metrics/user_metrics.h" |
| 17 #include "chrome/browser/options_util.h" | 18 #include "chrome/browser/options_util.h" |
| 18 #include "chrome/browser/options_window.h" | 19 #include "chrome/browser/options_window.h" |
| 19 #include "chrome/browser/prefs/pref_service.h" | 20 #include "chrome/browser/prefs/pref_service.h" |
| 20 #include "chrome/browser/profile.h" | 21 #include "chrome/browser/profile.h" |
| 21 #include "chrome/browser/tab_contents/tab_contents.h" | 22 #include "chrome/browser/tab_contents/tab_contents.h" |
| 22 #include "chrome/browser/tab_contents/tab_contents_view.h" | 23 #include "chrome/browser/tab_contents/tab_contents_view.h" |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 localized_strings->SetString("disableServices", | 144 localized_strings->SetString("disableServices", |
| 144 l10n_util::GetStringUTF16(IDS_OPTIONS_DISABLE_SERVICES)); | 145 l10n_util::GetStringUTF16(IDS_OPTIONS_DISABLE_SERVICES)); |
| 145 localized_strings->SetString("optionsReset", | 146 localized_strings->SetString("optionsReset", |
| 146 l10n_util::GetStringUTF16(IDS_OPTIONS_RESET)); | 147 l10n_util::GetStringUTF16(IDS_OPTIONS_RESET)); |
| 147 localized_strings->SetString("optionsResetMessage", | 148 localized_strings->SetString("optionsResetMessage", |
| 148 l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_MESSAGE)); | 149 l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_MESSAGE)); |
| 149 localized_strings->SetString("optionsResetOkLabel", | 150 localized_strings->SetString("optionsResetOkLabel", |
| 150 l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_OKLABEL)); | 151 l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_OKLABEL)); |
| 151 localized_strings->SetString("optionsResetCancelLabel", | 152 localized_strings->SetString("optionsResetCancelLabel", |
| 152 l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_CANCELLABEL)); | 153 l10n_util::GetStringUTF16(IDS_OPTIONS_RESET_CANCELLABEL)); |
| 154 localized_strings->SetString("optionsRestartRequired", |
| 155 l10n_util::GetStringUTF16(IDS_OPTIONS_RESTART_REQUIRED)); |
| 153 } | 156 } |
| 154 | 157 |
| 155 void AdvancedOptionsHandler::Initialize() { | 158 void AdvancedOptionsHandler::Initialize() { |
| 156 DCHECK(dom_ui_); | 159 DCHECK(dom_ui_); |
| 160 SetupMetricsReportingCheckbox(false); |
| 157 SetupDownloadLocationPath(); | 161 SetupDownloadLocationPath(); |
| 158 SetupAutoOpenFileTypesDisabledAttribute(); | 162 SetupAutoOpenFileTypesDisabledAttribute(); |
| 159 SetupProxySettingsSection(); | 163 SetupProxySettingsSection(); |
| 160 #if defined(OS_WIN) | 164 #if defined(OS_WIN) |
| 161 SetupSSLConfigSettings(); | 165 SetupSSLConfigSettings(); |
| 162 #endif | 166 #endif |
| 163 banner_handler_.reset( | 167 banner_handler_.reset( |
| 164 new OptionsManagedBannerHandler(dom_ui_, | 168 new OptionsManagedBannerHandler(dom_ui_, |
| 165 ASCIIToUTF16("AdvancedOptions"), | 169 ASCIIToUTF16("AdvancedOptions"), |
| 166 OPTIONS_PAGE_ADVANCED)); | 170 OPTIONS_PAGE_ADVANCED)); |
| 167 } | 171 } |
| 168 | 172 |
| 169 DOMMessageHandler* AdvancedOptionsHandler::Attach(DOMUI* dom_ui) { | 173 DOMMessageHandler* AdvancedOptionsHandler::Attach(DOMUI* dom_ui) { |
| 170 // Call through to superclass. | 174 // Call through to superclass. |
| 171 DOMMessageHandler* handler = OptionsPageUIHandler::Attach(dom_ui); | 175 DOMMessageHandler* handler = OptionsPageUIHandler::Attach(dom_ui); |
| 172 | 176 |
| 173 // Register for preferences that we need to observe manually. These have | 177 // Register for preferences that we need to observe manually. These have |
| 174 // special behaviors that aren't handled by the standard prefs UI. | 178 // special behaviors that aren't handled by the standard prefs UI. |
| 175 DCHECK(dom_ui_); | 179 DCHECK(dom_ui_); |
| 176 PrefService* prefs = dom_ui_->GetProfile()->GetPrefs(); | 180 PrefService* prefs = dom_ui_->GetProfile()->GetPrefs(); |
| 181 enable_metrics_recording_.Init(prefs::kMetricsReportingEnabled, |
| 182 g_browser_process->local_state(), this); |
| 177 default_download_location_.Init(prefs::kDownloadDefaultDirectory, | 183 default_download_location_.Init(prefs::kDownloadDefaultDirectory, |
| 178 prefs, this); | 184 prefs, this); |
| 179 auto_open_files_.Init(prefs::kDownloadExtensionsToOpen, prefs, this); | 185 auto_open_files_.Init(prefs::kDownloadExtensionsToOpen, prefs, this); |
| 180 proxy_prefs_.reset( | 186 proxy_prefs_.reset( |
| 181 PrefSetObserver::CreateProxyPrefSetObserver(prefs, this)); | 187 PrefSetObserver::CreateProxyPrefSetObserver(prefs, this)); |
| 182 | 188 |
| 183 // Return result from the superclass. | 189 // Return result from the superclass. |
| 184 return handler; | 190 return handler; |
| 185 } | 191 } |
| 186 | 192 |
| 187 void AdvancedOptionsHandler::RegisterMessages() { | 193 void AdvancedOptionsHandler::RegisterMessages() { |
| 188 // Setup handlers specific to this panel. | 194 // Setup handlers specific to this panel. |
| 189 DCHECK(dom_ui_); | 195 DCHECK(dom_ui_); |
| 190 dom_ui_->RegisterMessageCallback("selectDownloadLocation", | 196 dom_ui_->RegisterMessageCallback("selectDownloadLocation", |
| 191 NewCallback(this, | 197 NewCallback(this, |
| 192 &AdvancedOptionsHandler::HandleSelectDownloadLocation)); | 198 &AdvancedOptionsHandler::HandleSelectDownloadLocation)); |
| 193 dom_ui_->RegisterMessageCallback("autoOpenFileTypesAction", | 199 dom_ui_->RegisterMessageCallback("autoOpenFileTypesAction", |
| 194 NewCallback(this, | 200 NewCallback(this, |
| 195 &AdvancedOptionsHandler::HandleAutoOpenButton)); | 201 &AdvancedOptionsHandler::HandleAutoOpenButton)); |
| 196 dom_ui_->RegisterMessageCallback("resetToDefaults", | 202 dom_ui_->RegisterMessageCallback("resetToDefaults", |
| 197 NewCallback(this, | 203 NewCallback(this, |
| 198 &AdvancedOptionsHandler::HandleResetToDefaults)); | 204 &AdvancedOptionsHandler::HandleResetToDefaults)); |
| 205 dom_ui_->RegisterMessageCallback("metricsReportingCheckboxAction", |
| 206 NewCallback(this, |
| 207 &AdvancedOptionsHandler::HandleMetricsReportingCheckbox)); |
| 199 #if !defined(OS_CHROMEOS) | 208 #if !defined(OS_CHROMEOS) |
| 200 dom_ui_->RegisterMessageCallback("showManageSSLCertificates", | 209 dom_ui_->RegisterMessageCallback("showManageSSLCertificates", |
| 201 NewCallback(this, | 210 NewCallback(this, |
| 202 &AdvancedOptionsHandler::ShowManageSSLCertificates)); | 211 &AdvancedOptionsHandler::ShowManageSSLCertificates)); |
| 203 dom_ui_->RegisterMessageCallback("showNetworkProxySettings", | 212 dom_ui_->RegisterMessageCallback("showNetworkProxySettings", |
| 204 NewCallback(this, | 213 NewCallback(this, |
| 205 &AdvancedOptionsHandler::ShowNetworkProxySettings)); | 214 &AdvancedOptionsHandler::ShowNetworkProxySettings)); |
| 206 #endif | 215 #endif |
| 207 | 216 |
| 208 #if defined(OS_WIN) | 217 #if defined(OS_WIN) |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 UserMetricsRecordAction(UserMetricsAction("Options_ResetAutoOpenFiles")); | 266 UserMetricsRecordAction(UserMetricsAction("Options_ResetAutoOpenFiles")); |
| 258 DownloadManager* manager = dom_ui_->GetProfile()->GetDownloadManager(); | 267 DownloadManager* manager = dom_ui_->GetProfile()->GetDownloadManager(); |
| 259 if (manager) | 268 if (manager) |
| 260 manager->download_prefs()->ResetAutoOpen(); | 269 manager->download_prefs()->ResetAutoOpen(); |
| 261 } | 270 } |
| 262 | 271 |
| 263 void AdvancedOptionsHandler::HandleResetToDefaults(const ListValue* args) { | 272 void AdvancedOptionsHandler::HandleResetToDefaults(const ListValue* args) { |
| 264 OptionsUtil::ResetToDefaults(dom_ui_->GetProfile()); | 273 OptionsUtil::ResetToDefaults(dom_ui_->GetProfile()); |
| 265 } | 274 } |
| 266 | 275 |
| 276 void AdvancedOptionsHandler::HandleMetricsReportingCheckbox( |
| 277 const ListValue* args) { |
| 278 #if defined(GOOGLE_CHROME_BUILD) |
| 279 std::string checked_str = WideToUTF8(ExtractStringValue(args)); |
| 280 bool enabled = (checked_str == "true"); |
| 281 UserMetricsRecordAction( |
| 282 enabled ? |
| 283 UserMetricsAction("Options_MetricsReportingCheckbox_Enable") : |
| 284 UserMetricsAction("Options_MetricsReportingCheckbox_Disable")); |
| 285 bool is_enabled = OptionsUtil::ResolveMetricsReportingEnabled(enabled); |
| 286 enable_metrics_recording_.SetValue(is_enabled); |
| 287 |
| 288 bool user_changed = (enabled == is_enabled); |
| 289 SetupMetricsReportingCheckbox(user_changed); |
| 290 #endif |
| 291 } |
| 292 |
| 267 #if defined(OS_WIN) | 293 #if defined(OS_WIN) |
| 268 void AdvancedOptionsHandler::HandleCheckRevocationCheckbox( | 294 void AdvancedOptionsHandler::HandleCheckRevocationCheckbox( |
| 269 const ListValue* args) { | 295 const ListValue* args) { |
| 270 std::string checked_str = WideToUTF8(ExtractStringValue(args)); | 296 std::string checked_str = WideToUTF8(ExtractStringValue(args)); |
| 271 std::string metric = | 297 std::string metric = |
| 272 (checked_str == "true" ? "Options_CheckCertRevocation_Enable" | 298 (checked_str == "true" ? "Options_CheckCertRevocation_Enable" |
| 273 : "Options_CheckCertRevocation_Disable"); | 299 : "Options_CheckCertRevocation_Disable"); |
| 274 UserMetricsRecordAction(UserMetricsAction(metric.c_str())); | 300 UserMetricsRecordAction(UserMetricsAction(metric.c_str())); |
| 275 net::SSLConfigServiceWin::SetRevCheckingEnabled(checked_str == "true"); | 301 net::SSLConfigServiceWin::SetRevCheckingEnabled(checked_str == "true"); |
| 276 } | 302 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 296 UserMetricsRecordAction(UserMetricsAction("Options_ShowProxySettings")); | 322 UserMetricsRecordAction(UserMetricsAction("Options_ShowProxySettings")); |
| 297 AdvancedOptionsUtilities::ShowNetworkProxySettings(dom_ui_->tab_contents()); | 323 AdvancedOptionsUtilities::ShowNetworkProxySettings(dom_ui_->tab_contents()); |
| 298 } | 324 } |
| 299 | 325 |
| 300 void AdvancedOptionsHandler::ShowManageSSLCertificates(const ListValue* args) { | 326 void AdvancedOptionsHandler::ShowManageSSLCertificates(const ListValue* args) { |
| 301 UserMetricsRecordAction(UserMetricsAction("Options_ManageSSLCertificates")); | 327 UserMetricsRecordAction(UserMetricsAction("Options_ManageSSLCertificates")); |
| 302 AdvancedOptionsUtilities::ShowManageSSLCertificates(dom_ui_->tab_contents()); | 328 AdvancedOptionsUtilities::ShowManageSSLCertificates(dom_ui_->tab_contents()); |
| 303 } | 329 } |
| 304 #endif | 330 #endif |
| 305 | 331 |
| 332 void AdvancedOptionsHandler::SetupMetricsReportingCheckbox(bool user_changed) { |
| 333 #if defined(GOOGLE_CHROME_BUILD) |
| 334 FundamentalValue checked(enable_metrics_recording_.GetValue()); |
| 335 FundamentalValue disabled(enable_metrics_recording_.IsManaged()); |
| 336 FundamentalValue user_has_changed(user_changed); |
| 337 dom_ui_->CallJavascriptFunction( |
| 338 L"options.AdvancedOptions.SetMetricsReportingCheckboxState", checked, |
| 339 disabled, user_has_changed); |
| 340 #endif |
| 341 } |
| 342 |
| 306 void AdvancedOptionsHandler::SetupDownloadLocationPath() { | 343 void AdvancedOptionsHandler::SetupDownloadLocationPath() { |
| 307 StringValue value(default_download_location_.GetValue().value()); | 344 StringValue value(default_download_location_.GetValue().value()); |
| 308 dom_ui_->CallJavascriptFunction( | 345 dom_ui_->CallJavascriptFunction( |
| 309 L"options.AdvancedOptions.SetDownloadLocationPath", value); | 346 L"options.AdvancedOptions.SetDownloadLocationPath", value); |
| 310 } | 347 } |
| 311 | 348 |
| 312 void AdvancedOptionsHandler::SetupAutoOpenFileTypesDisabledAttribute() { | 349 void AdvancedOptionsHandler::SetupAutoOpenFileTypesDisabledAttribute() { |
| 313 // Set the enabled state for the AutoOpenFileTypesResetToDefault button. | 350 // Set the enabled state for the AutoOpenFileTypesResetToDefault button. |
| 314 // We enable the button if the user has any auto-open file types registered. | 351 // We enable the button if the user has any auto-open file types registered. |
| 315 DownloadManager* manager = dom_ui_->GetProfile()->GetDownloadManager(); | 352 DownloadManager* manager = dom_ui_->GetProfile()->GetDownloadManager(); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 } | 393 } |
| 357 FundamentalValue checkRevocationValue(checkRevocationSetting); | 394 FundamentalValue checkRevocationValue(checkRevocationSetting); |
| 358 dom_ui_->CallJavascriptFunction( | 395 dom_ui_->CallJavascriptFunction( |
| 359 L"options.AdvancedOptions.SetCheckRevocationCheckboxState", | 396 L"options.AdvancedOptions.SetCheckRevocationCheckboxState", |
| 360 checkRevocationValue); | 397 checkRevocationValue); |
| 361 FundamentalValue useSSLValue(useSSLSetting); | 398 FundamentalValue useSSLValue(useSSLSetting); |
| 362 dom_ui_->CallJavascriptFunction( | 399 dom_ui_->CallJavascriptFunction( |
| 363 L"options.AdvancedOptions.SetUseSSL2CheckboxStatechecked", useSSLValue); | 400 L"options.AdvancedOptions.SetUseSSL2CheckboxStatechecked", useSSLValue); |
| 364 } | 401 } |
| 365 #endif | 402 #endif |
| OLD | NEW |