browser_ui_prefs.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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 "chrome/browser/prefs/pref_service.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RegisterBrowserPrefs(PrefService* prefs) { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterIntegerPref(prefs::kOptionsWindowLastTabIndex, 0); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kAllowFileSelectionDialogs, true); 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kShouldShowFirstRunBubble, false); 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RegisterBrowserUserPrefs(PrefService* prefs) { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kHomePageChanged, 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kHomePageIsNewTabPage, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kShowHomeButton, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterIntegerPref(prefs::kExtensionsSideloadWipeoutBubbleShown, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This really belongs in platform code, but there's no good place to 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // initialize it between the time when the AppController is created 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // (where there's no profile) and the time the controller gets another 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // crack at the start of the main event loop. By that time, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // StartupBrowserCreator has already created the browser window, and it's too 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // late: we need the pref to be already initialized. Doing it here also saves 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // us from having to hard-code pref registration in the several unit tests 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // that use this preference. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kShowUpdatePromotionInfoBar, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kDeleteBrowsingHistory, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kDeleteDownloadHistory, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kDeleteCache, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kDeleteCookies, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kDeletePasswords, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kDeleteFormData, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kDeleteHostedAppsData, 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterIntegerPref(prefs::kDeleteTimePeriod, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kCheckDefaultBrowser, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // As with Mac-spacific code above, it should be in a platform-specific 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // section somewhere, but there is no good place for it. 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kSuppressSwitchToMetroModeOnSetDefault, 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kShowOmniboxSearchHint, 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kEnableTranslate, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterStringPref(prefs::kCloudPrintEmail, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string(), 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kDevToolsDisabled, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterIntegerPref(prefs::kDevToolsHSplitLocation, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterIntegerPref(prefs::kDevToolsVSplitLocation, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) -1, 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterDictionaryPref(prefs::kBrowserWindowPlacement, 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterDictionaryPref(prefs::kPreferencesWindowPlacement, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kImportBookmarks, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kImportHistory, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kImportHomepage, 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kImportSearchEngine, 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kImportSavedPasswords, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kEnableDoNotTrack, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Dictionaries to keep track of default tasks in the file browser. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterDictionaryPref(prefs::kDefaultTasksByMimeType, 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterDictionaryPref(prefs::kDefaultTasksBySuffix, 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::SYNCABLE_PREF); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We need to register the type of these preferences in order to query 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // them even though they're only typically controlled via policy. 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kPluginsAllowOutdated, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kPluginsAlwaysAuthorize, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false, 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterBooleanPref(prefs::kClearPluginLSODataEnabled, 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) true, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RegisterAppPrefs(const std::string& app_name, Profile* profile) { 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We need to register the window position pref. 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string window_pref(prefs::kBrowserWindowPlacement); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) window_pref.append("_"); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) window_pref.append(app_name); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs = profile->GetPrefs(); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!prefs->FindPreference(window_pref.c_str())) { 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs->RegisterDictionaryPref(window_pref.c_str(), 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService::UNSYNCABLE_PREF); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chrome 168