1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256
|
// Copyright 2018 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_NTP_FEATURES_H_
#define COMPONENTS_SEARCH_NTP_FEATURES_H_
#include <string>
#include <vector>
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
namespace base {
class TimeDelta;
} // namespace base
namespace ntp_features {
// The features should be documented alongside the definition of their values in
// the .cc file.
BASE_DECLARE_FEATURE(kConfirmSuggestionRemovals);
BASE_DECLARE_FEATURE(kCustomizeChromeSidePanelExtensionsCard);
BASE_DECLARE_FEATURE(kCustomizeChromeWallpaperSearch);
BASE_DECLARE_FEATURE(kCustomizeChromeWallpaperSearchButton);
BASE_DECLARE_FEATURE(kCustomizeChromeWallpaperSearchInspirationCard);
BASE_DECLARE_FEATURE(kRealboxCr23Theming);
BASE_DECLARE_FEATURE(kRealboxMatchOmniboxTheme);
BASE_DECLARE_FEATURE(kRealboxMatchSearchboxTheme);
BASE_DECLARE_FEATURE(kRealboxUseGoogleGIcon);
BASE_DECLARE_FEATURE(kNtpAlphaBackgroundCollections);
BASE_DECLARE_FEATURE(kNtpBackgroundImageErrorDetection);
BASE_DECLARE_FEATURE(kNtpCalendarModule);
BASE_DECLARE_FEATURE(kNtpChromeCartModule);
BASE_DECLARE_FEATURE(kNtpDriveModule);
BASE_DECLARE_FEATURE(kNtpDriveModuleNoSyncRequirement);
BASE_DECLARE_FEATURE(kNtpDriveModuleSegmentation);
BASE_DECLARE_FEATURE(kNtpDriveModuleShowSixFiles);
#if !defined(OFFICIAL_BUILD)
BASE_DECLARE_FEATURE(kNtpDummyModules);
#endif
BASE_DECLARE_FEATURE(kNtpComprehensiveTheming);
BASE_DECLARE_FEATURE(kNtpLogo);
BASE_DECLARE_FEATURE(kNtpMiddleSlotPromo);
BASE_DECLARE_FEATURE(kNtpMiddleSlotPromoDismissal);
BASE_DECLARE_FEATURE(kNtpModulesLoadTimeoutMilliseconds);
BASE_DECLARE_FEATURE(kNtpModulesOrder);
BASE_DECLARE_FEATURE(kNtpModulesDragAndDrop);
BASE_DECLARE_FEATURE(kNtpModulesLoad);
BASE_DECLARE_FEATURE(kNtpModuleSignInRequirement);
BASE_DECLARE_FEATURE(kNtpOutlookCalendarModule);
BASE_DECLARE_FEATURE(kNtpPhotosModule);
BASE_DECLARE_FEATURE(kNtpPhotosModuleSoftOptOut);
BASE_DECLARE_FEATURE(kNtpPhotosModuleCustomizedOptInTitle);
BASE_DECLARE_FEATURE(kNtpPhotosModuleCustomizedOptInArtWork);
BASE_DECLARE_FEATURE(kNtpPhotosModuleSplitSvgOptInArtWork);
BASE_DECLARE_FEATURE(kNtpFeedModule);
BASE_DECLARE_FEATURE(kNtpOneGoogleBar);
BASE_DECLARE_FEATURE(kNtpSafeBrowsingModule);
BASE_DECLARE_FEATURE(kNtpSharepointModule);
enum class NtpSharepointModuleDataType {
kTrendingInsights,
kNonInsights,
kTrendingInsightsFakeData,
kNonInsightsFakeData,
kCombinedSuggestions,
};
BASE_DECLARE_FEATURE(kNtpShortcuts);
BASE_DECLARE_FEATURE(kNtpHandleMostVisitedNavigationExplicitly);
BASE_DECLARE_FEATURE(kNtpMostRelevantTabResumptionModule);
BASE_DECLARE_FEATURE(kNtpMostRelevantTabResumptionAllowFaviconServerFallback);
BASE_DECLARE_FEATURE(kNtpMostRelevantTabResumptionModuleFallbackToHost);
BASE_DECLARE_FEATURE(kNtpTabResumptionModuleCategories);
BASE_DECLARE_FEATURE(kNtpTabResumptionModuleTimeLimit);
BASE_DECLARE_FEATURE(kNtpWallpaperSearchButton);
BASE_DECLARE_FEATURE(kNtpWallpaperSearchButtonAnimation);
BASE_DECLARE_FEATURE(kNtpWallpaperSearchButtonAnimationShownThreshold);
BASE_DECLARE_FEATURE(kNtpMobilePromo);
BASE_DECLARE_FEATURE(kNtpMicrosoftAuthenticationModule);
BASE_DECLARE_FEATURE(kNtpOneGoogleBarAsyncBarParts);
BASE_DECLARE_FEATURE(kNtpFooter);
// Parameter for controlling the luminosity difference for NTP elements on light
// backgrounds.
extern const base::FeatureParam<double>
kNtpElementLuminosityChangeForLightBackgroundParam;
// Parameter for controlling the luminosity difference for NTP elements on dark
// backgrounds.
extern const base::FeatureParam<double>
kNtpElementLuminosityChangeForDarkBackgroundParam;
// Parameter determining the ignore based survey launch delay time.
extern const char kNtpModuleIgnoredHaTSDelayTimeParam[];
// Parameter determining the number of times a module must have loaded with no
// interaction by the user before it's considered as ignored.
extern const char kNtpModuleIgnoredCriteriaThreshold[];
// Parameter determining the module load timeout.
extern const char kNtpModulesLoadTimeoutMillisecondsParam[];
// Parameter determining the module order.
extern const char kNtpModulesOrderParam[];
// Parameter determining the type of calendar data used to render module.
extern const char kNtpCalendarModuleDataParam[];
// Parameter determining the type of cart data used to render module.
extern const char kNtpChromeCartModuleDataParam[];
// Parameter for enabling the abandoned cart discount.
extern const char kNtpChromeCartModuleAbandonedCartDiscountParam[];
// Parameter for enabling the abandoned cart discount with utm_source tag to
// indicate the feature state.
extern const char kNtpChromeCartModuleAbandonedCartDiscountUseUtmParam[];
// Parameter for enabling the cart heuristics improvement.
extern const char kNtpChromeCartModuleHeuristicsImprovementParam[];
// Parameter for enabling coupons on the Cart module.
extern const char kNtpChromeCartModuleCouponParam[];
// Parameter determining the type of Drive data to render.
extern const char kNtpDriveModuleDataParam[];
// Parameter for enabling the Drive module for managed users only.
extern const char kNtpDriveModuleManagedUsersOnlyParam[];
// Parameter determining the max age in seconds of the cache for drive data.
extern const char kNtpDriveModuleCacheMaxAgeSParam[];
// Parameter for communicating the experiment group of the Drive module
// experiment.
extern const char kNtpDriveModuleExperimentGroupParam[];
// Parameter determining the type of calendar data to render.
extern const char kNtpOutlookCalendarModuleDataParam[];
// Parameter determining the type of middle slot promo data to render.
extern const char kNtpMiddleSlotPromoDismissalParam[];
// Parameter determining the modules that are eligigle for HaTS.
extern const char kNtpModulesEligibleForHappinessTrackingSurveyParam[];
// Parameter determining module trigger ids for HaTS for eligible module ids for
// a given module interaction type.
extern const char kNtpModulesInteractionBasedSurveyEligibleIdsParam[];
// Parameter determining the type of Photos data to render.
extern const char kNtpPhotosModuleDataParam[];
// Parameter determining the art work in opt-in card.
extern const char kNtpPhotosModuleOptInArtWorkParam[];
// Parameter determining the title for the opt-in card.
extern const char kNtpPhotosModuleOptInTitleParam[];
// Parameter determining the number of times a module is shown to a user
// before cooldown starts.
extern const char kNtpSafeBrowsingModuleCountMaxParam[];
// Parameter determining the cooldown period (in days) for a target user.
extern const char kNtpSafeBrowsingModuleCooldownPeriodDaysParam[];
// Parameter determining the variation of the omnibox theme matching.
extern const char kRealboxMatchOmniboxThemeVariantParam[];
extern const char kNtpMostRelevantTabResumptionModuleDataParam[];
// Parameter determining the max visits to show.
extern const char kNtpMostRelevantTabResumptionModuleMaxVisitsParam[];
extern const char kNtpRealboxWidthBehaviorParam[];
// Parameter for determining the categories a tab must not fall into
// to be shown.
extern const char kNtpTabResumptionModuleCategoriesBlocklistParam[];
extern const char kNtpTabResumptionModuleDataParam[];
// Parameter determining for how long a dismissed tab should be discarded
// from the module's displayed visit resumption suggestions.
extern const char kNtpTabResumptionModuleDismissalDurationParam[];
// Parameter determining what types result types to request when fetching URL
// visit aggregate data.
extern const char kNtpTabResumptionModuleResultTypesParam[];
// Parameter determining the recency of tabs in the Tab Resumption module.
extern const char kNtpTabResumptionModuleTimeLimitParam[];
extern const char kNtpTabResumptionModuleVisibilityThresholdDataParam[];
// Parameter determining the number of times to animate the NTP Wallpaper Search
// button.
extern const char kNtpWallpaperSearchButtonAnimationShownThresholdParam[];
// Parameter determining what condition to use to hide the wallpaper search
// button.
extern const char kNtpWallpaperSearchButtonHideConditionParam[];
// Parameter determining the trigger delay of the Wallpaper Search HaTS survey.
extern const char kWallpaperSearchHatsDelayParam[];
// Parameter determining the target url to go to from the Ntp Mobile Promo.
extern const char kNtpMobilePromoTargetUrlParam[];
// Parameter determining the experiment name to pass to the Google Calendar
// API.
extern const base::FeatureParam<std::string> kNtpCalendarModuleExperimentParam;
// Parameter determining the number of events to show on the calendar module.
extern const base::FeatureParam<int> kNtpCalendarModuleMaxEventsParam;
// Parameter determining the time delta from now for the end of the event
// window.
extern const base::FeatureParam<base::TimeDelta>
kNtpCalendarModuleWindowEndDeltaParam;
// Parameter determining the time delta from now for the start of the event
// window.
extern const base::FeatureParam<base::TimeDelta>
kNtpCalendarModuleWindowStartDeltaParam;
// Parameter determining whether the existence of Outlook attachment pages
// should be checked.
extern const base::FeatureParam<bool>
kNtpOutlookCalendarModuleAttachmentCheckParam;
// Parameter determining whether attachments should be disabled.
extern const base::FeatureParam<bool>
kNtpOutlookCalendarModuleDisableAttachmentsParam;
// Parameter determining the max number of events to display on the Outlook
// Calendar module.
extern const base::FeatureParam<int> kNtpOutlookCalendarModuleMaxEventsParam;
// Parameter determining the time range of events.
extern const base::FeatureParam<base::TimeDelta>
kNtpOutlookCalendarModuleRetrievalWindowParam;
// Parameter determining the background color of the expanded state realbox.
extern const base::FeatureParam<bool>
kNtpRealboxCr23ExpandedStateBgMatchesOmnibox;
// Parameter determining the whether the steady state realbox has a shadow.
extern const base::FeatureParam<bool> kNtpRealboxCr23SteadyStateShadow;
// Parameter determining the impression limit for the NTP mobile promo. The
// promo will not be shown again after the impression limit is reached.
extern const base::FeatureParam<int> kNtpMobilePromoImpressionLimit;
// Parameter determining the type of data to render.
extern const base::FeatureParam<NtpSharepointModuleDataType>
kNtpSharepointModuleDataParam;
// Parameter determining the max number of files to display on the Microsoft
// files module.
extern const base::FeatureParam<int> kNtpMicrosoftFilesModuleMaxFilesParam;
// Parameter determining the max number of trending files to display on the
// Microsoft files module. Used only for the
// `NtpSharepointModuleDataType::kCombinedSuggestions` variation.
extern const base::FeatureParam<int>
kNtpMicrosoftFilesModuleMaxTrendingFilesForCombinedParam;
// Parameter determining the max number of used and shared files to display on
// the Microsoft files module. Used only for the
// `NtpSharepointModuleDataType::kCombinedSuggestions` variation.
extern const base::FeatureParam<int>
kNtpMicrosoftFilesModuleMaxNonInsightsFilesForCombinedParam;
// Parameter determining whether the tab resumption module should filter visits
// that are associated with local tabs.
extern const base::FeatureParam<bool>
kNtpMostRelevantTabResumptionModuleFilterLocalTabsParam;
// Returns the timeout after which the load of a module should be aborted.
base::TimeDelta GetModulesLoadTimeout();
// Returns the maximum number of columns to show on the redesigned modules UI
// experience.
int GetModulesMaxColumnCount();
// Returns the maximum number of instances to render for a given module when the
// module has loaded with other modules. A sentinel value of -1 implies there is
// no limit.
int GetMultipleLoadedModulesMaxModuleInstanceCount();
// Returns a list of module IDs ordered by how they should appear on the NTP.
std::vector<std::string> GetModulesOrder();
// Returns the maximum number of times to show animation for NTP wallpaper
// search button.
int GetWallpaperSearchButtonAnimationShownThreshold();
// Returns the condition to use to hide the wallpaper search button.
int GetWallpaperSearchButtonHideCondition();
std::string GetMobilePromoTargetURL();
} // namespace ntp_features
#endif // COMPONENTS_SEARCH_NTP_FEATURES_H_
|