File: report_generation_config.cc

package info (click to toggle)
chromium 139.0.7258.138-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 6,120,676 kB
  • sloc: cpp: 35,100,869; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (99 lines) | stat: -rw-r--r-- 3,595 bytes parent folder | download | duplicates (5)
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "components/enterprise/browser/reporting/report_generation_config.h"

#include "base/check_op.h"
#include "base/strings/stringprintf.h"

namespace {
constexpr char kReportGenerationConfigTemplate[] =
    R"(Trigger: %s, Report Type: %s, Security Signals Mode: %s,"
    " Using Cookies: %s)";

std::string_view ReportTriggerToString(
    enterprise_reporting::ReportTrigger report_trigger) {
  switch (report_trigger) {
    case enterprise_reporting::ReportTrigger::kTriggerNone:
      return "No trigger";
    case enterprise_reporting::ReportTrigger::kTriggerTimer:
      return "Periodic timer expired";
    case enterprise_reporting::ReportTrigger::kTriggerUpdate:
      return "An update was detected";
    case enterprise_reporting::ReportTrigger::kTriggerNewVersion:
      return "A new version is running";
    case enterprise_reporting::ReportTrigger::kTriggerManual:
      return "Trigger manually";
    case enterprise_reporting::ReportTrigger::kTriggerSecurity:
      return "Trigger for security signals";
  }
}

std::string_view TranslateReportType(
    enterprise_reporting::ReportType report_type) {
  switch (report_type) {
    case enterprise_reporting::ReportType::kFull:
      return "Full/Browser Report";
    case enterprise_reporting::ReportType::kBrowserVersion:
      return "Browser Version Report";
    case enterprise_reporting::ReportType::kProfileReport:
      return "Profile Report";
  }
}

std::string_view TranslateSecuritySignalsMode(
    SecuritySignalsMode security_signals_mode) {
  switch (security_signals_mode) {
    case SecuritySignalsMode::kNoSignals:
      return "No security signals reported";
    case SecuritySignalsMode::kSignalsAttached:
      return "Security signals reported alongside status report";
    case SecuritySignalsMode::kSignalsOnly:
      return "Security signals are reported exclusively";
  }
}

}  // namespace

namespace enterprise_reporting {

ReportGenerationConfig::ReportGenerationConfig(
    ReportTrigger report_trigger,
    ReportType report_type,
    SecuritySignalsMode security_signals_mode,
    bool use_cookies)
    : report_trigger(report_trigger),
      report_type(report_type),
      security_signals_mode(security_signals_mode),
      use_cookies(use_cookies) {
  // Currently security signals are only being reported in profile level
  // reporting.
  if (report_type != ReportType::kProfileReport) {
    CHECK_EQ(security_signals_mode, SecuritySignalsMode::kNoSignals);
  }
}

ReportGenerationConfig::ReportGenerationConfig(ReportTrigger report_trigger)
    : ReportGenerationConfig(report_trigger,
                             ReportType::kFull,
                             SecuritySignalsMode::kNoSignals,
                             /*use_cookies=*/false) {}

ReportGenerationConfig::ReportGenerationConfig()
    : ReportGenerationConfig(ReportTrigger::kTriggerNone) {}

ReportGenerationConfig::~ReportGenerationConfig() = default;

bool ReportGenerationConfig::operator==(const ReportGenerationConfig&) const =
    default;

std::string ReportGenerationConfig::ToString() const {
  return base::StringPrintf(kReportGenerationConfigTemplate,
                            ReportTriggerToString(report_trigger),
                            TranslateReportType(report_type),
                            TranslateSecuritySignalsMode(security_signals_mode),
                            use_cookies ? "Yes" : "No");
}

}  // namespace enterprise_reporting