// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINES_PREF_NAMES_H_
#define COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINES_PREF_NAMES_H_

#include "build/build_config.h"

namespace prefs {

// The GUID of the locally saved default search provider. Note that this acts
// like a pointer to which synced search engine should be the default, rather
// than the prefs below which describe the locally saved default search provider
// details. This is ignored in the case of the default search provider being
// managed by policy.
inline constexpr char kDefaultSearchProviderGUID[] =
    "default_search_provider.guid";

// Epoch timestamp in seconds of when the user's search engine choice was
// invalidated.
// While Chrome is processing detected restored installs on a just-in-time
// basis, we use this pref to flag the detected installs and differentiate them
// from the ones we missed.
// TODO(crbug.com/434651685): Remove this pref and the associated code when we
// fully transition to retroactive detection.
inline constexpr char kDefaultSearchProviderChoiceInvalidationTimestamp[] =
    "default_search_provider.choice_invalidation_timestamp";

// Epoch timestamp in seconds of when the user chose a search engine in
// the choice screen.
// The timestamp and the version indicate that the user has already made a
// search engine choice in the choice screen or in settings.
inline constexpr char kDefaultSearchProviderChoiceScreenCompletionTimestamp[] =
    "default_search_provider.choice_screen_completion_timestamp";

// Version of Chrome when the user chose a search engine, in the format
// "6.0.490.1".
// The timestamp and the version indicate that the user has already made a
// search engine choice in the choice screen or in settings.
inline constexpr char kDefaultSearchProviderChoiceScreenCompletionVersion[] =
    "default_search_provider.choice_screen_completion_version";

// The regional program for which the user made a search engine choice.
// See `regional_capabilities::Program` for the format.
inline constexpr char kDefaultSearchProviderChoiceScreenCompletionProgram[] =
    "default_search_provider.choice_screen_completion_program";

// Prepopulated id of the search engine chosen in a guest session if the user
// decides to propagate the default search engine to all guest sessions. The
// prepopulated id indicates that the search engine choice dialog should not be
// displayed in the next guest sessions and should be used to set the guest
// sessions default search engine.
// Defaults to 0;
inline constexpr char kDefaultSearchProviderGuestModePrepopulatedId[] =
    "default_search_provider.guest_mode_prepopulated_id";

// Display state of the choice screen from which the user selected their
// default search engine. It is stored for logging purposes, only for a limited
// time, and cleared when that time runs out, or when we are able to report
// the choice screen display state.
// The preference is stored as a dictionary, see
// `ChoiceScreenDisplayState::FromDict()`.
inline constexpr char kDefaultSearchProviderPendingChoiceScreenDisplayState[] =
    "default_search_provider.pending_choice_screen_display_state";

// Random number to use as a profile-constant seed for the random shuffling of
// the choice screen elements.
inline constexpr char kDefaultSearchProviderChoiceScreenRandomShuffleSeed[] =
    "default_search_provider.choice_screen_random_shuffle_seed";

// Whether a search context menu item is allowed.
inline constexpr char kDefaultSearchProviderContextMenuAccessAllowed[] =
    "default_search_provider.context_menu_access_allowed";

// Whether having a default search provider is enabled.
inline constexpr char kDefaultSearchProviderEnabled[] =
    "default_search_provider.enabled";

// Tracks if a default search engine reset has occurred that the user hasn't
// been notified of. This is set to true when a reset occurs and false after the
// notification is shown.
inline constexpr char kUnacknowledgedDefaultSearchEngineResetOccurred[] =
    "default_search_provider.reset_occurred";

// The time the last mirror check based reset occurred.
inline constexpr char kDefaultSearchEngineMirrorCheckResetTimeStamp[] =
    "default_search_provider.reset_time";

// The time of the default search engine reset for which the last notification
// was shown.
inline constexpr char kResetTimeForLastShownNotification[] =
    "default_search_provider.notification_reset_time";

// The dictionary key used when the default search providers are given
// in the preferences file. Normally they are copied from the main
// preferences file.
inline constexpr char kSearchProviderOverrides[] = "search_provider_overrides";
// The format version for the dictionary above.
inline constexpr char kSearchProviderOverridesVersion[] =
    "search_provider_overrides_version";

// String that refers to the study group in which this install was enrolled.
// Used to implement the first run experiment tracking.
// NOTE: Unlike most of the other preferences here, this one is stored in the
// local state, not the profile prefs.
// TODO(b/313067383): Clean up experiment setup.
inline constexpr char kSearchEnginesStudyGroup[] =
    "search_engines.client_side_study_group";

#if BUILDFLAG(IS_IOS)
// Number of time the search engine choice screen was skipped because the app
// was started via an external intent.
inline constexpr char kDefaultSearchProviderChoiceScreenSkippedCount[] =
    "default_search_provider.skip_count";
#endif

}  // namespace prefs

#endif  // COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINES_PREF_NAMES_H_
