Add feature flag for StAMP and send the corresponding capabilities
when the feature is enabled.
Change-Id: I06b03df2d002f502319995dccf50dd6651c36389
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3134314
Reviewed-by: Dan H <[email protected]>
Commit-Queue: Jonathan Freed <[email protected]>
Cr-Commit-Position: refs/heads/main@{#918161}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 88430e2..9a9cbdd 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -4010,6 +4010,9 @@
{"feed-interactive-refresh", flag_descriptions::kFeedInteractiveRefreshName,
flag_descriptions::kFeedInteractiveRefreshDescription, kOsAndroid,
FEATURE_VALUE_TYPE(feed::kFeedInteractiveRefresh)},
+ {"feed-stamp", flag_descriptions::kFeedStampName,
+ flag_descriptions::kFeedStampDescription, kOsAndroid,
+ FEATURE_VALUE_TYPE(feed::kFeedStamp)},
{"feed-v2-hearts", flag_descriptions::kInterestFeedV2HeartsName,
flag_descriptions::kInterestFeedV2HeartsDescription, kOsAndroid,
FEATURE_VALUE_TYPE(feed::kInterestFeedV2Hearts)},
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index ab4ce74..88e2be76 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -3120,6 +3120,11 @@
"expiry_milestone": 95
},
{
+ "name": "feed-stamp",
+ "owners": [ "//chrome/android/feed/OWNERS", "[email protected]" ],
+ "expiry_milestone": 100
+ },
+ {
"name": "feed-v2-autoplay",
"owners": [ "//chrome/android/feed/OWNERS", "[email protected]" ],
"expiry_milestone": 97
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 5eca69a..d595dcf 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -3117,6 +3117,9 @@
const char kFeedInteractiveRefreshDescription[] =
"Enables refreshing feeds triggered by the users.";
+const char kFeedStampName[] = "StAMP cards in the feed";
+const char kFeedStampDescription[] = "Enables StAMP cards in the feed.";
+
const char kFillingPasswordsFromAnyOriginName[] =
"Filling passwords from any origin";
const char kFillingPasswordsFromAnyOriginDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index c4c9cc5..5b4ecaa 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1788,6 +1788,9 @@
extern const char kFeedInteractiveRefreshName[];
extern const char kFeedInteractiveRefreshDescription[];
+extern const char kFeedStampName[];
+extern const char kFeedStampDescription[];
+
extern const char kFillingPasswordsFromAnyOriginName[];
extern const char kFillingPasswordsFromAnyOriginDescription[];
diff --git a/components/feed/core/proto/v2/wire/capability.proto b/components/feed/core/proto/v2/wire/capability.proto
index 8e17cd2..3df0122 100644
--- a/components/feed/core/proto/v2/wire/capability.proto
+++ b/components/feed/core/proto/v2/wire/capability.proto
@@ -30,6 +30,9 @@
LOTTIE_ANIMATIONS = 37;
LONG_PRESS_CARD_MENU = 38;
PREFETCH_METADATA = 43;
+ SILK_AMP_OPEN_COMMAND = 44;
+ AMP_STORY_PLAYER = 47;
+ AMP_GROUP_DATASTORE = 48;
MATERIAL_NEXT_BASELINE = 60;
MATERIAL_NEXT_GOOGLE_SANS = 61;
CONTENT_LIFETIME = 64;
diff --git a/components/feed/core/v2/proto_util.cc b/components/feed/core/v2/proto_util.cc
index 8214d394..222714f3 100644
--- a/components/feed/core/v2/proto_util.cc
+++ b/components/feed/core/v2/proto_util.cc
@@ -144,6 +144,14 @@
feedwire::Capability::OPEN_VIDEO_COMMAND);
}
+ if (base::FeatureList::IsEnabled(kFeedStamp)) {
+ feed_request.add_client_capability(
+ feedwire::Capability::SILK_AMP_OPEN_COMMAND);
+ feed_request.add_client_capability(feedwire::Capability::AMP_STORY_PLAYER);
+ feed_request.add_client_capability(
+ feedwire::Capability::AMP_GROUP_DATASTORE);
+ }
+
*feed_request.mutable_client_info() = CreateClientInfo(request_metadata);
feedwire::FeedQuery& query = *feed_request.mutable_feed_query();
query.set_reason(request_reason);
diff --git a/components/feed/core/v2/proto_util_unittest.cc b/components/feed/core/v2/proto_util_unittest.cc
index 940992b..19fcd4a 100644
--- a/components/feed/core/v2/proto_util_unittest.cc
+++ b/components/feed/core/v2/proto_util_unittest.cc
@@ -168,5 +168,23 @@
testing::Contains(feedwire::Capability::OPEN_VIDEO_COMMAND));
}
+TEST(ProtoUtilTest, StampEnabled) {
+ base::test::ScopedFeatureList scoped_feature_list;
+ scoped_feature_list.InitWithFeatures({kFeedStamp}, {});
+ feedwire::FeedRequest request =
+ CreateFeedQueryRefreshRequest(kForYouStream,
+ feedwire::FeedQuery::MANUAL_REFRESH,
+ /*request_metadata=*/{},
+ /*consistency_token=*/std::string())
+ .feed_request();
+
+ ASSERT_THAT(request.client_capability(),
+ testing::Contains(feedwire::Capability::SILK_AMP_OPEN_COMMAND));
+ ASSERT_THAT(request.client_capability(),
+ testing::Contains(feedwire::Capability::AMP_STORY_PLAYER));
+ ASSERT_THAT(request.client_capability(),
+ testing::Contains(feedwire::Capability::AMP_GROUP_DATASTORE));
+}
+
} // namespace
} // namespace feed
diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc
index 374efcd4..609748e9 100644
--- a/components/feed/feed_feature_list.cc
+++ b/components/feed/feed_feature_list.cc
@@ -68,6 +68,7 @@
"FeedImageMemoryCacheSizePercentage", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kFeedBackToTop{"FeedBackToTop",
base::FEATURE_DISABLED_BY_DEFAULT};
+const base::Feature kFeedStamp{"FeedStamp", base::FEATURE_DISABLED_BY_DEFAULT};
const char kDefaultReferrerUrl[] = "https://www.google.com/";
diff --git a/components/feed/feed_feature_list.h b/components/feed/feed_feature_list.h
index 63fd2cc..9c7f19a 100644
--- a/components/feed/feed_feature_list.h
+++ b/components/feed/feed_feature_list.h
@@ -67,6 +67,9 @@
// feeds quickly.
extern const base::Feature kFeedBackToTop;
+// Feature that enables StAMP cards in the feed.
+extern const base::Feature kFeedStamp;
+
std::string GetFeedReferrerUrl();
} // namespace feed
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index b7fbf45..c3debe14 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -48788,6 +48788,7 @@
<int value="-777568290" label="FilesTransferDetails:disabled"/>
<int value="-777126951" label="FontSrcLocalMatching:enabled"/>
<int value="-776686417" label="SiteExplorationUi:disabled"/>
+ <int value="-775952696" label="FeedStamp:enabled"/>
<int value="-775321548" label="UseNewDoodleApi:disabled"/>
<int value="-773238824" label="AutoplayWhitelistSettings:disabled"/>
<int value="-772679248" label="MojoVideoEncodeAccelerator:enabled"/>
@@ -51745,6 +51746,7 @@
<int value="1597880096" label="FocusMode:disabled"/>
<int value="1600850069" label="MobileIdentityConsistency:disabled"/>
<int value="1600926040" label="TranslateCompactUI:enabled"/>
+ <int value="1601012975" label="FeedStamp:disabled"/>
<int value="1601231448" label="VirtualKeyboardMultipaste:disabled"/>
<int value="1601582484" label="enable-crash-reporter-for-testing"/>
<int value="1602627012" label="OverrideSitePrefsForHrefTranslate:enabled"/>