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