browser_ui_prefs.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_ui_prefs.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/prefs/pref_registry_simple.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/prefs/pref_service.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/first_run/first_run.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "components/user_prefs/pref_registry_syncable.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome { 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RegisterBrowserPrefs(PrefRegistrySimple* registry) { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registry->RegisterIntegerPref(prefs::kOptionsWindowLastTabIndex, 0); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registry->RegisterBooleanPref(prefs::kAllowFileSelectionDialogs, true); 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registry->RegisterIntegerPref(prefs::kShowFirstRunBubbleOption, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) first_run::FIRST_RUN_BUBBLE_DONT_SHOW); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RegisterBrowserUserPrefs(PrefRegistrySyncable* registry) { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registry->RegisterBooleanPref(prefs::kHomePageChanged, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefRegistrySyncable::UNSYNCABLE_PREF); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registry->RegisterBooleanPref(prefs::kHomePageIsNewTabPage, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefRegistrySyncable::SYNCABLE_PREF); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registry->RegisterBooleanPref(prefs::kShowHomeButton, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefRegistrySyncable::SYNCABLE_PREF); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registry->RegisterIntegerPref(prefs::kExtensionsSideloadWipeoutBubbleShown, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefRegistrySyncable::SYNCABLE_PREF); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // This really belongs in platform code, but there's no good place to 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // initialize it between the time when the AppController is created 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (where there's no profile) and the time the controller gets another 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // crack at the start of the main event loop. By that time, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // StartupBrowserCreator has already created the browser window, and it's too 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // late: we need the pref to be already initialized. Doing it here also saves 438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // us from having to hard-code pref registration in the several unit tests 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that use this preference. 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registry->RegisterBooleanPref(prefs::kShowUpdatePromotionInfoBar, 46 true, 47 PrefRegistrySyncable::UNSYNCABLE_PREF); 48#endif 49 registry->RegisterBooleanPref(prefs::kDeleteBrowsingHistory, 50 true, 51 PrefRegistrySyncable::SYNCABLE_PREF); 52 registry->RegisterBooleanPref(prefs::kDeleteDownloadHistory, 53 true, 54 PrefRegistrySyncable::SYNCABLE_PREF); 55 registry->RegisterBooleanPref(prefs::kDeleteCache, 56 true, 57 PrefRegistrySyncable::SYNCABLE_PREF); 58 registry->RegisterBooleanPref(prefs::kDeleteCookies, 59 true, 60 PrefRegistrySyncable::SYNCABLE_PREF); 61 registry->RegisterBooleanPref(prefs::kDeletePasswords, 62 false, 63 PrefRegistrySyncable::SYNCABLE_PREF); 64 registry->RegisterBooleanPref(prefs::kDeleteFormData, 65 false, 66 PrefRegistrySyncable::SYNCABLE_PREF); 67 registry->RegisterBooleanPref(prefs::kDeleteHostedAppsData, 68 false, 69 PrefRegistrySyncable::SYNCABLE_PREF); 70 registry->RegisterIntegerPref(prefs::kDeleteTimePeriod, 71 0, 72 PrefRegistrySyncable::SYNCABLE_PREF); 73 registry->RegisterInt64Pref(prefs::kLastClearBrowsingDataTime, 74 0, 75 PrefRegistrySyncable::UNSYNCABLE_PREF); 76 registry->RegisterBooleanPref(prefs::kCheckDefaultBrowser, 77 true, 78 PrefRegistrySyncable::UNSYNCABLE_PREF); 79#if defined(OS_WIN) 80 // As with Mac-spacific code above, it should be in a platform-specific 81 // section somewhere, but there is no good place for it. 82 registry->RegisterBooleanPref(prefs::kSuppressSwitchToMetroModeOnSetDefault, 83 false, 84 PrefRegistrySyncable::UNSYNCABLE_PREF); 85#endif 86 registry->RegisterBooleanPref(prefs::kShowOmniboxSearchHint, 87 true, 88 PrefRegistrySyncable::UNSYNCABLE_PREF); 89 registry->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, 90 true, 91 PrefRegistrySyncable::UNSYNCABLE_PREF); 92 registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, 93 true, 94 PrefRegistrySyncable::UNSYNCABLE_PREF); 95 registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, 96 true, 97 PrefRegistrySyncable::UNSYNCABLE_PREF); 98 registry->RegisterBooleanPref(prefs::kEnableTranslate, 99 true, 100 PrefRegistrySyncable::SYNCABLE_PREF); 101 registry->RegisterStringPref(prefs::kCloudPrintEmail, 102 std::string(), 103 PrefRegistrySyncable::UNSYNCABLE_PREF); 104 registry->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, 105 true, 106 PrefRegistrySyncable::UNSYNCABLE_PREF); 107 registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, 108 true, 109 PrefRegistrySyncable::UNSYNCABLE_PREF); 110 registry->RegisterBooleanPref(prefs::kDevToolsDisabled, 111 false, 112 PrefRegistrySyncable::UNSYNCABLE_PREF); 113 registry->RegisterIntegerPref(prefs::kDevToolsHSplitLocation, 114 -1, 115 PrefRegistrySyncable::UNSYNCABLE_PREF); 116 registry->RegisterIntegerPref(prefs::kDevToolsVSplitLocation, 117 -1, 118 PrefRegistrySyncable::UNSYNCABLE_PREF); 119 registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement, 120 PrefRegistrySyncable::UNSYNCABLE_PREF); 121 registry->RegisterDictionaryPref(prefs::kPreferencesWindowPlacement, 122 PrefRegistrySyncable::UNSYNCABLE_PREF); 123 registry->RegisterBooleanPref(prefs::kImportBookmarks, 124 true, 125 PrefRegistrySyncable::UNSYNCABLE_PREF); 126 registry->RegisterBooleanPref(prefs::kImportHistory, 127 true, 128 PrefRegistrySyncable::UNSYNCABLE_PREF); 129 registry->RegisterBooleanPref(prefs::kImportHomepage, 130 true, 131 PrefRegistrySyncable::UNSYNCABLE_PREF); 132 registry->RegisterBooleanPref(prefs::kImportSearchEngine, 133 true, 134 PrefRegistrySyncable::UNSYNCABLE_PREF); 135 registry->RegisterBooleanPref(prefs::kImportSavedPasswords, 136 true, 137 PrefRegistrySyncable::UNSYNCABLE_PREF); 138 registry->RegisterBooleanPref(prefs::kEnableDoNotTrack, 139 false, 140 PrefRegistrySyncable::SYNCABLE_PREF); 141 142 // Dictionaries to keep track of default tasks in the file browser. 143 registry->RegisterDictionaryPref(prefs::kDefaultTasksByMimeType, 144 PrefRegistrySyncable::SYNCABLE_PREF); 145 registry->RegisterDictionaryPref(prefs::kDefaultTasksBySuffix, 146 PrefRegistrySyncable::SYNCABLE_PREF); 147 148 // We need to register the type of these preferences in order to query 149 // them even though they're only typically controlled via policy. 150 registry->RegisterBooleanPref(prefs::kPluginsAllowOutdated, 151 false, 152 PrefRegistrySyncable::UNSYNCABLE_PREF); 153 registry->RegisterBooleanPref(prefs::kPluginsAlwaysAuthorize, 154 false, 155 PrefRegistrySyncable::UNSYNCABLE_PREF); 156 registry->RegisterBooleanPref(prefs::kClearPluginLSODataEnabled, 157 true, 158 PrefRegistrySyncable::UNSYNCABLE_PREF); 159 registry->RegisterBooleanPref(prefs::kHideWebStoreIcon, 160 false, 161 PrefRegistrySyncable::UNSYNCABLE_PREF); 162} 163 164void RegisterAppPrefs(const std::string& app_name, Profile* profile) { 165 // We need to register the window position pref. 166 // 167 // TODO(mnissler): Use a separate pref name pointing to a single 168 // dictionary instead. Also tracked as http://crbug.com/167256 169 std::string window_pref(prefs::kBrowserWindowPlacement); 170 window_pref.append("_"); 171 window_pref.append(app_name); 172 PrefService* prefs = profile->GetPrefs(); 173 if (!prefs->FindPreference(window_pref.c_str())) { 174 // TODO(joi): Do all registration up front. 175 scoped_refptr<PrefRegistrySyncable> registry( 176 static_cast<PrefRegistrySyncable*>(prefs->DeprecatedGetPrefRegistry())); 177 registry->RegisterDictionaryPref(window_pref.c_str(), 178 PrefRegistrySyncable::UNSYNCABLE_PREF); 179 } 180} 181 182 183} // namespace chrome 184