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