blob: 71ffb94d1d2b0df44bab9d6a5d95e4e3f13faaa1 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_QUERY_TILES_INTERNAL_TILE_CONFIG_H_
#define COMPONENTS_QUERY_TILES_INTERNAL_TILE_CONFIG_H_
#include <memory>
#include <string>
#include "base/time/time.h"
#include "components/query_tiles/internal/tile_types.h"
#include "url/gurl.h"
namespace query_tiles {
// Default URL string for GetQueryTiles RPC.
extern const char kDefaultGetQueryTilePath[];
// Finch parameter key for experiment tag to be passed to the server.
extern const char kExperimentTagKey[];
// Finch parameter key for base server URL to retrieve the tiles.
extern const char kBaseURLKey[];
// Finch parameter key for expire duration in seconds.
extern const char kExpireDurationKey[];
// Finch parameter key for expire duration in seconds.
extern const char kIsUnmeteredNetworkRequiredKey[];
// Finch parameter key for image prefetch mode.
extern const char kImagePrefetchModeKey[];
// Finch parameter key for the minimum interval to next schedule.
extern const char kScheduleIntervalKey[];
// Finch parameter key for random window.
extern const char kMaxRandomWindowKey[];
// Finch parameter key for one off task window.
extern const char kOneoffTaskWindowKey[];
// Finch parameter key for Backoff policy initial delay in ms.
extern const char kBackoffInitDelayInMsKey[];
// Finch parameter key for Backoff policy maximum delay in ms.
extern const char kBackoffMaxDelayInMsKey[];
// Finch parameter key for lambda in tile score decay calculation.
extern const char kTileScoreDecayLambdaKey[];
// Finch parameter key representing the minimum scores for new tiles that are in
// front of others.
extern const char kMinimumScoreForNewFrontTilesKey[];
// Finch parameter key for number of trending tiles to display.
extern const char kNumTrendingTilesKey[];
// Finch parameter key for max number of trending tile impressions.
extern const char kMaxTrendingTileImpressionsKey[];
// Finch parameter key for the starting position to shuffle unclicked tiles.
extern const char kTileShufflePositionKey[];
class TileConfig {
public:
// Gets the URL for the Query Tiles service. If
// |override_field_trial_param_value_if_empty| is false, server URL provided
// by field trial param is preferred over |base_url|. Otherwise, |base_url| is
// used. This method could return an empty URL if no valid URL is provided
// though |base_url| or field trial param.
static GURL GetQueryTilesServerUrl(
const std::string& base_url,
bool override_field_trial_param_value_if_empty);
// Gets whether running the background task requires unmeter network
// condition.
static bool GetIsUnMeteredNetworkRequired();
// Gets the experiment tag to be passed to server.
static std::string GetExperimentTag();
// Gets the maximum duration for holding current group's info and images.
static base::TimeDelta GetExpireDuration();
// Gets the image prefetch mode to determine how many images will be
// prefetched in background task.
static ImagePrefetchMode GetImagePrefetchMode();
// Get the interval of schedule window in ms.
static int GetScheduleIntervalInMs();
// Get the maxmium window for randomization in ms.
static int GetMaxRandomWindowInMs();
// Get the schedule window duration from start to end in one-off task params
// in ms.
static int GetOneoffTaskWindowInMs();
// Get the init delay (unit:ms) argument for backoff policy.
static int GetBackoffPolicyArgsInitDelayInMs();
// Get the max delay (unit:ms) argument for backoff policy.
static int GetBackoffPolicyArgsMaxDelayInMs();
// Get the lambda value used for calculating the tile score decay over time.
static double GetTileScoreDecayLambda();
// Get the minimum scrore for newly showing tiles that are in front of others.
static double GetMinimumScoreForNewFrontTiles();
// Get the number of trending tiles to be displayed at the same time.
static int GetNumTrendingTilesToDisplay();
// Get the maximum number of impressions for a trending tile to be displayed.
static int GetMaxTrendingTileImpressions();
// Get the starting position tp shuffle unclicked tiles. Tiles before this
// position are not shuffled.
static int GetTileShufflePosition();
};
} // namespace query_tiles
#endif // COMPONENTS_QUERY_TILES_INTERNAL_TILE_CONFIG_H_