options_util.cc revision 3f50c38dc070f4bb515c1b64450dae14f316474e
1// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/options/options_util.h" 6 7#include "base/threading/thread_restrictions.h" 8#include "chrome/browser/browser_process.h" 9#include "chrome/browser/download/download_manager.h" 10#include "chrome/browser/download/download_prefs.h" 11#include "chrome/browser/content_settings/host_content_settings_map.h" 12#include "chrome/browser/geolocation/geolocation_content_settings_map.h" 13#include "chrome/browser/host_zoom_map.h" 14#include "chrome/browser/metrics/metrics_service.h" 15#include "chrome/browser/notifications/desktop_notification_service.h" 16#include "chrome/browser/prefs/pref_service.h" 17#include "chrome/browser/profiles/profile.h" 18#include "chrome/common/pref_names.h" 19#include "chrome/installer/util/google_update_settings.h" 20 21// static 22void OptionsUtil::ResetToDefaults(Profile* profile) { 23 // TODO(tc): It would be nice if we could generate this list automatically so 24 // changes to any of the options pages doesn't require updating this list 25 // manually. 26 PrefService* prefs = profile->GetPrefs(); 27 const char* kUserPrefs[] = { 28 prefs::kAcceptLanguages, 29 prefs::kAlternateErrorPagesEnabled, 30 prefs::kClearPluginLSODataOnExit, 31 prefs::kClearSiteDataOnExit, 32 prefs::kCookieBehavior, 33 prefs::kDefaultCharset, 34 prefs::kDefaultZoomLevel, 35 prefs::kDeleteBrowsingHistory, 36 prefs::kDeleteCache, 37 prefs::kDeleteCookies, 38 prefs::kDeleteDownloadHistory, 39 prefs::kDeleteFormData, 40 prefs::kDeleteLSOData, 41 prefs::kDeletePasswords, 42 prefs::kDnsPrefetchingEnabled, 43#if defined(OS_LINUX) || defined(OS_FREEBSD) || defined(OS_OPENBSD) 44 prefs::kCertRevocationCheckingEnabled, 45 prefs::kSSL3Enabled, 46 prefs::kTLS1Enabled, 47#endif 48#if defined(OS_CHROMEOS) 49 prefs::kTapToClickEnabled, 50 prefs::kTouchpadSensitivity, 51#endif 52 prefs::kDownloadDefaultDirectory, 53 prefs::kDownloadExtensionsToOpen, 54 prefs::kSavingBrowserHistoryDisabled, 55 prefs::kEnableSpellCheck, 56 prefs::kEnableTranslate, 57 prefs::kAutoFillEnabled, 58 prefs::kAutoFillAuxiliaryProfilesEnabled, 59 prefs::kHomePage, 60 prefs::kHomePageIsNewTabPage, 61 prefs::kPromptForDownload, 62 prefs::kPasswordManagerEnabled, 63 prefs::kRestoreOnStartup, 64 prefs::kSafeBrowsingEnabled, 65 prefs::kSafeBrowsingReportingEnabled, 66 prefs::kSearchSuggestEnabled, 67 prefs::kShowHomeButton, 68 prefs::kSpellCheckDictionary, 69 prefs::kURLsToRestoreOnStartup, 70 prefs::kWebKitDefaultFixedFontSize, 71 prefs::kWebKitDefaultFontSize, 72 prefs::kWebKitFixedFontFamily, 73 prefs::kWebKitJavaEnabled, 74 prefs::kWebKitJavascriptEnabled, 75 prefs::kWebKitLoadsImagesAutomatically, 76 prefs::kWebKitPluginsEnabled, 77 prefs::kWebKitSansSerifFontFamily, 78 prefs::kWebKitSerifFontFamily, 79 prefs::kWebKitMinimumFontSize, 80 prefs::kWebKitMinimumLogicalFontSize, 81 prefs::kWebkitTabsToLinks, 82 }; 83 profile->GetDownloadManager()->download_prefs()->ResetToDefaults(); 84 profile->GetHostContentSettingsMap()->ResetToDefaults(); 85 profile->GetGeolocationContentSettingsMap()->ResetToDefault(); 86 profile->GetHostZoomMap()->ResetToDefaults(); 87 profile->GetDesktopNotificationService()->ResetToDefaultContentSetting(); 88 for (size_t i = 0; i < arraysize(kUserPrefs); ++i) 89 prefs->ClearPref(kUserPrefs[i]); 90 91 PrefService* local_state = g_browser_process->local_state(); 92 // Note that we don't reset the kMetricsReportingEnabled preference here 93 // because the reset will reset it to the default setting specified in Chrome 94 // source, not the default setting selected by the user on the web page where 95 // they downloaded Chrome. This means that if the user ever resets their 96 // settings they'll either inadvertedly enable this logging or disable it. 97 // One is undesirable for them, one is undesirable for us. For now, we just 98 // don't reset it. 99 const char* kLocalStatePrefs[] = { 100 prefs::kApplicationLocale, 101 }; 102 for (size_t i = 0; i < arraysize(kLocalStatePrefs); ++i) 103 local_state->ClearPref(kLocalStatePrefs[i]); 104} 105 106// static 107bool OptionsUtil::ResolveMetricsReportingEnabled(bool enabled) { 108 // GoogleUpdateSettings touches the disk from the UI thread. MetricsService 109 // also calls GoogleUpdateSettings below. http://crbug/62626 110 base::ThreadRestrictions::ScopedAllowIO allow_io; 111 112 GoogleUpdateSettings::SetCollectStatsConsent(enabled); 113 bool update_pref = GoogleUpdateSettings::GetCollectStatsConsent(); 114 115 if (enabled != update_pref) { 116 DVLOG(1) << "OptionsUtil: Unable to set crash report status to " << enabled; 117 } 118 119 // Only change the pref if GoogleUpdateSettings::GetCollectStatsConsent 120 // succeeds. 121 enabled = update_pref; 122 123 MetricsService* metrics = g_browser_process->metrics_service(); 124 DCHECK(metrics); 125 if (metrics) { 126 metrics->SetUserPermitsUpload(enabled); 127 if (enabled) 128 metrics->Start(); 129 else 130 metrics->Stop(); 131 } 132 133 return enabled; 134} 135