1dc0f95d653279beabeb9817299e2902918ba123eKristian 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 521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/options/options_util.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/threading/thread_restrictions.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/browser_process.h" 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/content_settings/host_content_settings_map.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/download/download_manager.h" 113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/download/download_prefs.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/geolocation/geolocation_content_settings_map.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/metrics/metrics_service.h" 143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/notifications/desktop_notification_service.h" 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/notifications/desktop_notification_service_factory.h" 163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/prefs/pref_service.h" 1721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/pref_names.h" 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/installer/util/google_update_settings.h" 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/host_zoom_map.h" 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// static 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid OptionsUtil::ResetToDefaults(Profile* profile) { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // TODO(tc): It would be nice if we could generate this list automatically so 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // changes to any of the options pages doesn't require updating this list 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // manually. 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PrefService* prefs = profile->GetPrefs(); 283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const char* kUserPrefs[] = { 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kAcceptLanguages, 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kAlternateErrorPagesEnabled, 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kClearSiteDataOnExit, 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kCookieBehavior, 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kDefaultCharset, 34513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch prefs::kDefaultZoomLevel, 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch prefs::kDeleteBrowsingHistory, 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch prefs::kDeleteCache, 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch prefs::kDeleteCookies, 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch prefs::kDeleteDownloadHistory, 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch prefs::kDeleteFormData, 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch prefs::kDeletePasswords, 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen prefs::kNetworkPredictionEnabled, 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // TODO(rtenneti): Remove ssl preferences from user_prefs when we stop 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // migrating user_prefs to local_state after 6 months (after we delete 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // migration code). 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kCertRevocationCheckingEnabled, 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kSSL3Enabled, 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kTLS1Enabled, 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(OS_CHROMEOS) 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kTapToClickEnabled, 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kTouchpadSensitivity, 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kDownloadDefaultDirectory, 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kDownloadExtensionsToOpen, 54731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick prefs::kSavingBrowserHistoryDisabled, 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kEnableSpellCheck, 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kEnableTranslate, 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen prefs::kAutofillEnabled, 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen prefs::kAutofillAuxiliaryProfilesEnabled, 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kHomePage, 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kHomePageIsNewTabPage, 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kPromptForDownload, 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kPasswordManagerEnabled, 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kRestoreOnStartup, 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kSafeBrowsingEnabled, 65201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch prefs::kSafeBrowsingReportingEnabled, 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kSearchSuggestEnabled, 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kShowHomeButton, 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kSpellCheckDictionary, 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kURLsToRestoreOnStartup, 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitDefaultFixedFontSize, 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitDefaultFontSize, 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitFixedFontFamily, 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitJavaEnabled, 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitJavascriptEnabled, 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitLoadsImagesAutomatically, 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitPluginsEnabled, 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitSansSerifFontFamily, 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebKitSerifFontFamily, 79731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick prefs::kWebKitMinimumFontSize, 80731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick prefs::kWebKitMinimumLogicalFontSize, 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kWebkitTabsToLinks, 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 833345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick profile->GetDownloadManager()->download_prefs()->ResetToDefaults(); 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch profile->GetHostContentSettingsMap()->ResetToDefaults(); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch profile->GetGeolocationContentSettingsMap()->ResetToDefault(); 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch profile->GetHostZoomMap()->ResetToDefaults(); 87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DesktopNotificationServiceFactory::GetForProfile(profile)-> 88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ResetToDefaultContentSetting(); 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (size_t i = 0; i < arraysize(kUserPrefs); ++i) 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs->ClearPref(kUserPrefs[i]); 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PrefService* local_state = g_browser_process->local_state(); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Note that we don't reset the kMetricsReportingEnabled preference here 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // because the reset will reset it to the default setting specified in Chrome 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // source, not the default setting selected by the user on the web page where 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // they downloaded Chrome. This means that if the user ever resets their 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // settings they'll either inadvertedly enable this logging or disable it. 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // One is undesirable for them, one is undesirable for us. For now, we just 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // don't reset it. 1003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const char* kLocalStatePrefs[] = { 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prefs::kApplicationLocale, 102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen prefs::kCertRevocationCheckingEnabled, 103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen prefs::kSSL3Enabled, 104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen prefs::kTLS1Enabled, 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (size_t i = 0; i < arraysize(kLocalStatePrefs); ++i) 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch local_state->ClearPref(kLocalStatePrefs[i]); 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// static 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool OptionsUtil::ResolveMetricsReportingEnabled(bool enabled) { 1124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // GoogleUpdateSettings touches the disk from the UI thread. MetricsService 1134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // also calls GoogleUpdateSettings below. http://crbug/62626 1144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch base::ThreadRestrictions::ScopedAllowIO allow_io; 1154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GoogleUpdateSettings::SetCollectStatsConsent(enabled); 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool update_pref = GoogleUpdateSettings::GetCollectStatsConsent(); 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (enabled != update_pref) { 120731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DVLOG(1) << "OptionsUtil: Unable to set crash report status to " << enabled; 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Only change the pref if GoogleUpdateSettings::GetCollectStatsConsent 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // succeeds. 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch enabled = update_pref; 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MetricsService* metrics = g_browser_process->metrics_service(); 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DCHECK(metrics); 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (metrics) { 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (enabled) 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch metrics->Start(); 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch else 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch metrics->Stop(); 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return enabled; 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 138