blob: c9e511dcbe724bf1e002eeabe51b3b59b6779e90 [file] [log] [blame]
// 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_FEED_FEED_FEATURE_LIST_H_
#define COMPONENTS_FEED_FEED_FEATURE_LIST_H_
#include <string>
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "components/signin/public/base/consent_level.h"
// TODO(crbug.com/40741748): Clean up feedv1 features.
namespace feed {
BASE_DECLARE_FEATURE(kInterestFeedV2);
BASE_DECLARE_FEATURE(kInterestFeedV2Hearts);
BASE_DECLARE_FEATURE(kInterestFeedV2Scrolling);
// Feature that allows the client to automatically dismiss the notice card based
// on the clicks and views on the notice card.
#if BUILDFLAG(IS_IOS)
BASE_DECLARE_FEATURE(kInterestFeedNoticeCardAutoDismiss);
#endif
// Use the new DiscoFeed endpoint.
BASE_DECLARE_FEATURE(kDiscoFeedEndpoint);
// Feature that enables xsurface to provide the metrics reporting state to an
// xsurface feed.
BASE_DECLARE_FEATURE(kXsurfaceMetricsReporting);
// Feature that shows placeholder cards instead of a loading spinner at first
// load.
BASE_DECLARE_FEATURE(kFeedLoadingPlaceholder);
// Feature that allows tuning the size of the image memory cache. Value is a
// percentage of the maximum size calculated for the device.
BASE_DECLARE_FEATURE(kFeedImageMemoryCacheSizePercentage);
#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
// When enabled, causes the server to restrig the Sync Promo Banner for the
// bottom of Feed to a Signin Promo.
BASE_DECLARE_FEATURE(kFeedBottomSyncStringRemoval);
#endif
// Feature that enables StAMP cards in the feed.
BASE_DECLARE_FEATURE(kFeedStamp);
// Feature that provides the user assistance in discovering the web feed.
BASE_DECLARE_FEATURE(kWebFeedAwareness);
// Feature that provides the user assistance in using the web feed.
BASE_DECLARE_FEATURE(kWebFeedOnboarding);
// Feature that enables sorting by different heuristics in the web feed.
BASE_DECLARE_FEATURE(kWebFeedSort);
// Feature that causes the "open in new tab" menu item to appear on feed items
// on Start Surface.
BASE_DECLARE_FEATURE(kEnableOpenInNewTabFromStartSurfaceFeed);
bool IsCormorantEnabledForLocale(std::string country);
// Personalize feed for unsigned users.
BASE_DECLARE_FEATURE(kPersonalizeFeedUnsignedUsers);
// Returns the consent level needed to request a personalized feed.
signin::ConsentLevel GetConsentLevelNeededForPersonalizedFeed();
// Feature that enables tracking the acknowledgement state for the info cards.
BASE_DECLARE_FEATURE(kInfoCardAcknowledgementTracking);
// When enabled, schedule a background refresh for a feed sometime after the
// last user engagement with that feed.
BASE_DECLARE_FEATURE(kFeedCloseRefresh);
// On each qualifying user engagement, schedule a background refresh this many
// minutes out.
extern const base::FeatureParam<int> kFeedCloseRefreshDelayMinutes;
// If true, schedule the refresh only when the user scrolls or interacts. If
// false, schedule only when the feed surface is opened to content.
extern const base::FeatureParam<bool> kFeedCloseRefreshRequireInteraction;
// When enabled, no view cache is used.
BASE_DECLARE_FEATURE(kFeedNoViewCache);
// When enabled, allow tagging experiments with only an experiment ID.
BASE_DECLARE_FEATURE(kFeedExperimentIDTagging);
// When enabled, allow show sign in command to request a user signs in / syncs.
BASE_DECLARE_FEATURE(kFeedShowSignInCommand);
// When enabled, depending on params selected, enable different
// performance-oriented features in Feed.
BASE_DECLARE_FEATURE(kFeedPerformanceStudy);
// When enabled, allows the server to unilaterally alter capabilities sent
// by the client, primarily to retroactively work around bugs.
BASE_DECLARE_FEATURE(kSyntheticCapabilities);
// Feature that enables reporting feed user interaction reliability.
BASE_DECLARE_FEATURE(kFeedUserInteractionReliabilityReport);
// Feature that enables signed-out view demotion.
BASE_DECLARE_FEATURE(kFeedSignedOutViewDemotion);
// Feature that enables dynamic colors in the feed.
BASE_DECLARE_FEATURE(kFeedDynamicColors);
// Feature that enables UI update for Follow.
BASE_DECLARE_FEATURE(kFeedFollowUiUpdate);
// Feature that enables sports card in the feed.
BASE_DECLARE_FEATURE(kFeedSportsCard);
// Feature that enables refreshing feed when Chrome restarts.
BASE_DECLARE_FEATURE(kRefreshFeedOnRestart);
// Feature that enables feed containment.
BASE_DECLARE_FEATURE(kFeedContainment);
bool IsWebFeedEnabledForLocale(const std::string& country);
} // namespace feed
#endif // COMPONENTS_FEED_FEED_FEATURE_LIST_H_