File: campaigns_utils.h

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (77 lines) | stat: -rw-r--r-- 3,224 bytes parent folder | download | duplicates (7)
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
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_ASH_COMPONENTS_GROWTH_CAMPAIGNS_UTILS_H_
#define CHROMEOS_ASH_COMPONENTS_GROWTH_CAMPAIGNS_UTILS_H_

#include <map>
#include <string>
#include <string_view>

#include "base/component_export.h"
#include "base/strings/cstring_view.h"
#include "chromeos/ash/components/growth/campaigns_constants.h"

class GURL;

namespace growth {

// A util function to add the `kGrowthCampaignsEventNamePrefix`.
COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_GROWTH_UTILS)
std::string_view GetGrowthCampaignsEventNamePrefix();

// TODO: b/341955045 - Separate for UIEvent and AppOpenedEvent.
COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_GROWTH_UTILS)
std::string GetEventName(CampaignEvent event, std::string_view id);

// Returns the app group id by individual app id.
// E.g. Gmail PWA and ARC apps could be grouped by `Gmail` group id.
// Some campaigns may use the app group id to do configuration.
COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_GROWTH_UTILS)
std::string_view GetAppGroupId(std::string_view app_id);

// Returns the app group id by URL.
// E.g. Gmail website can be grouped with other Gmail PWA and ARC apps by
// `Gmail` group id. Some campaigns may use the app group id to do
// configuration.
COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_GROWTH_UTILS)
std::string_view GetAppGroupId(const GURL& url);

// Returns the base conditions to query feature engagement framework.
COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_GROWTH_UTILS)
std::map<std::string, std::string> CreateBasicConditionParams();

// Returns the query string to check the impression/dismissal cap.
COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_GROWTH_UTILS)
std::string CreateConditionParamForCap(base::cstring_view campaign_type,
                                       int id,
                                       base::cstring_view event_type,
                                       int cap);

// Returns the max `campaign_id` (exclusive) can be recorded in the histogram.
// Campaign will be logged in a histogram named by rounding the `campaign_id`
// to the next five hundred. For examples:
//   `campaign_id`: 0 =>
//   "Ash.Growth.CampaignsManager.GetCampaignBySlot.Campaigns500" `campaign_id`:
//   100 => "Ash.Growth.CampaignsManager.GetCampaignBySlot.Campaigns500"
//   `campaign_id`: 499 =>
//   "Ash.Growth.CampaignsManager.GetCampaignBySlot.Campaigns500" `campaign_id`:
//   500 => "Ash.Growth.CampaignsManager.GetCampaignBySlot.Campaigns1000"
//   `campaign_id`: 501 =>
//   "Ash.Growth.CampaignsManager.GetCampaignBySlot.Campaigns1000"
//   `campaign_id`: 1000 =>
//   "Ash.Growth.CampaignsManager.GetCampaignBySlot.Campaigns1500"
//   `campaign_id`: 9999 =>
//   "Ash.Growth.CampaignsManager.GetCampaignBySlot.Campaigns10000"
//   `campaign_id`: 10000 =>
//   "Ash.Growth.CampaignsManager.GetCampaignBySlot.Campaigns10500"
COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_GROWTH_UTILS)
int GetHistogramMaxCampaignId(int campaign_id);

COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_GROWTH_UTILS)
std::string ToString(bool value);

}  // namespace growth

#endif  // CHROMEOS_ASH_COMPONENTS_GROWTH_CAMPAIGNS_UTILS_H_