blob: cae2a2a702c28b58c7ab11a2491e04fa98e3754c [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/browser_ui_prefs.h"
#include "build/build_config.h"
#include "chrome/browser/first_run/first_run.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/pref_names.h"
#include "components/browsing_data/core/pref_names.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/scoped_user_pref_update.h"
#include "components/translate/core/common/translate_pref_names.h"
#include "content/public/common/webrtc_ip_handling_policy.h"
#if defined(OS_WIN)
#include "base/win/windows_version.h"
#endif
namespace {
uint32_t GetHomeButtonAndHomePageIsNewTabPageFlags() {
#if defined(OS_IOS) || defined(OS_ANDROID)
return PrefRegistry::NO_REGISTRATION_FLAGS;
#else
return user_prefs::PrefRegistrySyncable::SYNCABLE_PREF;
#endif
}
} // namespace
namespace chrome {
void RegisterBrowserPrefs(PrefRegistrySimple* registry) {
registry->RegisterIntegerPref(prefs::kOptionsWindowLastTabIndex, 0);
registry->RegisterBooleanPref(prefs::kAllowFileSelectionDialogs, true);
registry->RegisterIntegerPref(prefs::kShowFirstRunBubbleOption,
first_run::FIRST_RUN_BUBBLE_DONT_SHOW);
}
void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
registry->RegisterBooleanPref(
prefs::kHomePageIsNewTabPage,
true,
GetHomeButtonAndHomePageIsNewTabPageFlags());
registry->RegisterBooleanPref(prefs::kShowHomeButton, false,
GetHomeButtonAndHomePageIsNewTabPageFlags());
registry->RegisterBooleanPref(
browsing_data::prefs::kDeleteBrowsingHistory, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
browsing_data::prefs::kDeleteDownloadHistory, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
browsing_data::prefs::kDeleteCache, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
browsing_data::prefs::kDeleteCookies, true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
browsing_data::prefs::kDeletePasswords, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
browsing_data::prefs::kDeleteFormData, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
browsing_data::prefs::kDeleteHostedAppsData, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
browsing_data::prefs::kDeleteMediaLicenses, false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterIntegerPref(
browsing_data::prefs::kDeleteTimePeriod, 0,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterIntegerPref(
prefs::kClearBrowsingDataHistoryNoticeShownTimes, 0);
registry->RegisterInt64Pref(prefs::kLastClearBrowsingDataTime, 0);
registry->RegisterIntegerPref(prefs::kModuleConflictBubbleShown, 0);
registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0);
bool reset_check_default = false;
#if defined(OS_WIN)
reset_check_default = base::win::GetVersion() >= base::win::VERSION_WIN10;
#endif
registry->RegisterBooleanPref(prefs::kResetCheckDefaultBrowser,
reset_check_default);
registry->RegisterBooleanPref(prefs::kWebAppCreateOnDesktop, true);
registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
registry->RegisterBooleanPref(
prefs::kEnableTranslate,
true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterStringPref(prefs::kCloudPrintEmail, std::string());
registry->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, true);
registry->RegisterBooleanPref(prefs::kCloudPrintSubmitEnabled, true);
registry->RegisterBooleanPref(prefs::kDevToolsDisabled, false);
registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement);
registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacementPopup);
registry->RegisterDictionaryPref(prefs::kAppWindowPlacement);
registry->RegisterBooleanPref(prefs::kImportAutofillFormData, true);
registry->RegisterBooleanPref(prefs::kImportBookmarks, true);
registry->RegisterBooleanPref(prefs::kImportHistory, true);
registry->RegisterBooleanPref(prefs::kImportHomepage, true);
registry->RegisterBooleanPref(prefs::kImportSavedPasswords, true);
registry->RegisterBooleanPref(prefs::kImportSearchEngine, true);
registry->RegisterBooleanPref(
prefs::kEnableDoNotTrack,
false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
#if defined(ENABLE_WEBRTC)
// TODO(guoweis): Remove next 2 options at M50.
registry->RegisterBooleanPref(prefs::kWebRTCMultipleRoutesEnabled, true);
registry->RegisterBooleanPref(prefs::kWebRTCNonProxiedUdpEnabled, true);
registry->RegisterStringPref(prefs::kWebRTCIPHandlingPolicy,
content::kWebRTCIPHandlingDefault);
registry->RegisterStringPref(prefs::kWebRTCUDPPortRange, std::string());
#endif
// Dictionaries to keep track of default tasks in the file browser.
registry->RegisterDictionaryPref(
prefs::kDefaultTasksByMimeType,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterDictionaryPref(
prefs::kDefaultTasksBySuffix,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
// We need to register the type of these preferences in order to query
// them even though they're only typically controlled via policy.
registry->RegisterBooleanPref(prefs::kPluginsAllowOutdated, false);
registry->RegisterBooleanPref(prefs::kPluginsAlwaysAuthorize, false);
registry->RegisterBooleanPref(prefs::kClearPluginLSODataEnabled, true);
registry->RegisterBooleanPref(prefs::kHideWebStoreIcon, false);
#if defined(OS_MACOSX)
// This really belongs in platform code, but there's no good place to
// initialize it between the time when the AppController is created
// (where there's no profile) and the time the controller gets another
// crack at the start of the main event loop. By that time,
// StartupBrowserCreator has already created the browser window, and it's too
// late: we need the pref to be already initialized. Doing it here also saves
// us from having to hard-code pref registration in the several unit tests
// that use this preference.
registry->RegisterBooleanPref(prefs::kShowUpdatePromotionInfoBar, true);
registry->RegisterBooleanPref(
prefs::kShowFullscreenToolbar,
true,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterBooleanPref(
prefs::kHideFullscreenToolbar,
false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
#else
registry->RegisterBooleanPref(prefs::kFullscreenAllowed, true);
#endif
}
} // namespace chrome