Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6226)

Unified Diff: chrome/browser/ui/webui/options2/browser_options_handler.cc

Issue 10837331: Options: s/options2/options/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: wut Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/options2/browser_options_handler.cc
diff --git a/chrome/browser/ui/webui/options2/browser_options_handler.cc b/chrome/browser/ui/webui/options2/browser_options_handler.cc
deleted file mode 100644
index 34f81f0db4cd9cbfd8211a55a595f510fd16ae32..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/webui/options2/browser_options_handler.cc
+++ /dev/null
@@ -1,1442 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/webui/options2/browser_options_handler.h"
-
-#include <string>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/command_line.h"
-#include "base/memory/singleton.h"
-#include "base/path_service.h"
-#include "base/stl_util.h"
-#include "base/string_number_conversions.h"
-#include "base/utf_string_conversions.h"
-#include "base/value_conversions.h"
-#include "base/values.h"
-#include "chrome/browser/auto_launch_trial.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chrome_page_zoom.h"
-#include "chrome/browser/custom_home_pages_table_model.h"
-#include "chrome/browser/download/download_prefs.h"
-#include "chrome/browser/net/url_fixer_upper.h"
-#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/browser/prefs/session_startup_pref.h"
-#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
-#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h"
-#include "chrome/browser/printing/cloud_print/cloud_print_setup_flow.h"
-#include "chrome/browser/printing/cloud_print/cloud_print_url.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_info_cache.h"
-#include "chrome/browser/profiles/profile_info_util.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/search_engines/template_url.h"
-#include "chrome/browser/search_engines/template_url_service.h"
-#include "chrome/browser/search_engines/template_url_service_factory.h"
-#include "chrome/browser/service/service_process_control.h"
-#include "chrome/browser/signin/signin_manager.h"
-#include "chrome/browser/signin/signin_manager_factory.h"
-#include "chrome/browser/sync/profile_sync_service.h"
-#include "chrome/browser/sync/profile_sync_service_factory.h"
-#include "chrome/browser/sync/sync_ui_util.h"
-#include "chrome/browser/themes/theme_service.h"
-#include "chrome/browser/themes/theme_service_factory.h"
-#include "chrome/browser/ui/chrome_select_file_policy.h"
-#include "chrome/browser/ui/options/options_util.h"
-#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
-#include "chrome/browser/ui/webui/favicon_source.h"
-#include "chrome/browser/ui/webui/web_ui_util.h"
-#include "chrome/common/chrome_constants.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/net/gaia/google_service_auth_error.h"
-#include "chrome/common/pref_names.h"
-#include "chrome/common/url_constants.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/download_manager.h"
-#include "content/public/browser/navigation_controller.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/user_metrics.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_view.h"
-#include "content/public/common/page_zoom.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
-#include "grit/locale_settings.h"
-#include "grit/theme_resources.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
-#include "ui/base/l10n/l10n_util.h"
-
-#if !defined(OS_CHROMEOS)
-#include "chrome/browser/printing/cloud_print/cloud_print_setup_handler.h"
-#include "chrome/browser/ui/webui/options2/advanced_options_utils.h"
-#endif
-
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/accessibility/accessibility_util.h"
-#include "chrome/browser/chromeos/extensions/wallpaper_manager_util.h"
-#include "chrome/browser/chromeos/login/user_manager.h"
-#include "chrome/browser/chromeos/options/take_photo_dialog.h"
-#include "chrome/browser/chromeos/settings/cros_settings.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/webui/options2/chromeos/timezone_options_util.h"
-#include "ui/gfx/image/image_skia.h"
-#endif // defined(OS_CHROMEOS)
-
-#if defined(OS_WIN)
-#include "chrome/installer/util/auto_launch_util.h"
-#endif // defined(OS_WIN)
-
-#if defined(TOOLKIT_GTK)
-#include "chrome/browser/ui/gtk/gtk_theme_service.h"
-#endif // defined(TOOLKIT_GTK)
-
-using content::BrowserContext;
-using content::BrowserThread;
-using content::DownloadManager;
-using content::OpenURLParams;
-using content::Referrer;
-using content::UserMetricsAction;
-
-namespace options {
-
-BrowserOptionsHandler::BrowserOptionsHandler()
- : template_url_service_(NULL),
- ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_for_file_(this)),
- ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_for_ui_(this)) {
- multiprofile_ = ProfileManager::IsMultipleProfilesEnabled();
-#if !defined(OS_MACOSX)
- default_browser_worker_ = new ShellIntegration::DefaultBrowserWorker(this);
-#endif
-#if(!defined(GOOGLE_CHROME_BUILD) && defined(OS_WIN))
- // On Windows, we need the PDF plugin which is only guaranteed to exist on
- // Google Chrome builds. Use a command-line switch for Windows non-Google
- // Chrome builds.
- cloud_print_connector_ui_enabled_ =
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableCloudPrintProxy);
-#elif(!defined(OS_CHROMEOS))
- // Always enabled for Mac, Linux and Google Chrome Windows builds.
- // Never enabled for Chrome OS, we don't even need to indicate it.
- cloud_print_connector_ui_enabled_ = true;
-#endif
-}
-
-BrowserOptionsHandler::~BrowserOptionsHandler() {
- ProfileSyncService* sync_service(ProfileSyncServiceFactory::
- GetInstance()->GetForProfile(Profile::FromWebUI(web_ui())));
- if (sync_service)
- sync_service->RemoveObserver(this);
-
- if (default_browser_worker_.get())
- default_browser_worker_->ObserverDestroyed();
- if (template_url_service_)
- template_url_service_->RemoveObserver(this);
- // There may be pending file dialogs, we need to tell them that we've gone
- // away so they don't try and call back to us.
- if (select_folder_dialog_.get())
- select_folder_dialog_->ListenerDestroyed();
-}
-
-void BrowserOptionsHandler::GetLocalizedValues(DictionaryValue* values) {
- DCHECK(values);
-
- static OptionsStringResource resources[] = {
- { "advancedSectionTitleCloudPrint", IDS_GOOGLE_CLOUD_PRINT },
- { "currentUserOnly", IDS_OPTIONS_CURRENT_USER_ONLY },
- { "advancedSectionTitleContent",
- IDS_OPTIONS_ADVANCED_SECTION_TITLE_CONTENT },
- { "advancedSectionTitleLanguages",
- IDS_OPTIONS_ADVANCED_SECTION_TITLE_LANGUAGES },
- { "advancedSectionTitleNetwork",
- IDS_OPTIONS_ADVANCED_SECTION_TITLE_NETWORK },
- { "advancedSectionTitlePrivacy",
- IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY },
- { "advancedSectionTitleSecurity",
- IDS_OPTIONS_ADVANCED_SECTION_TITLE_SECURITY },
- { "autofillEnabled", IDS_OPTIONS_AUTOFILL_ENABLE },
- { "autologinEnabled", IDS_OPTIONS_PASSWORDS_AUTOLOGIN },
- { "autoOpenFileTypesInfo", IDS_OPTIONS_OPEN_FILE_TYPES_AUTOMATICALLY },
- { "autoOpenFileTypesResetToDefault",
- IDS_OPTIONS_AUTOOPENFILETYPES_RESETTODEFAULT },
- { "changeHomePage", IDS_OPTIONS_CHANGE_HOME_PAGE },
- { "certificatesManageButton", IDS_OPTIONS_CERTIFICATES_MANAGE_BUTTON },
- { "customizeSync", IDS_OPTIONS2_CUSTOMIZE_SYNC_BUTTON_LABEL },
- { "defaultFontSizeLabel", IDS_OPTIONS_DEFAULT_FONT_SIZE_LABEL },
- { "defaultSearchManageEngines", IDS_OPTIONS_DEFAULTSEARCH_MANAGE_ENGINES },
- { "defaultZoomFactorLabel", IDS_OPTIONS_DEFAULT_ZOOM_LEVEL_LABEL },
-#if defined(OS_CHROMEOS)
- { "disableGData", IDS_OPTIONS_DISABLE_GDATA },
-#endif
- { "disableWebServices", IDS_OPTIONS_DISABLE_WEB_SERVICES },
-#if defined(OS_CHROMEOS)
- { "displayOptionsButton", IDS_OPTIONS_SETTINGS_DISPLAY_OPTIONS_TAB_TITLE },
- { "displayOptionsTitle", IDS_OPTIONS_SETTINGS_SECTION_TITLE_DISPLAY },
-#endif
- { "downloadLocationAskForSaveLocation",
- IDS_OPTIONS_DOWNLOADLOCATION_ASKFORSAVELOCATION },
- { "downloadLocationBrowseTitle",
- IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE },
- { "downloadLocationChangeButton",
- IDS_OPTIONS_DOWNLOADLOCATION_CHANGE_BUTTON },
- { "downloadLocationGroupName", IDS_OPTIONS_DOWNLOADLOCATION_GROUP_NAME },
- { "enableLogging", IDS_OPTIONS_ENABLE_LOGGING },
- { "fontSettingsCustomizeFontsButton",
- IDS_OPTIONS_FONTSETTINGS_CUSTOMIZE_FONTS_BUTTON },
- { "fontSizeLabelCustom", IDS_OPTIONS_FONT_SIZE_LABEL_CUSTOM },
- { "fontSizeLabelLarge", IDS_OPTIONS_FONT_SIZE_LABEL_LARGE },
- { "fontSizeLabelMedium", IDS_OPTIONS_FONT_SIZE_LABEL_MEDIUM },
- { "fontSizeLabelSmall", IDS_OPTIONS_FONT_SIZE_LABEL_SMALL },
- { "fontSizeLabelVeryLarge", IDS_OPTIONS_FONT_SIZE_LABEL_VERY_LARGE },
- { "fontSizeLabelVerySmall", IDS_OPTIONS_FONT_SIZE_LABEL_VERY_SMALL },
- { "hideAdvancedSettings", IDS_SETTINGS_HIDE_ADVANCED_SETTINGS },
- { "homePageNtp", IDS_OPTIONS_HOMEPAGE_NTP },
- { "homePageShowHomeButton", IDS_OPTIONS_TOOLBAR_SHOW_HOME_BUTTON },
- { "homePageUseNewTab", IDS_OPTIONS_HOMEPAGE_USE_NEWTAB },
- { "homePageUseURL", IDS_OPTIONS_HOMEPAGE_USE_URL },
- { "instantConfirmMessage", IDS_INSTANT_OPT_IN_MESSAGE },
- { "instantConfirmTitle", IDS_INSTANT_OPT_IN_TITLE },
- { "importData", IDS_OPTIONS_IMPORT_DATA_BUTTON },
- { "improveBrowsingExperience", IDS_OPTIONS_IMPROVE_BROWSING_EXPERIENCE },
- { "languageAndSpellCheckSettingsButton",
-#if defined(OS_CHROMEOS)
- IDS_OPTIONS_SETTINGS_LANGUAGES_CUSTOMIZE },
-#else
- IDS_OPTIONS_LANGUAGE_AND_SPELLCHECK_BUTTON },
-#endif
- { "linkDoctorPref", IDS_OPTIONS_LINKDOCTOR_PREF },
- { "manageAutofillSettings", IDS_OPTIONS_MANAGE_AUTOFILL_SETTINGS_LINK },
- { "managePasswords", IDS_OPTIONS_PASSWORDS_MANAGE_PASSWORDS_LINK },
- { "networkPredictionEnabledDescription",
- IDS_NETWORK_PREDICTION_ENABLED_DESCRIPTION },
- { "passwordsAndAutofillGroupName",
- IDS_OPTIONS_PASSWORDS_AND_FORMS_GROUP_NAME },
- { "passwordManagerEnabled", IDS_OPTIONS_PASSWORD_MANAGER_ENABLE },
- { "passwordGenerationEnabledDescription",
- IDS_OPTIONS_PASSWORD_GENERATION_ENABLED_LABEL },
- { "privacyClearDataButton", IDS_OPTIONS_PRIVACY_CLEAR_DATA_BUTTON },
- { "privacyContentSettingsButton",
- IDS_OPTIONS_PRIVACY_CONTENT_SETTINGS_BUTTON },
- { "profilesCreate", IDS_PROFILES_CREATE_BUTTON_LABEL },
- { "profilesDelete", IDS_PROFILES_DELETE_BUTTON_LABEL },
- { "profilesDeleteSingle", IDS_PROFILES_DELETE_SINGLE_BUTTON_LABEL },
- { "profilesListItemCurrent", IDS_PROFILES_LIST_ITEM_CURRENT },
- { "profilesManage", IDS_PROFILES_MANAGE_BUTTON_LABEL },
- { "proxiesLabel", IDS_OPTIONS_PROXIES_LABEL },
- { "safeBrowsingEnableProtection",
- IDS_OPTIONS_SAFEBROWSING_ENABLEPROTECTION },
- { "sectionTitleAppearance", IDS_APPEARANCE_GROUP_NAME },
- { "sectionTitleDefaultBrowser", IDS_OPTIONS_DEFAULTBROWSER_GROUP_NAME },
- { "sectionTitleUsers", IDS_PROFILES_OPTIONS_GROUP_NAME },
- { "sectionTitleSearch", IDS_OPTIONS_DEFAULTSEARCH_GROUP_NAME },
- { "sectionTitleStartup", IDS_OPTIONS_STARTUP_GROUP_NAME },
- { "sectionTitleSync", IDS_SYNC_OPTIONS_GROUP_NAME },
- { "spellingConfirmMessage", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_TEXT },
- { "spellingConfirmTitle", IDS_CONTENT_CONTEXT_SPELLING_ASK_GOOGLE },
- { "spellingConfirmEnable", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_ENABLE },
- { "spellingConfirmDisable", IDS_CONTENT_CONTEXT_SPELLING_BUBBLE_DISABLE },
- { "spellingPref", IDS_OPTIONS_SPELLING_PREF },
- { "startupRestoreLastSession", IDS_OPTIONS_STARTUP_RESTORE_LAST_SESSION },
- { "settingsTitle", IDS_SETTINGS_TITLE },
- { "showAdvancedSettings", IDS_SETTINGS_SHOW_ADVANCED_SETTINGS },
- { "sslCheckRevocation", IDS_OPTIONS_SSL_CHECKREVOCATION },
- { "startupSetPages", IDS_OPTIONS2_STARTUP_SET_PAGES },
- { "startupShowNewTab", IDS_OPTIONS2_STARTUP_SHOW_NEWTAB },
- { "startupShowPages", IDS_OPTIONS2_STARTUP_SHOW_PAGES },
- { "suggestPref", IDS_OPTIONS_SUGGEST_PREF },
- { "syncButtonTextInProgress", IDS_SYNC_NTP_SETUP_IN_PROGRESS },
- { "syncButtonTextStop", IDS_SYNC_STOP_SYNCING_BUTTON_LABEL },
- { "themesGallery", IDS_THEMES_GALLERY_BUTTON },
- { "themesGalleryURL", IDS_THEMES_GALLERY_URL },
- { "tabsToLinksPref", IDS_OPTIONS_TABS_TO_LINKS_PREF },
- { "toolbarShowBookmarksBar", IDS_OPTIONS_TOOLBAR_SHOW_BOOKMARKS_BAR },
- { "toolbarShowHomeButton", IDS_OPTIONS_TOOLBAR_SHOW_HOME_BUTTON },
- { "translateEnableTranslate",
- IDS_OPTIONS_TRANSLATE_ENABLE_TRANSLATE },
-#if defined(TOOLKIT_GTK)
- { "showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS },
- { "themesGTKButton", IDS_THEMES_GTK_BUTTON },
- { "themesSetClassic", IDS_THEMES_SET_CLASSIC },
-#else
- { "themes", IDS_THEMES_GROUP_NAME },
- { "themesReset", IDS_THEMES_RESET_BUTTON },
-#endif
-#if defined(OS_CHROMEOS)
- { "accessibilityHighContrast",
- IDS_OPTIONS_SETTINGS_ACCESSIBILITY_HIGH_CONTRAST_DESCRIPTION },
- { "accessibilityScreenMagnifier",
- IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_DESCRIPTION },
- { "accessibilitySpokenFeedback",
- IDS_OPTIONS_SETTINGS_ACCESSIBILITY_DESCRIPTION },
- { "accessibilityTitle",
- IDS_OPTIONS_SETTINGS_SECTION_TITLE_ACCESSIBILITY },
- { "accessibilityVirtualKeyboard",
- IDS_OPTIONS_SETTINGS_ACCESSIBILITY_VIRTUAL_KEYBOARD_DESCRIPTION },
- { "changePicture", IDS_OPTIONS_CHANGE_PICTURE_CAPTION },
- { "datetimeTitle", IDS_OPTIONS_SETTINGS_SECTION_TITLE_DATETIME },
- { "deviceGroupDescription", IDS_OPTIONS_DEVICE_GROUP_DESCRIPTION },
- { "deviceGroupPointer", IDS_OPTIONS2_DEVICE_GROUP_POINTER_SECTION },
- { "mouseSpeed", IDS_OPTIONS2_SETTINGS_MOUSE_SPEED_DESCRIPTION },
- { "touchpadSpeed", IDS_OPTIONS2_SETTINGS_TOUCHPAD_SPEED_DESCRIPTION },
- { "enableScreenlock", IDS_OPTIONS_ENABLE_SCREENLOCKER_CHECKBOX },
- { "internetOptionsButtonTitle", IDS_OPTIONS_INTERNET_OPTIONS_BUTTON_TITLE },
- { "keyboardSettingsButtonTitle",
- IDS_OPTIONS2_DEVICE_GROUP_KEYBOARD_SETTINGS_BUTTON_TITLE },
- { "manageAccountsButtonTitle", IDS_OPTIONS_ACCOUNTS_BUTTON_TITLE },
- { "noPointingDevices", IDS_OPTIONS_NO_POINTING_DEVICES },
- { "sectionTitleDevice", IDS_OPTIONS_DEVICE_GROUP_NAME },
- { "sectionTitleInternet", IDS_OPTIONS_INTERNET_OPTIONS_GROUP_LABEL },
- { "syncOverview", IDS_SYNC_OVERVIEW },
- { "syncButtonTextStart", IDS_SYNC_SETUP_BUTTON_LABEL },
- { "timezone", IDS_OPTIONS_SETTINGS_TIMEZONE_DESCRIPTION },
- { "use24HourClock", IDS_OPTIONS_SETTINGS_USE_24HOUR_CLOCK_DESCRIPTION },
-#else
- { "cloudPrintConnectorEnabledManageButton",
- IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_ENABLED_MANAGE_BUTTON},
- { "cloudPrintConnectorEnablingButton",
- IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_ENABLING_BUTTON },
- { "proxiesConfigureButton", IDS_OPTIONS_PROXIES_CONFIGURE_BUTTON },
-#endif
-#if defined(OS_CHROMEOS) && defined(USE_ASH)
- { "setWallpaper", IDS_SET_WALLPAPER_BUTTON },
-#endif
-#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
- { "advancedSectionTitleBackground",
- IDS_OPTIONS_ADVANCED_SECTION_TITLE_BACKGROUND },
- { "backgroundModeCheckbox", IDS_OPTIONS_BACKGROUND_ENABLE_BACKGROUND_MODE },
-#endif
- };
-
- RegisterStrings(values, resources, arraysize(resources));
- RegisterCloudPrintValues(values);
-
-#if !defined(OS_CHROMEOS)
- values->SetString(
- "syncOverview",
- l10n_util::GetStringFUTF16(IDS_SYNC_OVERVIEW,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
- values->SetString(
- "syncButtonTextStart",
- l10n_util::GetStringFUTF16(IDS_SYNC_START_SYNC_BUTTON_LABEL,
- l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME)));
-#endif
-
- values->SetString("syncLearnMoreURL", chrome::kSyncLearnMoreURL);
- values->SetString(
- "profilesSingleUser",
- l10n_util::GetStringFUTF16(IDS_PROFILES_SINGLE_USER_MESSAGE,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
-
- string16 omnibox_url = ASCIIToUTF16(chrome::kOmniboxLearnMoreURL);
- values->SetString(
- "defaultSearchGroupLabel",
- l10n_util::GetStringFUTF16(IDS_SEARCH_PREF_EXPLANATION, omnibox_url));
-
- string16 instant_learn_more_url = ASCIIToUTF16(chrome::kInstantLearnMoreURL);
- values->SetString(
- "instantPrefAndWarning",
- l10n_util::GetStringFUTF16(IDS_INSTANT_PREF_WITH_WARNING,
- instant_learn_more_url));
- values->SetString("instantLearnMoreLink", instant_learn_more_url);
-
- values->SetString(
- "defaultBrowserUnknown",
- l10n_util::GetStringFUTF16(IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
- values->SetString(
- "defaultBrowserUseAsDefault",
- l10n_util::GetStringFUTF16(IDS_OPTIONS_DEFAULTBROWSER_USEASDEFAULT,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
- values->SetString(
- "autoLaunchText",
- l10n_util::GetStringFUTF16(IDS_AUTOLAUNCH_TEXT,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
-
-#if defined(OS_CHROMEOS)
- values->SetString("username",
- chromeos::UserManager::Get()->IsUserLoggedIn() ?
- chromeos::UserManager::Get()->GetLoggedInUser().email() :
- std::string());
-#endif
-
- // Pass along sync status early so it will be available during page init.
- values->Set("syncData", GetSyncStateDictionary().release());
-
- values->SetString("privacyLearnMoreURL", chrome::kPrivacyLearnMoreURL);
- values->SetString("sessionRestoreLearnMoreURL",
- chrome::kSessionRestoreLearnMoreURL);
-
- values->SetString(
- "languageSectionLabel",
- l10n_util::GetStringFUTF16(
- IDS_OPTIONS_ADVANCED_LANGUAGE_LABEL,
- l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME)));
-
-#if defined(OS_CHROMEOS)
- values->SetString("cloudPrintLearnMoreURL", chrome::kCloudPrintLearnMoreURL);
-
- // TODO(pastarmovj): replace this with a call to the CrosSettings list
- // handling functionality to come.
- values->Set("timezoneList", GetTimezoneList().release());
-#endif
-#if defined(OS_MACOSX)
- values->SetString("macPasswordsWarning",
- l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MAC_WARNING));
- values->SetBoolean("multiple_profiles",
- g_browser_process->profile_manager()->GetNumberOfProfiles() > 1);
-#endif
-
- if (multiprofile_)
- values->Set("profilesInfo", GetProfilesInfoList().release());
-}
-
-void BrowserOptionsHandler::RegisterCloudPrintValues(DictionaryValue* values) {
-#if defined(OS_CHROMEOS)
- values->SetString("cloudPrintChromeosOptionLabel",
- l10n_util::GetStringFUTF16(
- IDS_CLOUD_PRINT_CHROMEOS_OPTION_LABEL,
- l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT)));
- values->SetString("cloudPrintChromeosOptionButton",
- l10n_util::GetStringFUTF16(
- IDS_CLOUD_PRINT_CHROMEOS_OPTION_BUTTON,
- l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT)));
-#else
- values->SetString("cloudPrintConnectorDisabledLabel",
- l10n_util::GetStringFUTF16(
- IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_DISABLED_LABEL,
- l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT)));
- values->SetString("cloudPrintConnectorDisabledButton",
- l10n_util::GetStringUTF16(
- IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_DISABLED_BUTTON));
- values->SetString("cloudPrintConnectorEnabledButton",
- l10n_util::GetStringUTF16(
- IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_ENABLED_BUTTON));
-#endif
-}
-
-void BrowserOptionsHandler::RegisterMessages() {
- web_ui()->RegisterMessageCallback(
- "becomeDefaultBrowser",
- base::Bind(&BrowserOptionsHandler::BecomeDefaultBrowser,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "setDefaultSearchEngine",
- base::Bind(&BrowserOptionsHandler::SetDefaultSearchEngine,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "createProfile",
- base::Bind(&BrowserOptionsHandler::CreateProfile,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "createProfileInfo",
- base::Bind(&BrowserOptionsHandler::CreateProfileInfo,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "themesReset",
- base::Bind(&BrowserOptionsHandler::ThemesReset,
- base::Unretained(this)));
-#if defined(TOOLKIT_GTK)
- web_ui()->RegisterMessageCallback(
- "themesSetGTK",
- base::Bind(&BrowserOptionsHandler::ThemesSetGTK,
- base::Unretained(this)));
-#endif
- web_ui()->RegisterMessageCallback(
- "selectDownloadLocation",
- base::Bind(&BrowserOptionsHandler::HandleSelectDownloadLocation,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "autoOpenFileTypesAction",
- base::Bind(&BrowserOptionsHandler::HandleAutoOpenButton,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "defaultFontSizeAction",
- base::Bind(&BrowserOptionsHandler::HandleDefaultFontSize,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "defaultZoomFactorAction",
- base::Bind(&BrowserOptionsHandler::HandleDefaultZoomFactor,
- base::Unretained(this)));
-#if !defined(OS_CHROMEOS)
- web_ui()->RegisterMessageCallback(
- "metricsReportingCheckboxAction",
- base::Bind(&BrowserOptionsHandler::HandleMetricsReportingCheckbox,
- base::Unretained(this)));
-#endif
-#if !defined(USE_NSS) && !defined(USE_OPENSSL)
- web_ui()->RegisterMessageCallback(
- "showManageSSLCertificates",
- base::Bind(&BrowserOptionsHandler::ShowManageSSLCertificates,
- base::Unretained(this)));
-#endif
- web_ui()->RegisterMessageCallback(
- "showCloudPrintManagePage",
- base::Bind(&BrowserOptionsHandler::ShowCloudPrintManagePage,
- base::Unretained(this)));
-#if !defined(OS_CHROMEOS)
- if (cloud_print_connector_ui_enabled_) {
- web_ui()->RegisterMessageCallback(
- "showCloudPrintSetupDialog",
- base::Bind(&BrowserOptionsHandler::ShowCloudPrintSetupDialog,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "disableCloudPrintConnector",
- base::Bind(&BrowserOptionsHandler::HandleDisableCloudPrintConnector,
- base::Unretained(this)));
- }
- web_ui()->RegisterMessageCallback(
- "showNetworkProxySettings",
- base::Bind(&BrowserOptionsHandler::ShowNetworkProxySettings,
- base::Unretained(this)));
-#endif
- web_ui()->RegisterMessageCallback(
- "checkRevocationCheckboxAction",
- base::Bind(&BrowserOptionsHandler::HandleCheckRevocationCheckbox,
- base::Unretained(this)));
-#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
- web_ui()->RegisterMessageCallback(
- "backgroundModeAction",
- base::Bind(&BrowserOptionsHandler::HandleBackgroundModeCheckbox,
- base::Unretained(this)));
-#endif
-#if defined(OS_CHROMEOS)
- web_ui()->RegisterMessageCallback(
- "openWallpaperManager",
- base::Bind(&BrowserOptionsHandler::HandleOpenWallpaperManager,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "spokenFeedbackChange",
- base::Bind(&BrowserOptionsHandler::SpokenFeedbackChangeCallback,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "highContrastChange",
- base::Bind(&BrowserOptionsHandler::HighContrastChangeCallback,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "screenMagnifierChange",
- base::Bind(&BrowserOptionsHandler::ScreenMagnifierChangeCallback,
- base::Unretained(this)));
- web_ui()->RegisterMessageCallback(
- "virtualKeyboardChange",
- base::Bind(&BrowserOptionsHandler::VirtualKeyboardChangeCallback,
- base::Unretained(this)));
-#endif
-}
-
-void BrowserOptionsHandler::OnStateChanged() {
- web_ui()->CallJavascriptFunction("BrowserOptions.updateSyncState",
- *GetSyncStateDictionary());
-
- SendProfilesInfo();
-}
-
-void BrowserOptionsHandler::InitializeHandler() {
- Profile* profile = Profile::FromWebUI(web_ui());
- PrefService* prefs = profile->GetPrefs();
-
- ProfileSyncService* sync_service(
- ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile));
- if (sync_service)
- sync_service->AddObserver(this);
-
- // Create our favicon data source.
- ChromeURLDataManager::AddDataSource(profile,
- new FaviconSource(profile, FaviconSource::FAVICON));
-
- default_browser_policy_.Init(prefs::kDefaultBrowserSettingEnabled,
- g_browser_process->local_state(),
- this);
-
- registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED,
- content::NotificationService::AllSources());
-#if defined(OS_CHROMEOS)
- registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
- content::NotificationService::AllSources());
-#endif
- registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
- content::Source<ThemeService>(
- ThemeServiceFactory::GetForProfile(profile)));
-
- AddTemplateUrlServiceObserver();
-
-#if defined(OS_WIN)
- const CommandLine& command_line = *CommandLine::ForCurrentProcess();
- if (!command_line.HasSwitch(switches::kChromeFrame) &&
- !command_line.HasSwitch(switches::kUserDataDir)) {
- BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
- base::Bind(&BrowserOptionsHandler::CheckAutoLaunch,
- weak_ptr_factory_for_ui_.GetWeakPtr(),
- weak_ptr_factory_for_file_.GetWeakPtr(),
- profile->GetPath()));
- weak_ptr_factory_for_ui_.DetachFromThread();
- }
-#endif
-
-#if !defined(OS_CHROMEOS)
- enable_metrics_recording_.Init(prefs::kMetricsReportingEnabled,
- g_browser_process->local_state(), this);
- cloud_print_connector_email_.Init(prefs::kCloudPrintEmail, prefs, this);
- cloud_print_connector_enabled_.Init(prefs::kCloudPrintProxyEnabled, prefs,
- this);
-#endif
-
- rev_checking_enabled_.Init(prefs::kCertRevocationCheckingEnabled,
- g_browser_process->local_state(), this);
-
-#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
- background_mode_enabled_.Init(prefs::kBackgroundModeEnabled,
- g_browser_process->local_state(), this);
-#endif
-
- auto_open_files_.Init(prefs::kDownloadExtensionsToOpen, prefs, this);
- default_font_size_.Init(prefs::kWebKitDefaultFontSize, prefs, this);
- default_zoom_level_.Init(prefs::kDefaultZoomLevel, prefs, this);
-#if !defined(OS_CHROMEOS)
- proxy_prefs_.reset(
- PrefSetObserver::CreateProxyPrefSetObserver(prefs, this));
-#endif // !defined(OS_CHROMEOS)
-}
-
-void BrowserOptionsHandler::InitializePage() {
- OnTemplateURLServiceChanged();
- ObserveThemeChanged();
- OnStateChanged();
- UpdateDefaultBrowserState();
-
- SetupMetricsReportingCheckbox();
- SetupMetricsReportingSettingVisibility();
- SetupPasswordGenerationSettingVisibility();
- SetupFontSizeSelector();
- SetupPageZoomSelector();
- SetupAutoOpenFileTypes();
- SetupProxySettingsSection();
- SetupSSLConfigSettings();
-#if !defined(OS_CHROMEOS)
- if (cloud_print_connector_ui_enabled_) {
- SetupCloudPrintConnectorSection();
- RefreshCloudPrintStatusFromService();
- } else {
- RemoveCloudPrintConnectorSection();
- }
-#endif
-#if defined(OS_CHROMEOS)
- SetupAccessibilityFeatures();
-#endif
-#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
- SetupBackgroundModeSettings();
-#endif
-}
-
-void BrowserOptionsHandler::CheckAutoLaunch(
- base::WeakPtr<BrowserOptionsHandler> weak_this,
- const FilePath& profile_path) {
-#if defined(OS_WIN)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
-
- // Auto-launch is not supported for secondary profiles yet.
- if (profile_path.BaseName().value() != ASCIIToUTF16(chrome::kInitialProfile))
- return;
-
- // Pass in weak pointer to this to avoid race if BrowserOptionsHandler is
- // deleted.
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- base::Bind(&BrowserOptionsHandler::CheckAutoLaunchCallback,
- weak_this,
- auto_launch_trial::IsInAutoLaunchGroup(),
- auto_launch_util::AutoStartRequested(
- profile_path.BaseName().value(),
- true, // Window requested.
- FilePath())));
-#endif
-}
-
-void BrowserOptionsHandler::CheckAutoLaunchCallback(
- bool is_in_auto_launch_group,
- bool will_launch_at_login) {
-#if defined(OS_WIN)
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- if (is_in_auto_launch_group) {
- web_ui()->RegisterMessageCallback("toggleAutoLaunch",
- base::Bind(&BrowserOptionsHandler::ToggleAutoLaunch,
- base::Unretained(this)));
-
- base::FundamentalValue enabled(will_launch_at_login);
- web_ui()->CallJavascriptFunction("BrowserOptions.updateAutoLaunchState",
- enabled);
- }
-#endif
-}
-
-void BrowserOptionsHandler::UpdateDefaultBrowserState() {
- // Check for side-by-side first.
- if (ShellIntegration::CanSetAsDefaultBrowser() ==
- ShellIntegration::SET_DEFAULT_NOT_ALLOWED) {
- SetDefaultBrowserUIString(IDS_OPTIONS_DEFAULTBROWSER_SXS);
- return;
- }
-
-#if defined(OS_MACOSX)
- ShellIntegration::DefaultWebClientState state =
- ShellIntegration::IsDefaultBrowser();
- int status_string_id;
- if (state == ShellIntegration::IS_DEFAULT_WEB_CLIENT)
- status_string_id = IDS_OPTIONS_DEFAULTBROWSER_DEFAULT;
- else if (state == ShellIntegration::NOT_DEFAULT_WEB_CLIENT)
- status_string_id = IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT;
- else
- status_string_id = IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN;
-
- SetDefaultBrowserUIString(status_string_id);
-#else
- default_browser_worker_->StartCheckIsDefault();
-#endif
-}
-
-void BrowserOptionsHandler::BecomeDefaultBrowser(const ListValue* args) {
- // If the default browser setting is managed then we should not be able to
- // call this function.
- if (default_browser_policy_.IsManaged())
- return;
-
- content::RecordAction(UserMetricsAction("Options_SetAsDefaultBrowser"));
-#if defined(OS_MACOSX)
- if (ShellIntegration::SetAsDefaultBrowser())
- UpdateDefaultBrowserState();
-#else
- default_browser_worker_->StartSetAsDefault();
- // Callback takes care of updating UI.
-#endif
-
- // If the user attempted to make Chrome the default browser, then he/she
- // arguably wants to be notified when that changes.
- PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
- prefs->SetBoolean(prefs::kCheckDefaultBrowser, true);
-}
-
-int BrowserOptionsHandler::StatusStringIdForState(
- ShellIntegration::DefaultWebClientState state) {
- if (state == ShellIntegration::IS_DEFAULT_WEB_CLIENT)
- return IDS_OPTIONS_DEFAULTBROWSER_DEFAULT;
- if (state == ShellIntegration::NOT_DEFAULT_WEB_CLIENT)
- return IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT;
- return IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN;
-}
-
-void BrowserOptionsHandler::SetDefaultWebClientUIState(
- ShellIntegration::DefaultWebClientUIState state) {
- int status_string_id;
- if (state == ShellIntegration::STATE_IS_DEFAULT)
- status_string_id = IDS_OPTIONS_DEFAULTBROWSER_DEFAULT;
- else if (state == ShellIntegration::STATE_NOT_DEFAULT)
- status_string_id = IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT;
- else if (state == ShellIntegration::STATE_UNKNOWN)
- status_string_id = IDS_OPTIONS_DEFAULTBROWSER_UNKNOWN;
- else
- return; // Still processing.
-
- SetDefaultBrowserUIString(status_string_id);
-}
-
-bool BrowserOptionsHandler::IsInteractiveSetDefaultPermitted() {
- return true; // This is UI so we can allow it.
-}
-
-void BrowserOptionsHandler::SetDefaultBrowserUIString(int status_string_id) {
- scoped_ptr<Value> status_string(Value::CreateStringValue(
- l10n_util::GetStringFUTF16(status_string_id,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))));
-
- scoped_ptr<Value> is_default(Value::CreateBooleanValue(
- status_string_id == IDS_OPTIONS_DEFAULTBROWSER_DEFAULT));
-
- scoped_ptr<Value> can_be_default(Value::CreateBooleanValue(
- !default_browser_policy_.IsManaged() &&
- (status_string_id == IDS_OPTIONS_DEFAULTBROWSER_DEFAULT ||
- status_string_id == IDS_OPTIONS_DEFAULTBROWSER_NOTDEFAULT)));
-
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.updateDefaultBrowserState",
- *status_string, *is_default, *can_be_default);
-}
-
-void BrowserOptionsHandler::OnTemplateURLServiceChanged() {
- if (!template_url_service_ || !template_url_service_->loaded())
- return;
-
- const TemplateURL* default_url =
- template_url_service_->GetDefaultSearchProvider();
-
- int default_index = 0;
- ListValue search_engines;
- TemplateURLService::TemplateURLVector model_urls(
- template_url_service_->GetTemplateURLs());
- for (size_t i = 0; i < model_urls.size(); ++i) {
- if (!model_urls[i]->ShowInDefaultList())
- continue;
-
- DictionaryValue* entry = new DictionaryValue();
- entry->SetString("name", model_urls[i]->short_name());
- entry->SetInteger("index", i);
- search_engines.Append(entry);
- if (model_urls[i] == default_url)
- default_index = i;
- }
-
- scoped_ptr<Value> default_value(Value::CreateIntegerValue(default_index));
- scoped_ptr<Value> default_managed(Value::CreateBooleanValue(
- template_url_service_->is_default_search_managed()));
-
- web_ui()->CallJavascriptFunction("BrowserOptions.updateSearchEngines",
- search_engines, *default_value,
- *default_managed);
-}
-
-void BrowserOptionsHandler::SetDefaultSearchEngine(const ListValue* args) {
- int selected_index = -1;
- if (!ExtractIntegerValue(args, &selected_index)) {
- NOTREACHED();
- return;
- }
-
- TemplateURLService::TemplateURLVector model_urls(
- template_url_service_->GetTemplateURLs());
- if (selected_index >= 0 &&
- selected_index < static_cast<int>(model_urls.size()))
- template_url_service_->SetDefaultSearchProvider(model_urls[selected_index]);
-
- content::RecordAction(UserMetricsAction("Options_SearchEngineChanged"));
-}
-
-void BrowserOptionsHandler::AddTemplateUrlServiceObserver() {
- template_url_service_ =
- TemplateURLServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()));
- if (template_url_service_) {
- template_url_service_->Load();
- template_url_service_->AddObserver(this);
- }
-}
-
-void BrowserOptionsHandler::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- if (type == chrome::NOTIFICATION_BROWSER_THEME_CHANGED) {
- ObserveThemeChanged();
-#if defined(OS_CHROMEOS)
- } else if (type == chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED) {
- UpdateAccountPicture();
-#endif
- } else if (type == chrome::NOTIFICATION_PREF_CHANGED) {
- std::string* pref_name = content::Details<std::string>(details).ptr();
- if (*pref_name == prefs::kDefaultBrowserSettingEnabled) {
- UpdateDefaultBrowserState();
- } else if (*pref_name == prefs::kDownloadExtensionsToOpen) {
- SetupAutoOpenFileTypes();
-#if !defined(OS_CHROMEOS)
- } else if (proxy_prefs_->IsObserved(*pref_name)) {
- SetupProxySettingsSection();
-#endif // !defined(OS_CHROMEOS)
- } else if ((*pref_name == prefs::kCloudPrintEmail) ||
- (*pref_name == prefs::kCloudPrintProxyEnabled)) {
-#if !defined(OS_CHROMEOS)
- if (cloud_print_connector_ui_enabled_)
- SetupCloudPrintConnectorSection();
-#endif
- } else if (*pref_name == prefs::kWebKitDefaultFontSize) {
- SetupFontSizeSelector();
- } else if (*pref_name == prefs::kDefaultZoomLevel) {
- SetupPageZoomSelector();
-#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
- } else if (*pref_name == prefs::kBackgroundModeEnabled) {
- SetupBackgroundModeSettings();
-#endif
- } else {
- NOTREACHED();
- }
- } else if (type == chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED) {
- if (multiprofile_)
- SendProfilesInfo();
- } else {
- NOTREACHED();
- }
-}
-
-void BrowserOptionsHandler::ToggleAutoLaunch(const ListValue* args) {
-#if defined(OS_WIN)
- if (!auto_launch_trial::IsInAutoLaunchGroup())
- return;
-
- bool enable;
- CHECK_EQ(args->GetSize(), 1U);
- CHECK(args->GetBoolean(0, &enable));
-
- // Make sure we keep track of how many disable and how many enable.
- auto_launch_trial::UpdateToggleAutoLaunchMetric(enable);
- Profile* profile = Profile::FromWebUI(web_ui());
- content::BrowserThread::PostTask(
- content::BrowserThread::FILE, FROM_HERE,
- enable ? base::Bind(&auto_launch_util::EnableForegroundStartAtLogin,
- profile->GetPath().BaseName().value(), FilePath()) :
- base::Bind(&auto_launch_util::DisableForegroundStartAtLogin,
- profile->GetPath().BaseName().value()));
-#endif // OS_WIN
-}
-
-scoped_ptr<ListValue> BrowserOptionsHandler::GetProfilesInfoList() {
- ProfileInfoCache& cache =
- g_browser_process->profile_manager()->GetProfileInfoCache();
- scoped_ptr<ListValue> profile_info_list(new ListValue);
- FilePath current_profile_path =
- web_ui()->GetWebContents()->GetBrowserContext()->GetPath();
-
- for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i) {
- DictionaryValue* profile_value = new DictionaryValue();
- FilePath profile_path = cache.GetPathOfProfileAtIndex(i);
- profile_value->SetString("name", cache.GetNameOfProfileAtIndex(i));
- profile_value->Set("filePath", base::CreateFilePathValue(profile_path));
- profile_value->SetBoolean("isCurrentProfile",
- profile_path == current_profile_path);
-
- bool is_gaia_picture =
- cache.IsUsingGAIAPictureOfProfileAtIndex(i) &&
- cache.GetGAIAPictureOfProfileAtIndex(i);
- if (is_gaia_picture) {
- gfx::Image icon = profiles::GetAvatarIconForWebUI(
- cache.GetAvatarIconOfProfileAtIndex(i), true);
- profile_value->SetString("iconURL",
- web_ui_util::GetImageDataUrl(*icon.ToImageSkia()));
- } else {
- size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(i);
- profile_value->SetString("iconURL",
- cache.GetDefaultAvatarIconUrl(icon_index));
- }
-
- profile_info_list->Append(profile_value);
- }
-
- return profile_info_list.Pass();
-}
-
-void BrowserOptionsHandler::SendProfilesInfo() {
- web_ui()->CallJavascriptFunction("BrowserOptions.setProfilesInfo",
- *GetProfilesInfoList());
-}
-
-void BrowserOptionsHandler::CreateProfile(const ListValue* args) {
- // This handler could have been called in managed mode, for example because
- // the user fiddled with the web inspector. Silently return in this case.
- if (!ProfileManager::IsMultipleProfilesEnabled())
- return;
- string16 name, icon;
- if (args->GetString(0, &name) && args->GetString(1, &icon))
- ProfileManager::CreateMultiProfileAsync(name, icon);
- else
- ProfileManager::CreateMultiProfileAsync(string16(), string16());
-}
-
-void BrowserOptionsHandler::CreateProfileInfo(const ListValue* args) {
- DictionaryValue* profile_info = new DictionaryValue();
- ProfileInfoCache& cache =
- g_browser_process->profile_manager()->GetProfileInfoCache();
-
- size_t icon_index = cache.ChooseAvatarIconIndexForNewProfile();
-
- profile_info->SetString("name", cache.ChooseNameForNewProfile(icon_index));
- profile_info->SetString("iconURL", cache.GetDefaultAvatarIconUrl(
- icon_index));
-
- web_ui()->CallJavascriptFunction("ManageProfileOverlay.showCreateDialog",
- *profile_info);
-}
-
-void BrowserOptionsHandler::ObserveThemeChanged() {
- Profile* profile = Profile::FromWebUI(web_ui());
-#if defined(TOOLKIT_GTK)
- GtkThemeService* theme_service = GtkThemeService::GetFrom(profile);
- bool is_gtk_theme = theme_service->UsingNativeTheme();
- base::FundamentalValue gtk_enabled(!is_gtk_theme);
- web_ui()->CallJavascriptFunction("BrowserOptions.setGtkThemeButtonEnabled",
- gtk_enabled);
-#else
- ThemeService* theme_service = ThemeServiceFactory::GetForProfile(profile);
- bool is_gtk_theme = false;
-#endif
-
- bool is_classic_theme = !is_gtk_theme && theme_service->UsingDefaultTheme();
- base::FundamentalValue enabled(!is_classic_theme);
- web_ui()->CallJavascriptFunction("BrowserOptions.setThemesResetButtonEnabled",
- enabled);
-}
-
-void BrowserOptionsHandler::ThemesReset(const ListValue* args) {
- content::RecordAction(UserMetricsAction("Options_ThemesReset"));
- Profile* profile = Profile::FromWebUI(web_ui());
- ThemeServiceFactory::GetForProfile(profile)->UseDefaultTheme();
-}
-
-#if defined(TOOLKIT_GTK)
-void BrowserOptionsHandler::ThemesSetGTK(const ListValue* args) {
- content::RecordAction(UserMetricsAction("Options_GtkThemeSet"));
- Profile* profile = Profile::FromWebUI(web_ui());
- ThemeServiceFactory::GetForProfile(profile)->SetNativeTheme();
-}
-#endif
-
-#if defined(OS_CHROMEOS)
-void BrowserOptionsHandler::UpdateAccountPicture() {
- std::string email = chromeos::UserManager::Get()->GetLoggedInUser().email();
- if (!email.empty()) {
- web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture");
- base::StringValue email_value(email);
- web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture",
- email_value);
- }
-}
-#endif
-
-scoped_ptr<DictionaryValue> BrowserOptionsHandler::GetSyncStateDictionary() {
- scoped_ptr<DictionaryValue> sync_status(new DictionaryValue);
- ProfileSyncService* service(ProfileSyncServiceFactory::
- GetInstance()->GetForProfile(Profile::FromWebUI(web_ui())));
- sync_status->SetBoolean("syncSystemEnabled", !!service);
- if (!service)
- return sync_status.Pass();
-
- sync_status->SetBoolean("setupCompleted",
- service->HasSyncSetupCompleted());
- sync_status->SetBoolean("setupInProgress", service->FirstSetupInProgress());
-
- string16 status_label;
- string16 link_label;
- SigninManager* signin = SigninManagerFactory::GetForProfile(
- Profile::FromWebUI(web_ui()));
-
- bool status_has_error = sync_ui_util::GetStatusLabels(
- service, *signin, sync_ui_util::WITH_HTML, &status_label, &link_label) ==
- sync_ui_util::SYNC_ERROR;
- sync_status->SetString("statusText", status_label);
- sync_status->SetString("actionLinkText", link_label);
- sync_status->SetBoolean("hasError", status_has_error);
-
- sync_status->SetBoolean("managed", service->IsManaged());
- sync_status->SetBoolean("hasUnrecoverableError",
- service->HasUnrecoverableError());
- sync_status->SetBoolean(
- "autoLoginVisible",
- CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableAutologin) &&
- service->IsSyncEnabledAndLoggedIn() && service->IsSyncTokenAvailable());
-
- return sync_status.Pass();
-}
-
-void BrowserOptionsHandler::HandleSelectDownloadLocation(
- const ListValue* args) {
- PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
- select_folder_dialog_ = ui::SelectFileDialog::Create(
- this, new ChromeSelectFilePolicy(web_ui()->GetWebContents()));
- select_folder_dialog_->SelectFile(
- ui::SelectFileDialog::SELECT_FOLDER,
- l10n_util::GetStringUTF16(IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE),
- pref_service->GetFilePath(prefs::kDownloadDefaultDirectory),
- NULL, 0, FILE_PATH_LITERAL(""),
- web_ui()->GetWebContents()->GetView()->GetTopLevelNativeWindow(), NULL);
-}
-
-void BrowserOptionsHandler::FileSelected(const FilePath& path, int index,
- void* params) {
- content::RecordAction(UserMetricsAction("Options_SetDownloadDirectory"));
- PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
- pref_service->SetFilePath(prefs::kDownloadDefaultDirectory, path);
-}
-
-void BrowserOptionsHandler::OnCloudPrintSetupClosed() {
-#if !defined(OS_CHROMEOS)
- if (cloud_print_connector_ui_enabled_)
- SetupCloudPrintConnectorSection();
-#endif
-}
-
-#if defined(OS_CHROMEOS)
-void BrowserOptionsHandler::TouchpadExists(bool exists) {
- base::FundamentalValue val(exists);
- web_ui()->CallJavascriptFunction("BrowserOptions.showTouchpadControls", val);
-}
-
-void BrowserOptionsHandler::MouseExists(bool exists) {
- base::FundamentalValue val(exists);
- web_ui()->CallJavascriptFunction("BrowserOptions.showMouseControls", val);
-}
-#endif
-
-void BrowserOptionsHandler::HandleAutoOpenButton(const ListValue* args) {
- content::RecordAction(UserMetricsAction("Options_ResetAutoOpenFiles"));
- DownloadManager* manager = BrowserContext::GetDownloadManager(
- web_ui()->GetWebContents()->GetBrowserContext());
- if (manager)
- DownloadPrefs::FromDownloadManager(manager)->ResetAutoOpen();
-}
-
-void BrowserOptionsHandler::HandleMetricsReportingCheckbox(
- const ListValue* args) {
-#if defined(GOOGLE_CHROME_BUILD) && !defined(OS_CHROMEOS)
- std::string checked_str = UTF16ToUTF8(ExtractStringValue(args));
- bool enabled = checked_str == "true";
- content::RecordAction(
- enabled ?
- UserMetricsAction("Options_MetricsReportingCheckbox_Enable") :
- UserMetricsAction("Options_MetricsReportingCheckbox_Disable"));
- bool is_enabled = OptionsUtil::ResolveMetricsReportingEnabled(enabled);
- enable_metrics_recording_.SetValue(is_enabled);
- SetupMetricsReportingCheckbox();
-#endif
-}
-
-void BrowserOptionsHandler::HandleDefaultFontSize(const ListValue* args) {
- int font_size;
- if (ExtractIntegerValue(args, &font_size)) {
- if (font_size > 0) {
- default_font_size_.SetValue(font_size);
- SetupFontSizeSelector();
- }
- }
-}
-
-void BrowserOptionsHandler::HandleDefaultZoomFactor(const ListValue* args) {
- double zoom_factor;
- if (ExtractDoubleValue(args, &zoom_factor)) {
- default_zoom_level_.SetValue(
- WebKit::WebView::zoomFactorToZoomLevel(zoom_factor));
- }
-}
-
-void BrowserOptionsHandler::HandleCheckRevocationCheckbox(
- const ListValue* args) {
- std::string checked_str = UTF16ToUTF8(ExtractStringValue(args));
- bool enabled = checked_str == "true";
- content::RecordAction(
- enabled ?
- UserMetricsAction("Options_CheckCertRevocation_Enable") :
- UserMetricsAction("Options_CheckCertRevocation_Disable"));
- rev_checking_enabled_.SetValue(enabled);
-}
-
-#if !defined(OS_MACOSX) && !defined(OS_CHROMEOS)
-void BrowserOptionsHandler::HandleBackgroundModeCheckbox(
- const ListValue* args) {
- std::string checked_str = UTF16ToUTF8(ExtractStringValue(args));
- bool enabled = checked_str == "true";
- content::RecordAction(
- enabled ?
- UserMetricsAction("Options_BackgroundMode_Enable") :
- UserMetricsAction("Options_BackgroundMode_Disable"));
- background_mode_enabled_.SetValue(enabled);
-}
-
-void BrowserOptionsHandler::SetupBackgroundModeSettings() {
- base::FundamentalValue checked(background_mode_enabled_.GetValue());
- PrefService* service = g_browser_process->local_state();
- DCHECK(service);
- const PrefService::Preference* pref =
- service->FindPreference(prefs::kBackgroundModeEnabled);
- DCHECK(pref);
- base::FundamentalValue disabled(!pref->IsUserModifiable());
- std::string controlled_by_str;
- if (pref->IsManaged())
- controlled_by_str = "policy";
- else if (pref->IsExtensionControlled())
- controlled_by_str = "extension";
- else if (pref->IsRecommended())
- controlled_by_str = "recommended";
- base::StringValue controlled_by(controlled_by_str);
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setBackgroundModeCheckboxState",
- checked,
- disabled,
- controlled_by);
-}
-#endif
-
-#if !defined(OS_CHROMEOS)
-void BrowserOptionsHandler::ShowNetworkProxySettings(const ListValue* args) {
- content::RecordAction(UserMetricsAction("Options_ShowProxySettings"));
- AdvancedOptionsUtilities::ShowNetworkProxySettings(
- web_ui()->GetWebContents());
-}
-#endif
-
-#if !defined(USE_NSS) && !defined(USE_OPENSSL)
-void BrowserOptionsHandler::ShowManageSSLCertificates(const ListValue* args) {
- content::RecordAction(UserMetricsAction("Options_ManageSSLCertificates"));
- AdvancedOptionsUtilities::ShowManageSSLCertificates(
- web_ui()->GetWebContents());
-}
-#endif
-
-void BrowserOptionsHandler::ShowCloudPrintManagePage(const ListValue* args) {
- content::RecordAction(UserMetricsAction("Options_ManageCloudPrinters"));
- // Open a new tab in the current window for the management page.
- Profile* profile = Profile::FromWebUI(web_ui());
- OpenURLParams params(
- CloudPrintURL(profile).GetCloudPrintServiceManageURL(), Referrer(),
- NEW_FOREGROUND_TAB, content::PAGE_TRANSITION_LINK, false);
- web_ui()->GetWebContents()->OpenURL(params);
-}
-
-#if !defined(OS_CHROMEOS)
-void BrowserOptionsHandler::ShowCloudPrintSetupDialog(const ListValue* args) {
- content::RecordAction(UserMetricsAction("Options_EnableCloudPrintProxy"));
- // Open the connector enable page in the current tab.
- Profile* profile = Profile::FromWebUI(web_ui());
- OpenURLParams params(
- CloudPrintURL(profile).GetCloudPrintServiceEnableURL(
- CloudPrintProxyServiceFactory::GetForProfile(profile)->proxy_id()),
- Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_LINK, false);
- web_ui()->GetWebContents()->OpenURL(params);
-}
-
-void BrowserOptionsHandler::HandleDisableCloudPrintConnector(
- const ListValue* args) {
- content::RecordAction(
- UserMetricsAction("Options_DisableCloudPrintProxy"));
- CloudPrintProxyServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()))->
- DisableForUser();
-}
-
-void BrowserOptionsHandler::RefreshCloudPrintStatusFromService() {
- if (cloud_print_connector_ui_enabled_)
- CloudPrintProxyServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()))->
- RefreshStatusFromService();
-}
-
-void BrowserOptionsHandler::SetupCloudPrintConnectorSection() {
- Profile* profile = Profile::FromWebUI(web_ui());
- if (!CloudPrintProxyServiceFactory::GetForProfile(profile)) {
- cloud_print_connector_ui_enabled_ = false;
- RemoveCloudPrintConnectorSection();
- return;
- }
-
- bool cloud_print_connector_allowed =
- !cloud_print_connector_enabled_.IsManaged() ||
- cloud_print_connector_enabled_.GetValue();
- base::FundamentalValue allowed(cloud_print_connector_allowed);
-
- std::string email;
- if (profile->GetPrefs()->HasPrefPath(prefs::kCloudPrintEmail) &&
- cloud_print_connector_allowed) {
- email = profile->GetPrefs()->GetString(prefs::kCloudPrintEmail);
- }
- base::FundamentalValue disabled(email.empty());
-
- string16 label_str;
- if (email.empty()) {
- label_str = l10n_util::GetStringFUTF16(
- IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_DISABLED_LABEL,
- l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT));
- } else {
- label_str = l10n_util::GetStringFUTF16(
- IDS_OPTIONS_CLOUD_PRINT_CONNECTOR_ENABLED_LABEL,
- l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT),
- UTF8ToUTF16(email));
- }
- StringValue label(label_str);
-
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setupCloudPrintConnectorSection", disabled, label,
- allowed);
-}
-
-void BrowserOptionsHandler::RemoveCloudPrintConnectorSection() {
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.removeCloudPrintConnectorSection");
-}
-#endif
-
-#if defined(OS_CHROMEOS)
-void BrowserOptionsHandler::HandleOpenWallpaperManager(
- const ListValue* args) {
- wallpaper_manager_util::OpenWallpaperManager();
-}
-
-void BrowserOptionsHandler::SpokenFeedbackChangeCallback(
- const ListValue* args) {
- bool enabled = false;
- args->GetBoolean(0, &enabled);
-
- chromeos::accessibility::EnableSpokenFeedback(enabled, NULL);
-}
-
-void BrowserOptionsHandler::HighContrastChangeCallback(const ListValue* args) {
- bool enabled = false;
- args->GetBoolean(0, &enabled);
-
- chromeos::accessibility::EnableHighContrast(enabled);
-}
-
-void BrowserOptionsHandler::ScreenMagnifierChangeCallback(
- const ListValue* args) {
- bool enabled = false;
- args->GetBoolean(0, &enabled);
-
- chromeos::accessibility::EnableScreenMagnifier(enabled);
-}
-
-void BrowserOptionsHandler::VirtualKeyboardChangeCallback(
- const ListValue* args) {
- bool enabled = false;
- args->GetBoolean(0, &enabled);
-
- chromeos::accessibility::EnableVirtualKeyboard(enabled);
-}
-
-void BrowserOptionsHandler::SetupAccessibilityFeatures() {
- PrefService* pref_service = g_browser_process->local_state();
- base::FundamentalValue spoken_feedback_enabled(
- pref_service->GetBoolean(prefs::kSpokenFeedbackEnabled));
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setSpokenFeedbackCheckboxState",
- spoken_feedback_enabled);
- base::FundamentalValue high_contrast_enabled(
- pref_service->GetBoolean(prefs::kHighContrastEnabled));
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setHighContrastCheckboxState",
- high_contrast_enabled);
- base::FundamentalValue screen_magnifier_enabled(
- pref_service->GetBoolean(prefs::kScreenMagnifierEnabled));
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setScreenMagnifierCheckboxState",
- screen_magnifier_enabled);
- base::FundamentalValue virtual_keyboard_enabled(
- pref_service->GetBoolean(prefs::kVirtualKeyboardEnabled));
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setVirtualKeyboardCheckboxState",
- virtual_keyboard_enabled);
-}
-#endif
-
-void BrowserOptionsHandler::SetupMetricsReportingCheckbox() {
-#if defined(GOOGLE_CHROME_BUILD) && !defined(OS_CHROMEOS)
- base::FundamentalValue checked(enable_metrics_recording_.GetValue());
- base::FundamentalValue disabled(enable_metrics_recording_.IsManaged());
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setMetricsReportingCheckboxState", checked, disabled);
-#endif
-}
-
-void BrowserOptionsHandler::SetupMetricsReportingSettingVisibility() {
-#if defined(GOOGLE_CHROME_BUILD) && defined(OS_CHROMEOS)
- // Don't show the reporting setting if we are in the guest mode.
- if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession)) {
- base::FundamentalValue visible(false);
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setMetricsReportingSettingVisibility", visible);
- }
-#endif
-}
-
-void BrowserOptionsHandler::SetupPasswordGenerationSettingVisibility() {
- base::FundamentalValue visible(
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnablePasswordGeneration));
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setPasswordGenerationSettingVisibility", visible);
-}
-
-void BrowserOptionsHandler::SetupFontSizeSelector() {
- // We're only interested in integer values, so convert to int.
- base::FundamentalValue font_size(default_font_size_.GetValue());
- web_ui()->CallJavascriptFunction("BrowserOptions.setFontSize", font_size);
-}
-
-void BrowserOptionsHandler::SetupPageZoomSelector() {
- PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
- double default_zoom_level = pref_service->GetDouble(prefs::kDefaultZoomLevel);
- double default_zoom_factor =
- WebKit::WebView::zoomLevelToZoomFactor(default_zoom_level);
-
- // Generate a vector of zoom factors from an array of known presets along with
- // the default factor added if necessary.
- std::vector<double> zoom_factors =
- chrome_page_zoom::PresetZoomFactors(default_zoom_factor);
-
- // Iterate through the zoom factors and and build the contents of the
- // selector that will be sent to the javascript handler.
- // Each item in the list has the following parameters:
- // 1. Title (string).
- // 2. Value (double).
- // 3. Is selected? (bool).
- ListValue zoom_factors_value;
- for (std::vector<double>::const_iterator i = zoom_factors.begin();
- i != zoom_factors.end(); ++i) {
- ListValue* option = new ListValue();
- double factor = *i;
- int percent = static_cast<int>(factor * 100 + 0.5);
- option->Append(Value::CreateStringValue(
- l10n_util::GetStringFUTF16Int(IDS_ZOOM_PERCENT, percent)));
- option->Append(Value::CreateDoubleValue(factor));
- bool selected = content::ZoomValuesEqual(factor, default_zoom_factor);
- option->Append(Value::CreateBooleanValue(selected));
- zoom_factors_value.Append(option);
- }
-
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setupPageZoomSelector", zoom_factors_value);
-}
-
-void BrowserOptionsHandler::SetupAutoOpenFileTypes() {
- // Set the hidden state for the AutoOpenFileTypesResetToDefault button.
- // We show the button if the user has any auto-open file types registered.
- DownloadManager* manager = BrowserContext::GetDownloadManager(
- web_ui()->GetWebContents()->GetBrowserContext());
- bool display = manager &&
- DownloadPrefs::FromDownloadManager(manager)->IsAutoOpenUsed();
- base::FundamentalValue value(display);
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setAutoOpenFileTypesDisplayed", value);
-}
-
-void BrowserOptionsHandler::SetupProxySettingsSection() {
-#if !defined(OS_CHROMEOS)
- // Disable the button if proxy settings are managed by a sysadmin or
- // overridden by an extension.
- PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
- const PrefService::Preference* proxy_config =
- pref_service->FindPreference(prefs::kProxy);
- bool is_extension_controlled = (proxy_config &&
- proxy_config->IsExtensionControlled());
-
- base::FundamentalValue disabled(proxy_prefs_->IsManaged() ||
- is_extension_controlled);
-
- // Get the appropriate info string to describe the button.
- string16 label_str;
- if (is_extension_controlled) {
- label_str = l10n_util::GetStringUTF16(IDS_OPTIONS_EXTENSION_PROXIES_LABEL);
- } else {
- label_str = l10n_util::GetStringFUTF16(IDS_OPTIONS_SYSTEM_PROXIES_LABEL,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME));
- }
- StringValue label(label_str);
-
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setupProxySettingsSection", disabled, label);
-#endif // !defined(OS_CHROMEOS)
-}
-
-void BrowserOptionsHandler::SetupSSLConfigSettings() {
- base::FundamentalValue checked(rev_checking_enabled_.GetValue());
- base::FundamentalValue disabled(rev_checking_enabled_.IsManaged());
- web_ui()->CallJavascriptFunction(
- "BrowserOptions.setCheckRevocationCheckboxState", checked, disabled);
-}
-
-} // namespace options

Powered by Google App Engine
This is Rietveld 408576698