1// Copyright (c) 2012 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/browser_ui_prefs.h" 6 7#include "base/prefs/pref_registry_simple.h" 8#include "base/prefs/pref_service.h" 9#include "chrome/browser/first_run/first_run.h" 10#include "chrome/browser/profiles/profile.h" 11#include "chrome/common/pref_names.h" 12#include "components/user_prefs/pref_registry_syncable.h" 13 14namespace chrome { 15 16void RegisterBrowserPrefs(PrefRegistrySimple* registry) { 17 registry->RegisterIntegerPref(prefs::kOptionsWindowLastTabIndex, 0); 18 registry->RegisterBooleanPref(prefs::kAllowFileSelectionDialogs, true); 19 registry->RegisterIntegerPref(prefs::kShowFirstRunBubbleOption, 20 first_run::FIRST_RUN_BUBBLE_DONT_SHOW); 21} 22 23void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { 24 registry->RegisterBooleanPref( 25 prefs::kHomePageIsNewTabPage, 26 true, 27 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 28 registry->RegisterBooleanPref( 29 prefs::kShowHomeButton, 30 false, 31 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 32#if defined(OS_MACOSX) 33 // This really belongs in platform code, but there's no good place to 34 // initialize it between the time when the AppController is created 35 // (where there's no profile) and the time the controller gets another 36 // crack at the start of the main event loop. By that time, 37 // StartupBrowserCreator has already created the browser window, and it's too 38 // late: we need the pref to be already initialized. Doing it here also saves 39 // us from having to hard-code pref registration in the several unit tests 40 // that use this preference. 41 registry->RegisterBooleanPref( 42 prefs::kShowUpdatePromotionInfoBar, 43 true, 44 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 45#endif 46 registry->RegisterBooleanPref( 47 prefs::kDeleteBrowsingHistory, 48 true, 49 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 50 registry->RegisterBooleanPref( 51 prefs::kDeleteDownloadHistory, 52 true, 53 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 54 registry->RegisterBooleanPref( 55 prefs::kDeleteCache, 56 true, 57 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 58 registry->RegisterBooleanPref( 59 prefs::kDeleteCookies, 60 true, 61 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 62 registry->RegisterBooleanPref( 63 prefs::kDeletePasswords, 64 false, 65 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 66 registry->RegisterBooleanPref( 67 prefs::kDeleteFormData, 68 false, 69 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 70 registry->RegisterBooleanPref( 71 prefs::kDeleteHostedAppsData, 72 false, 73 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 74 registry->RegisterIntegerPref( 75 prefs::kDeleteTimePeriod, 76 0, 77 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 78 registry->RegisterInt64Pref( 79 prefs::kLastClearBrowsingDataTime, 80 0, 81 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 82 registry->RegisterIntegerPref(prefs::kModuleConflictBubbleShown, 83 0, 84 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 85 registry->RegisterBooleanPref( 86 prefs::kCheckDefaultBrowser, 87 true, 88 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 89#if defined(OS_WIN) 90 // As with Mac-spacific code above, it should be in a platform-specific 91 // section somewhere, but there is no good place for it. 92 registry->RegisterBooleanPref( 93 prefs::kSuppressSwitchToMetroModeOnSetDefault, 94 false, 95 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 96#endif 97 registry->RegisterBooleanPref( 98 prefs::kWebAppCreateOnDesktop, 99 true, 100 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 101 registry->RegisterBooleanPref( 102 prefs::kWebAppCreateInAppsMenu, 103 true, 104 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 105 registry->RegisterBooleanPref( 106 prefs::kWebAppCreateInQuickLaunchBar, 107 true, 108 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 109 registry->RegisterBooleanPref( 110 prefs::kEnableTranslate, 111 true, 112 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 113 registry->RegisterStringPref( 114 prefs::kCloudPrintEmail, 115 std::string(), 116 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 117 registry->RegisterBooleanPref( 118 prefs::kCloudPrintProxyEnabled, 119 true, 120 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 121 registry->RegisterBooleanPref( 122 prefs::kCloudPrintSubmitEnabled, 123 true, 124 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 125 registry->RegisterBooleanPref( 126 prefs::kDevToolsDisabled, 127 false, 128 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 129 registry->RegisterIntegerPref( 130 prefs::kDevToolsHSplitLocation, 131 -1, 132 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 133 registry->RegisterIntegerPref( 134 prefs::kDevToolsVSplitLocation, 135 -1, 136 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 137 registry->RegisterDictionaryPref( 138 prefs::kBrowserWindowPlacement, 139 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 140 registry->RegisterDictionaryPref( 141 prefs::kPreferencesWindowPlacement, 142 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 143 registry->RegisterBooleanPref( 144 prefs::kImportBookmarks, 145 true, 146 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 147 registry->RegisterBooleanPref( 148 prefs::kImportHistory, 149 true, 150 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 151 registry->RegisterBooleanPref( 152 prefs::kImportHomepage, 153 true, 154 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 155 registry->RegisterBooleanPref( 156 prefs::kImportSearchEngine, 157 true, 158 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 159 registry->RegisterBooleanPref( 160 prefs::kImportSavedPasswords, 161 true, 162 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 163 registry->RegisterBooleanPref( 164 prefs::kEnableDoNotTrack, 165 false, 166 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 167 168 // Dictionaries to keep track of default tasks in the file browser. 169 registry->RegisterDictionaryPref( 170 prefs::kDefaultTasksByMimeType, 171 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 172 registry->RegisterDictionaryPref( 173 prefs::kDefaultTasksBySuffix, 174 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 175 176 // We need to register the type of these preferences in order to query 177 // them even though they're only typically controlled via policy. 178 registry->RegisterBooleanPref( 179 prefs::kPluginsAllowOutdated, 180 false, 181 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 182 registry->RegisterBooleanPref( 183 prefs::kPluginsAlwaysAuthorize, 184 false, 185 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 186 registry->RegisterBooleanPref( 187 prefs::kClearPluginLSODataEnabled, 188 true, 189 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 190 registry->RegisterBooleanPref( 191 prefs::kHideWebStoreIcon, 192 false, 193 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 194#if !defined(OS_MACOSX) 195 registry->RegisterBooleanPref( 196 prefs::kFullscreenAllowed, 197 true, 198 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 199#endif 200} 201 202void RegisterAppPrefs(const std::string& app_name, Profile* profile) { 203 // We need to register the window position pref. 204 // 205 // TODO(mnissler): Use a separate pref name pointing to a single 206 // dictionary instead. Also tracked as http://crbug.com/167256 207 std::string window_pref(prefs::kBrowserWindowPlacement); 208 window_pref.append("_"); 209 window_pref.append(app_name); 210 PrefService* prefs = profile->GetPrefs(); 211 if (!prefs->FindPreference(window_pref.c_str())) { 212 // TODO(joi): Do all registration up front. 213 scoped_refptr<user_prefs::PrefRegistrySyncable> registry( 214 static_cast<user_prefs::PrefRegistrySyncable*>( 215 prefs->DeprecatedGetPrefRegistry())); 216 registry->RegisterDictionaryPref( 217 window_pref.c_str(), user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 218 } 219} 220 221 222} // namespace chrome 223