172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/options/advanced_options_handler.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include <string> 821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/callback.h" 113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/command_line.h" 123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/utf_string_conversions.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/values.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/browser_process.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/download/download_manager.h" 163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/download/download_prefs.h" 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/google/google_util.h" 183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/metrics/user_metrics.h" 193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/prefs/pref_service.h" 20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h" 21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/printing/cloud_print/cloud_print_setup_flow.h" 22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/printing/cloud_print/cloud_print_url.h" 2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h" 243f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "chrome/browser/remoting/setup_flow.h" 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/service/service_process_control.h" 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/service/service_process_control_manager.h" 2721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/options/options_util.h" 2821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/options/options_window.h" 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/options/options_managed_banner_handler.h" 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/common/chrome_switches.h" 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/pref_names.h" 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/common/url_constants.h" 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/tab_contents/tab_contents.h" 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/tab_contents/tab_contents_view.h" 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_details.h" 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_type.h" 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/chromium_strings.h" 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/generated_resources.h" 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/locale_settings.h" 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h" 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#if !defined(OS_CHROMEOS) 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/printing/cloud_print/cloud_print_setup_handler.h" 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/options/advanced_options_utils.h" 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochAdvancedOptionsHandler::AdvancedOptionsHandler() { 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#if (defined(GOOGLE_CHROME_BUILD) && defined(OS_WIN)) || defined(OS_MACOSX) 49201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch cloud_print_proxy_ui_enabled_ = true; 50201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch#elif !defined(OS_CHROMEOS) 51513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch cloud_print_proxy_ui_enabled_ = 52513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch CommandLine::ForCurrentProcess()->HasSwitch( 53513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch switches::kEnableCloudPrintProxy); 54513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochAdvancedOptionsHandler::~AdvancedOptionsHandler() { 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // There may be pending file dialogs, we need to tell them that we've gone 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // away so they don't try and call back to us. 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (select_folder_dialog_.get()) 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen select_folder_dialog_->ListenerDestroyed(); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AdvancedOptionsHandler::GetLocalizedValues( 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DictionaryValue* localized_strings) { 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(localized_strings); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 6872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static OptionsStringResource resources[] = { 6972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "downloadLocationGroupName", 7072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_DOWNLOADLOCATION_GROUP_NAME }, 7172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "downloadLocationChangeButton", 7272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_DOWNLOADLOCATION_CHANGE_BUTTON }, 7372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "downloadLocationBrowseTitle", 7472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE }, 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "downloadLocationBrowseWindowTitle", 7672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_WINDOW_TITLE }, 7772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "downloadLocationAskForSaveLocation", 7872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_DOWNLOADLOCATION_ASKFORSAVELOCATION }, 7972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "autoOpenFileTypesInfo", 8072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_OPEN_FILE_TYPES_AUTOMATICALLY }, 8172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "autoOpenFileTypesResetToDefault", 8272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_AUTOOPENFILETYPES_RESETTODEFAULT }, 8372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "translateEnableTranslate", 8472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_TRANSLATE_ENABLE_TRANSLATE }, 8572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "certificatesManageButton", 8672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_CERTIFICATES_MANAGE_BUTTON }, 8772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "proxiesLabel", 8872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_PROXIES_LABEL }, 8972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "proxiesConfigureButton", 9072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_PROXIES_CONFIGURE_BUTTON }, 9172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "safeBrowsingEnableProtection", 9272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_SAFEBROWSING_ENABLEPROTECTION }, 9372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "sslGroupDescription", 9472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_SSL_GROUP_DESCRIPTION }, 9572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "sslCheckRevocation", 9672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_SSL_CHECKREVOCATION }, 9772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "sslUseSSL3", 9872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_SSL_USESSL3 }, 9972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "sslUseTLS1", 10072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_SSL_USETLS1 }, 101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { "networkPredictionEnabledDescription", 102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen IDS_NETWORK_PREDICTION_ENABLED_DESCRIPTION }, 10372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "privacyContentSettingsButton", 10472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_PRIVACY_CONTENT_SETTINGS_BUTTON }, 10572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "privacyClearDataButton", 10672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_PRIVACY_CLEAR_DATA_BUTTON }, 10772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "linkDoctorPref", 10872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_LINKDOCTOR_PREF }, 10972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "suggestPref", 11072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_SUGGEST_PREF }, 11172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "tabsToLinksPref", 11272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_TABS_TO_LINKS_PREF }, 11372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "fontSettingsInfo", 11472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_FONTSETTINGS_INFO }, 11572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "defaultZoomLevelLabel", 11672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_DEFAULT_ZOOM_LEVEL_LABEL }, 11772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "defaultFontSizeLabel", 11872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_DEFAULT_FONT_SIZE_LABEL }, 11972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "fontSizeLabelVerySmall", 12072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_FONT_SIZE_LABEL_VERY_SMALL }, 12172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "fontSizeLabelSmall", 12272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_FONT_SIZE_LABEL_SMALL }, 12372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "fontSizeLabelMedium", 12472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_FONT_SIZE_LABEL_MEDIUM }, 12572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "fontSizeLabelLarge", 12672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_FONT_SIZE_LABEL_LARGE }, 12772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "fontSizeLabelVeryLarge", 12872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_FONT_SIZE_LABEL_VERY_LARGE }, 12972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "fontSizeLabelCustom", 13072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_FONT_SIZE_LABEL_CUSTOM }, 13172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "fontSettingsCustomizeFontsButton", 13272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_FONTSETTINGS_CUSTOMIZE_FONTS_BUTTON }, 13372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "languageAndSpellCheckSettingsButton", 13472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_LANGUAGE_AND_SPELLCHECK_BUTTON }, 13572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "advancedSectionTitlePrivacy", 13672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY }, 13772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "advancedSectionTitleContent", 13872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ADVANCED_SECTION_TITLE_CONTENT }, 13972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "advancedSectionTitleSecurity", 14072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ADVANCED_SECTION_TITLE_SECURITY }, 14172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "advancedSectionTitleNetwork", 14272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ADVANCED_SECTION_TITLE_NETWORK }, 14372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "advancedSectionTitleTranslate", 14472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ADVANCED_SECTION_TITLE_TRANSLATE }, 14572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "translateEnableTranslate", 14672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_TRANSLATE_ENABLE_TRANSLATE }, 14772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "enableLogging", 14872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ENABLE_LOGGING }, 14972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "improveBrowsingExperience", 15072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_IMPROVE_BROWSING_EXPERIENCE }, 15172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "disableWebServices", 15272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_DISABLE_WEB_SERVICES }, 15372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if !defined(OS_CHROMEOS) 15472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "advancedSectionTitleCloudPrint", 15572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ADVANCED_SECTION_TITLE_CLOUD_PRINT }, 15672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "cloudPrintProxyDisabledLabel", 15772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_CLOUD_PRINT_PROXY_DISABLED_LABEL }, 15872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "cloudPrintProxyDisabledButton", 15972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_CLOUD_PRINT_PROXY_DISABLED_BUTTON }, 16072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "cloudPrintProxyEnabledButton", 16172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_CLOUD_PRINT_PROXY_ENABLED_BUTTON }, 16272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "cloudPrintProxyEnabledManageButton", 16372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_CLOUD_PRINT_PROXY_ENABLED_MANAGE_BUTTON }, 16472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "cloudPrintProxyEnablingButton", 16572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_CLOUD_PRINT_PROXY_ENABLING_BUTTON }, 16672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif 16772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if defined(ENABLE_REMOTING) 16872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "advancedSectionTitleRemoting", 16972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ADVANCED_SECTION_TITLE_REMOTING }, 17072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "remotingSetupButton", 17172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_REMOTING_SETUP_BUTTON }, 17272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { "remotingStopButton", 17372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_REMOTING_STOP_BUTTON }, 17472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif 17572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen }; 17672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 17772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen RegisterStrings(localized_strings, resources, arraysize(resources)); 17872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen RegisterTitle(localized_strings, "advancedPage", 17972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen IDS_OPTIONS_ADVANCED_TAB_LABEL); 18072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick localized_strings->SetString("privacyLearnMoreURL", 1824a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch google_util::AppendGoogleLocaleParam( 1834a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch GURL(chrome::kPrivacyLearnMoreURL)).spec()); 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AdvancedOptionsHandler::Initialize() { 18772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen DCHECK(web_ui_); 18821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetupMetricsReportingCheckbox(); 189513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch SetupMetricsReportingSettingVisibility(); 19021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetupFontSizeLabel(); 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetupDownloadLocationPath(); 192dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen SetupPromptForDownload(); 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetupAutoOpenFileTypesDisabledAttribute(); 1943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick SetupProxySettingsSection(); 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetupSSLConfigSettings(); 196731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if !defined(OS_CHROMEOS) 197513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (cloud_print_proxy_ui_enabled_) { 198513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch SetupCloudPrintProxySection(); 199513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch RefreshCloudPrintStatusFromService(); 2003f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen } else { 2013f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen RemoveCloudPrintProxySection(); 202513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch } 203731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif 20472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if defined(ENABLE_REMOTING) && !defined(OS_CHROMEOS) 20572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableRemoting)) { 2063f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen RemoveRemotingSection(); 20772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } else { 20872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen remoting_options_handler_.Init(web_ui_); 2093f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen } 2103f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#endif 2113f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 2123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick banner_handler_.reset( 21372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen new OptionsManagedBannerHandler(web_ui_, 2143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ASCIIToUTF16("AdvancedOptions"), 2153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick OPTIONS_PAGE_ADVANCED)); 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 21872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenWebUIMessageHandler* AdvancedOptionsHandler::Attach(WebUI* web_ui) { 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Call through to superclass. 22072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen WebUIMessageHandler* handler = OptionsPageUIHandler::Attach(web_ui); 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Register for preferences that we need to observe manually. These have 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // special behaviors that aren't handled by the standard prefs UI. 22472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen DCHECK(web_ui_); 22572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PrefService* prefs = web_ui_->GetProfile()->GetPrefs(); 226731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if !defined(OS_CHROMEOS) 2273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick enable_metrics_recording_.Init(prefs::kMetricsReportingEnabled, 2283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick g_browser_process->local_state(), this); 229731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick cloud_print_proxy_email_.Init(prefs::kCloudPrintEmail, prefs, this); 23072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen cloud_print_proxy_enabled_.Init(prefs::kCloudPrintProxyEnabled, prefs, this); 231731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif 232ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 233ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen rev_checking_enabled_.Init(prefs::kCertRevocationCheckingEnabled, 234ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen g_browser_process->local_state(), this); 235ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ssl3_enabled_.Init(prefs::kSSL3Enabled, g_browser_process->local_state(), 236ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this); 237ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen tls1_enabled_.Init(prefs::kTLS1Enabled, g_browser_process->local_state(), 238ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this); 239ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch default_download_location_.Init(prefs::kDownloadDefaultDirectory, 2413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick prefs, this); 242dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ask_for_save_location_.Init(prefs::kPromptForDownload, prefs, this); 2433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick auto_open_files_.Init(prefs::kDownloadExtensionsToOpen, prefs, this); 24421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen default_font_size_.Init(prefs::kWebKitDefaultFontSize, prefs, this); 2453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick proxy_prefs_.reset( 2463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick PrefSetObserver::CreateProxyPrefSetObserver(prefs, this)); 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Return result from the superclass. 249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return handler; 250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AdvancedOptionsHandler::RegisterMessages() { 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Setup handlers specific to this panel. 25472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen DCHECK(web_ui_); 25572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("selectDownloadLocation", 256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NewCallback(this, 257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &AdvancedOptionsHandler::HandleSelectDownloadLocation)); 258dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen web_ui_->RegisterMessageCallback("promptForDownloadAction", 259dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen NewCallback(this, 260dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen &AdvancedOptionsHandler::HandlePromptForDownload)); 26172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("autoOpenFileTypesAction", 262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NewCallback(this, 263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &AdvancedOptionsHandler::HandleAutoOpenButton)); 26472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("defaultFontSizeAction", 26521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen NewCallback(this, &AdvancedOptionsHandler::HandleDefaultFontSize)); 266731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if !defined(OS_CHROMEOS) 26772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("metricsReportingCheckboxAction", 2683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NewCallback(this, 2693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick &AdvancedOptionsHandler::HandleMetricsReportingCheckbox)); 270731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif 271513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if !defined(USE_NSS) && !defined(USE_OPENSSL) 27272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("showManageSSLCertificates", 273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NewCallback(this, 274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &AdvancedOptionsHandler::ShowManageSSLCertificates)); 2753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#endif 2763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#if !defined(OS_CHROMEOS) 277513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (cloud_print_proxy_ui_enabled_) { 27872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("showCloudPrintSetupDialog", 279513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch NewCallback(this, 280513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch &AdvancedOptionsHandler::ShowCloudPrintSetupDialog)); 28172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("disableCloudPrintProxy", 282513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch NewCallback(this, 283513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch &AdvancedOptionsHandler::HandleDisableCloudPrintProxy)); 28472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("showCloudPrintManagePage", 285513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch NewCallback(this, 286513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch &AdvancedOptionsHandler::ShowCloudPrintManagePage)); 287513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch } 28872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("showNetworkProxySettings", 2894a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch NewCallback(this, 2904a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch &AdvancedOptionsHandler::ShowNetworkProxySettings)); 2913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#endif 29272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if defined(ENABLE_REMOTING) && !defined(OS_CHROMEOS) 29372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("showRemotingSetupDialog", 2943f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen NewCallback(this, 2953f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen &AdvancedOptionsHandler::ShowRemotingSetupDialog)); 29672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("disableRemoting", 29772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen NewCallback(this, 29872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen &AdvancedOptionsHandler::DisableRemoting)); 2993f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#endif 30072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("checkRevocationCheckboxAction", 3013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick NewCallback(this, 3023345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick &AdvancedOptionsHandler::HandleCheckRevocationCheckbox)); 30372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("useSSL3CheckboxAction", 304731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick NewCallback(this, 305731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick &AdvancedOptionsHandler::HandleUseSSL3Checkbox)); 30672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("useTLS1CheckboxAction", 307731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick NewCallback(this, 308731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick &AdvancedOptionsHandler::HandleUseTLS1Checkbox)); 309c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 311c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AdvancedOptionsHandler::Observe(NotificationType type, 312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const NotificationSource& source, 313c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const NotificationDetails& details) { 314c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (type == NotificationType::PREF_CHANGED) { 3153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick std::string* pref_name = Details<std::string>(details).ptr(); 316dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen if ((*pref_name == prefs::kDownloadDefaultDirectory) || 317dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen (*pref_name == prefs::kPromptForDownload)) { 318c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetupDownloadLocationPath(); 319dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen SetupPromptForDownload(); 320c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } else if (*pref_name == prefs::kDownloadExtensionsToOpen) { 321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetupAutoOpenFileTypesDisabledAttribute(); 3223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } else if (proxy_prefs_->IsObserved(*pref_name)) { 3233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick SetupProxySettingsSection(); 32472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } else if ((*pref_name == prefs::kCloudPrintEmail) || 32572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen (*pref_name == prefs::kCloudPrintProxyEnabled)) { 326731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if !defined(OS_CHROMEOS) 327513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (cloud_print_proxy_ui_enabled_) 328513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch SetupCloudPrintProxySection(); 329731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif 330ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } else if (*pref_name == prefs::kWebKitDefaultFontSize) { 33121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetupFontSizeLabel(); 332c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 333c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 334c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 335c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 3363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AdvancedOptionsHandler::HandleSelectDownloadLocation( 3373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const ListValue* args) { 33872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PrefService* pref_service = web_ui_->GetProfile()->GetPrefs(); 339c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch select_folder_dialog_ = SelectFileDialog::Create(this); 340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch select_folder_dialog_->SelectFile( 341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SelectFileDialog::SELECT_FOLDER, 342c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch l10n_util::GetStringUTF16(IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE), 343c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch pref_service->GetFilePath(prefs::kDownloadDefaultDirectory), 344ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NULL, 0, FILE_PATH_LITERAL(""), web_ui_->tab_contents(), 34572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->tab_contents()->view()->GetTopLevelNativeWindow(), NULL); 346c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 347c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 348dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid AdvancedOptionsHandler::HandlePromptForDownload( 349dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const ListValue* args) { 350ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string checked_str = UTF16ToUTF8(ExtractStringValue(args)); 351dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ask_for_save_location_.SetValue(checked_str == "true"); 352dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 353dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AdvancedOptionsHandler::FileSelected(const FilePath& path, int index, 355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void* params) { 3563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserMetricsRecordAction(UserMetricsAction("Options_SetDownloadDirectory")); 357c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch default_download_location_.SetValue(path); 358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetupDownloadLocationPath(); 359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 361ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid AdvancedOptionsHandler::OnCloudPrintSetupClosed() { 362731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if !defined(OS_CHROMEOS) 363513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (cloud_print_proxy_ui_enabled_) 364513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch SetupCloudPrintProxySection(); 365731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif 366731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 367731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 3683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AdvancedOptionsHandler::HandleAutoOpenButton(const ListValue* args) { 3693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserMetricsRecordAction(UserMetricsAction("Options_ResetAutoOpenFiles")); 37072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen DownloadManager* manager = web_ui_->GetProfile()->GetDownloadManager(); 3713345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick if (manager) 3723345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick manager->download_prefs()->ResetAutoOpen(); 3733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 3743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 3753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AdvancedOptionsHandler::HandleMetricsReportingCheckbox( 3763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const ListValue* args) { 377731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if defined(GOOGLE_CHROME_BUILD) && !defined(OS_CHROMEOS) 378ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string checked_str = UTF16ToUTF8(ExtractStringValue(args)); 37972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool enabled = checked_str == "true"; 3803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserMetricsRecordAction( 3813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick enabled ? 3823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserMetricsAction("Options_MetricsReportingCheckbox_Enable") : 3833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserMetricsAction("Options_MetricsReportingCheckbox_Disable")); 3843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick bool is_enabled = OptionsUtil::ResolveMetricsReportingEnabled(enabled); 3853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick enable_metrics_recording_.SetValue(is_enabled); 38621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetupMetricsReportingCheckbox(); 3873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#endif 388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid AdvancedOptionsHandler::HandleDefaultFontSize(const ListValue* args) { 39121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen int font_size; 39221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (ExtractIntegerValue(args, &font_size)) { 39321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen if (font_size > 0) { 39421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen default_font_size_.SetValue(font_size); 39521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetupFontSizeLabel(); 39621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 39721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 39821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 39921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 4003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AdvancedOptionsHandler::HandleCheckRevocationCheckbox( 4013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const ListValue* args) { 402ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string checked_str = UTF16ToUTF8(ExtractStringValue(args)); 40372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool enabled = checked_str == "true"; 4043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick std::string metric = 405731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick (enabled ? "Options_CheckCertRevocation_Enable" 406731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : "Options_CheckCertRevocation_Disable"); 4073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserMetricsRecordAction(UserMetricsAction(metric.c_str())); 408ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen rev_checking_enabled_.SetValue(enabled); 409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 411731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AdvancedOptionsHandler::HandleUseSSL3Checkbox(const ListValue* args) { 412ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string checked_str = UTF16ToUTF8(ExtractStringValue(args)); 41372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool enabled = checked_str == "true"; 414731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick std::string metric = 415731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick (enabled ? "Options_SSL3_Enable" : "Options_SSL3_Disable"); 416731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick UserMetricsRecordAction(UserMetricsAction(metric.c_str())); 417ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ssl3_enabled_.SetValue(enabled); 418731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 419731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 420731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AdvancedOptionsHandler::HandleUseTLS1Checkbox(const ListValue* args) { 421ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string checked_str = UTF16ToUTF8(ExtractStringValue(args)); 42272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool enabled = checked_str == "true"; 423731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick std::string metric = 424731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick (enabled ? "Options_TLS1_Enable" : "Options_TLS1_Disable"); 425731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick UserMetricsRecordAction(UserMetricsAction(metric.c_str())); 426ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen tls1_enabled_.SetValue(enabled); 4273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 4283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 4293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#if !defined(OS_CHROMEOS) 4303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AdvancedOptionsHandler::ShowNetworkProxySettings(const ListValue* args) { 4313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserMetricsRecordAction(UserMetricsAction("Options_ShowProxySettings")); 43272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen AdvancedOptionsUtilities::ShowNetworkProxySettings(web_ui_->tab_contents()); 433c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 434c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 435c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 436513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if !defined(USE_NSS) && !defined(USE_OPENSSL) 4373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AdvancedOptionsHandler::ShowManageSSLCertificates(const ListValue* args) { 4383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick UserMetricsRecordAction(UserMetricsAction("Options_ManageSSLCertificates")); 43972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen AdvancedOptionsUtilities::ShowManageSSLCertificates(web_ui_->tab_contents()); 4403345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 4413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#endif 4423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 443731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if !defined(OS_CHROMEOS) 444731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AdvancedOptionsHandler::ShowCloudPrintSetupDialog(const ListValue* args) { 445731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick UserMetricsRecordAction(UserMetricsAction("Options_EnableCloudPrintProxy")); 446ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen cloud_print_setup_handler_.reset(new CloudPrintSetupHandler(this)); 447731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick CloudPrintSetupFlow::OpenDialog( 448ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->GetProfile(), cloud_print_setup_handler_->AsWeakPtr(), 44972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->tab_contents()->GetMessageBoxRootWindow()); 450731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 451731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 452731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AdvancedOptionsHandler::HandleDisableCloudPrintProxy( 453731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const ListValue* args) { 454731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick UserMetricsRecordAction(UserMetricsAction("Options_DisableCloudPrintProxy")); 45572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->GetProfile()->GetCloudPrintProxyService()->DisableForUser(); 456731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 457731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 458731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AdvancedOptionsHandler::ShowCloudPrintManagePage(const ListValue* args) { 459731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick UserMetricsRecordAction(UserMetricsAction("Options_ManageCloudPrinters")); 460731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Open a new tab in the current window for the management page. 46172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->tab_contents()->OpenURL( 46272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen CloudPrintURL(web_ui_->GetProfile()).GetCloudPrintServiceManageURL(), 463731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); 464731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 465731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 466731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AdvancedOptionsHandler::RefreshCloudPrintStatusFromService() { 46772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen DCHECK(web_ui_); 468513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (cloud_print_proxy_ui_enabled_) 46972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->GetProfile()->GetCloudPrintProxyService()-> 470513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch RefreshStatusFromService(); 471731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 472731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 473731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AdvancedOptionsHandler::SetupCloudPrintProxySection() { 47472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (NULL == web_ui_->GetProfile()->GetCloudPrintProxyService()) { 475513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch cloud_print_proxy_ui_enabled_ = false; 4763f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen RemoveCloudPrintProxySection(); 477513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch return; 478513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch } 479513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 48072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool cloud_print_proxy_allowed = 48172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen !cloud_print_proxy_enabled_.IsManaged() || 48272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen cloud_print_proxy_enabled_.GetValue(); 48372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen FundamentalValue allowed(cloud_print_proxy_allowed); 48472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 485731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick std::string email; 48672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (web_ui_->GetProfile()->GetPrefs()->HasPrefPath(prefs::kCloudPrintEmail) && 48772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen cloud_print_proxy_allowed) { 48872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen email = web_ui_->GetProfile()->GetPrefs()->GetString( 489731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick prefs::kCloudPrintEmail); 49072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } 491731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick FundamentalValue disabled(email.empty()); 492731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 493731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick string16 label_str; 494731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (email.empty()) { 495731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick label_str = l10n_util::GetStringUTF16( 496731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick IDS_OPTIONS_CLOUD_PRINT_PROXY_DISABLED_LABEL); 497731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } else { 498731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick label_str = l10n_util::GetStringFUTF16( 499731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick IDS_OPTIONS_CLOUD_PRINT_PROXY_ENABLED_LABEL, UTF8ToUTF16(email)); 500731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 501731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick StringValue label(label_str); 502731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 50372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 504ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetupCloudPrintProxySection", 50572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen disabled, label, allowed); 506731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 5073f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 5083f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenvoid AdvancedOptionsHandler::RemoveCloudPrintProxySection() { 50972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 510ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.RemoveCloudPrintProxySection"); 5113f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 5123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 5133f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#endif 5143f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 51572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#if defined(ENABLE_REMOTING) && !defined(OS_CHROMEOS) 5163f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenvoid AdvancedOptionsHandler::RemoveRemotingSection() { 51772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 518ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.RemoveRemotingSection"); 5193f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 5203f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 5213f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenvoid AdvancedOptionsHandler::ShowRemotingSetupDialog(const ListValue* args) { 52272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen remoting::SetupFlow::OpenSetupDialog(web_ui_->GetProfile()); 52372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 52472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 52572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid AdvancedOptionsHandler::DisableRemoting(const ListValue* args) { 52672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ServiceProcessControl* process_control = 52772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ServiceProcessControlManager::GetInstance()->GetProcessControl( 52872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->GetProfile()); 52972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (!process_control || !process_control->is_connected()) 53072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen return; 53172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen process_control->DisableRemotingHost(); 5323f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} 533731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif 534731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 53521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid AdvancedOptionsHandler::SetupMetricsReportingCheckbox() { 536731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if defined(GOOGLE_CHROME_BUILD) && !defined(OS_CHROMEOS) 5373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick FundamentalValue checked(enable_metrics_recording_.GetValue()); 5383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick FundamentalValue disabled(enable_metrics_recording_.IsManaged()); 53972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 540ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetMetricsReportingCheckboxState", checked, 54121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen disabled); 5423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#endif 5433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 5443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 545513209b27ff55e2841eac0e4120199c23acce758Ben Murdochvoid AdvancedOptionsHandler::SetupMetricsReportingSettingVisibility() { 546513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#if defined(GOOGLE_CHROME_BUILD) && defined(OS_CHROMEOS) 547513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Don't show the reporting setting if we are in the guest mode. 548513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) { 549513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch FundamentalValue visible(false); 55072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 551ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetMetricsReportingSettingVisibility", 552513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch visible); 553513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch } 554513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif 555513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} 556513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 55721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid AdvancedOptionsHandler::SetupFontSizeLabel() { 55821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // We're only interested in integer values, so convert to int. 55921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen FundamentalValue font_size(default_font_size_.GetValue()); 56072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 561ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetFontSize", font_size); 56221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 56321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 564c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AdvancedOptionsHandler::SetupDownloadLocationPath() { 565c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch StringValue value(default_download_location_.GetValue().value()); 566dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FundamentalValue disabled(default_download_location_.IsManaged()); 567dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen web_ui_->CallJavascriptFunction( 568ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetDownloadLocationPath", value, disabled); 569dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 570dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 571dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenvoid AdvancedOptionsHandler::SetupPromptForDownload() { 572dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FundamentalValue checked(ask_for_save_location_.GetValue()); 573dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FundamentalValue disabled(default_download_location_.IsManaged()); 57472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 575ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetPromptForDownload", checked, disabled); 576c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 577c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 578c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AdvancedOptionsHandler::SetupAutoOpenFileTypesDisabledAttribute() { 579c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Set the enabled state for the AutoOpenFileTypesResetToDefault button. 580c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // We enable the button if the user has any auto-open file types registered. 58172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen DownloadManager* manager = web_ui_->GetProfile()->GetDownloadManager(); 5823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick bool disabled = !(manager && manager->download_prefs()->IsAutoOpenUsed()); 583c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FundamentalValue value(disabled); 58472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 585ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetAutoOpenFileTypesDisabledAttribute", value); 5863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 5873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 5883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid AdvancedOptionsHandler::SetupProxySettingsSection() { 5893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Disable the button if proxy settings are managed by a sysadmin or 5903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // overridden by an extension. 59172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PrefService* pref_service = web_ui_->GetProfile()->GetPrefs(); 59272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const PrefService::Preference* proxy_config = 59372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen pref_service->FindPreference(prefs::kProxy); 59472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool is_extension_controlled = (proxy_config && 59572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen proxy_config->IsExtensionControlled()); 5963345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 5973345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick FundamentalValue disabled(proxy_prefs_->IsManaged() || 598731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick is_extension_controlled); 5993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 6003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Get the appropriate info string to describe the button. 6013345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick string16 label_str; 602731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (is_extension_controlled) { 6033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick label_str = l10n_util::GetStringUTF16(IDS_OPTIONS_EXTENSION_PROXIES_LABEL); 6043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } else { 6053345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick label_str = l10n_util::GetStringFUTF16(IDS_OPTIONS_SYSTEM_PROXIES_LABEL, 6063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)); 6073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick } 6083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick StringValue label(label_str); 6093345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 61072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->CallJavascriptFunction( 611ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetupProxySettingsSection", disabled, label); 612c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 613c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 614c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid AdvancedOptionsHandler::SetupSSLConfigSettings() { 615ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { 616ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FundamentalValue checked(rev_checking_enabled_.GetValue()); 617ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FundamentalValue disabled(rev_checking_enabled_.IsManaged()); 618ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction( 619ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetCheckRevocationCheckboxState", checked, 620ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen disabled); 621ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 622ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { 623ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FundamentalValue checked(ssl3_enabled_.GetValue()); 624ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FundamentalValue disabled(ssl3_enabled_.IsManaged()); 625ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction( 626ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetUseSSL3CheckboxState", checked, disabled); 627ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 628ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen { 629ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FundamentalValue checked(tls1_enabled_.GetValue()); 630ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FundamentalValue disabled(tls1_enabled_.IsManaged()); 631ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction( 632ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "options.AdvancedOptions.SetUseTLS1CheckboxState", checked, disabled); 633c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 634c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 635