Skip to content

Commit

Permalink
[Bling Magic Stack] Adding ParcelTracking module for M118.
Browse files Browse the repository at this point in the history
(cherry picked from commit add41bc)

Change-Id: I74e519e3697ec8a7b368aa0d32b0dff050bbe1f1
Bug: 1479727, b/293190474
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4844812
Reviewed-by: Siddhartha S <ssid@chromium.org>
Reviewed-by: Chris Lu <thegreenfrog@chromium.org>
Commit-Queue: Ritika Gupta <ritikagup@google.com>
Cr-Original-Commit-Position: refs/heads/main@{#1193818}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4854592
Cr-Commit-Position: refs/branch-heads/5993@{#208}
Cr-Branched-From: 5113507-refs/heads/main@{#1192594}
  • Loading branch information
Ritika Gupta authored and Chromium LUCI CQ committed Sep 12, 2023
1 parent b2f557c commit d61c4b0
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 14 deletions.
Expand Up @@ -22,20 +22,21 @@ using proto::SegmentId;
// Default parameters for IosModuleRanker model.
constexpr SegmentId kSegmentId =
SegmentId::OPTIMIZATION_TARGET_SEGMENTATION_IOS_MODULE_RANKER;
constexpr int64_t kModelVersion = 2;
constexpr int64_t kModelVersion = 3;
// Store 28 buckets of input data (28 days).
constexpr int64_t kSignalStorageLength = 28;
// Wait until we have 0 days of data.
constexpr int64_t kMinSignalCollectionLength = 0;
// Refresh the result every time.
constexpr int64_t kResultTTLMinutes = 1;

constexpr std::array<const char*, 4> kIosModuleLabels = {
kMostVisitedTiles, kShortcuts, kSafetyCheck, kTabResumption};
constexpr std::array<const char*, 5> kIosModuleLabels = {
kMostVisitedTiles, kShortcuts, kSafetyCheck, kTabResumption,
kParcelTracking};

constexpr std::array<const char*, 4> kIosModuleInputContextKeys = {
constexpr std::array<const char*, 5> kIosModuleInputContextKeys = {
kMostVisitedTilesFreshness, kShortcutsFreshness, kSafetyCheckFreshness,
kTabResumptionFreshness};
kTabResumptionFreshness, kParcelTrackingFreshness};

// InputFeatures.

Expand All @@ -47,10 +48,12 @@ constexpr std::array<int32_t, 1> kEnumValueForShortcuts{/*Shortcuts=*/1};
constexpr std::array<int32_t, 1> kEnumValueForSafetyCheck{/*SafetyCheck=*/7};
constexpr std::array<int32_t, 1> kEnumValueForTabResumption{
/*TabResumption=*/8};
constexpr std::array<int32_t, 1> kEnumValueForParcelTracking{
/*ParcelTracking=*/9};

// TODO(ritikagup) : Loop through all the modules for these features for better
// readability. Set UMA metrics to use as input.
constexpr std::array<MetadataWriter::UMAFeature, 26> kUMAFeatures = {
constexpr std::array<MetadataWriter::UMAFeature, 30> kUMAFeatures = {
// Most Visited Tiles
// 0
MetadataWriter::UMAFeature::FromEnumHistogram("IOS.MagicStack.Module.Click",
Expand Down Expand Up @@ -191,6 +194,32 @@ constexpr std::array<MetadataWriter::UMAFeature, 26> kUMAFeatures = {
28,
kEnumValueForTabResumption.data(),
kEnumValueForTabResumption.size()),

// Parcel Tracking
// 26
MetadataWriter::UMAFeature::FromEnumHistogram(
"IOS.MagicStack.Module.Click",
7,
kEnumValueForParcelTracking.data(),
kEnumValueForParcelTracking.size()),
// 27
MetadataWriter::UMAFeature::FromEnumHistogram(
"IOS.MagicStack.Module.TopImpression",
7,
kEnumValueForParcelTracking.data(),
kEnumValueForParcelTracking.size()),
// 28
MetadataWriter::UMAFeature::FromEnumHistogram(
"IOS.MagicStack.Module.Click",
28,
kEnumValueForParcelTracking.data(),
kEnumValueForParcelTracking.size()),
// 29
MetadataWriter::UMAFeature::FromEnumHistogram(
"IOS.MagicStack.Module.TopImpression",
28,
kEnumValueForParcelTracking.data(),
kEnumValueForParcelTracking.size()),
};

} // namespace
Expand Down Expand Up @@ -241,6 +270,7 @@ IosModuleRanker::GetModelConfig() {
writer.AddFromInputContext("shortcuts_input", kShortcutsFreshness);
writer.AddFromInputContext("safety_check_input", kSafetyCheckFreshness);
writer.AddFromInputContext("tab_resumption_input", kTabResumptionFreshness);
writer.AddFromInputContext("parcel_tracking_input", kParcelTrackingFreshness);

return std::make_unique<ModelConfig>(std::move(metadata), kModelVersion);
}
Expand All @@ -260,10 +290,11 @@ void IosModuleRanker::ExecuteModelWithInput(

ModelProvider::Response response(kIosModuleLabels.size(), 0);
// Default ranking
response[0] = 4; // Most Visited Tiles
response[1] = 3; // Shortcuts
response[2] = 2; // Safety Check
response[3] = 1; // Tab resumption
response[0] = 5; // Most Visited Tiles
response[1] = 4; // Shortcuts
response[2] = 3; // Safety Check
response[3] = 2; // Tab resumption
response[4] = 1; // Parcel Tracking

base::SequencedTaskRunner::GetCurrentDefault()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback), response));
Expand Down
Expand Up @@ -30,10 +30,10 @@ TEST_F(IosModuleRankerTest, ExecuteModelWithInput) {

EXPECT_FALSE(ExecuteWithInput(/*inputs=*/{}));

std::vector<float> input(30, 0);
std::vector<float> input(35, 0);

ExpectClassifierResults(
input, {kMostVisitedTiles, kShortcuts, kSafetyCheck, kTabResumption});
ExpectClassifierResults(input, {kMostVisitedTiles, kShortcuts, kSafetyCheck,
kTabResumption, kParcelTracking});
}

} // namespace segmentation_platform
1 change: 1 addition & 0 deletions components/segmentation_platform/public/constants.h
Expand Up @@ -183,6 +183,7 @@ const char kMostVisitedTiles[] = "MostVisitedTiles";
const char kShortcuts[] = "Shortcuts";
const char kSafetyCheck[] = "SafetyCheck";
const char kTabResumption[] = "TabResumption";
const char kParcelTracking[] = "ParcelTracking";

// Input Context keys for freshness for IOS modules.
const char kMostVisitedTilesFreshness[] = "most_visited_tiles_freshness";
Expand Down
Expand Up @@ -57,11 +57,12 @@ void OnGetClassificationResult(base::RepeatingClosure closure,
const ClassificationResult& result) {
ASSERT_EQ(result.status, PredictionStatus::kSucceeded);
EXPECT_FALSE(result.ordered_labels.empty());
EXPECT_EQ(4u, result.ordered_labels.size());
EXPECT_EQ(5u, result.ordered_labels.size());
EXPECT_EQ("MostVisitedTiles", result.ordered_labels[0]);
EXPECT_EQ("Shortcuts", result.ordered_labels[1]);
EXPECT_EQ("SafetyCheck", result.ordered_labels[2]);
EXPECT_EQ("TabResumption", result.ordered_labels[3]);
EXPECT_EQ("ParcelTracking", result.ordered_labels[4]);

std::move(closure).Run();
}
Expand Down
Expand Up @@ -1104,6 +1104,12 @@ - (void)fetchMagicStackModuleRankingFromSegmentationPlatform {
segmentation_platform::kTabResumptionFreshness,
segmentation_platform::processing::ProcessedValue::FromFloat(
tab_resumption_freshness_impression_count));
int parcel_tracking_freshness_impression_count = _localState->GetInteger(
prefs::kIosMagicStackSegmentationParcelTrackingImpressionsSinceFreshness);
input_context->metadata_args.emplace(
segmentation_platform::kParcelTrackingFreshness,
segmentation_platform::processing::ProcessedValue::FromFloat(
parcel_tracking_freshness_impression_count));
__weak ContentSuggestionsMediator* weakSelf = self;
segmentation_platform::PredictionOptions options;
options.on_demand_execution = true;
Expand Down

0 comments on commit d61c4b0

Please sign in to comment.