File: browsing_data_utils.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; 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 (171 lines) | stat: -rw-r--r-- 6,184 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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_BROWSING_DATA_CORE_BROWSING_DATA_UTILS_H_
#define COMPONENTS_BROWSING_DATA_CORE_BROWSING_DATA_UTILS_H_

#include <optional>
#include <string>

#include "base/time/time.h"
#include "build/build_config.h"
#include "components/browsing_data/core/clear_browsing_data_tab.h"
#include "components/browsing_data/core/counters/browsing_data_counter.h"
#include "net/cookies/cookie_constants.h"

namespace browsing_data {

// Histogram name for when an action happens in Delete Browsing Data dialog used
// in all platforms.
extern const char kDeleteBrowsingDataDialogHistogram[];

// Browsing data types as seen in the Android and Desktop UI. Keep in sync with
// the respective enum in
// c/b/r/s/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts
//
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.browsing_data
// LINT.IfChange(BrowsingDataType)
enum class BrowsingDataType {
  HISTORY = 0,
  CACHE = 1,
  SITE_DATA = 2,
  PASSWORDS = 3,
  FORM_DATA = 4,
  SITE_SETTINGS = 5,
  // Only for Desktop:
  DOWNLOADS = 6,
  HOSTED_APPS_DATA = 7,
  // Only for Android:
  TABS = 8,
  MAX_VALUE = TABS,
};
// LINT.ThenChange(/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts:BrowsingDataType)

// Time period ranges available when doing browsing data removals.
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused. Keep in sync with respective enums in
// tools/metrics/histograms/metadata/settings/enums.xml and
// c/b/r/s/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts
//
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.browsing_data
// LINT.IfChange(TimePeriod)
enum class TimePeriod {
  LAST_HOUR = 0,
  LAST_DAY = 1,
  LAST_WEEK = 2,
  FOUR_WEEKS = 3,
  ALL_TIME = 4,
  OLDER_THAN_30_DAYS = 5,
  LAST_15_MINUTES = 6,
  TIME_PERIOD_LAST = LAST_15_MINUTES
};
// LINT.ThenChange(/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_browser_proxy.ts:TimePeriod)

// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//
// Must be kept in sync with the DeleteBrowsingDataAction in enums.xml.
//
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.browsing_data
//
// Note: Make sure to keep in sync with DeleteBrowsingDataAction defined in
//   chrome/browser/resources/settings/site_settings/metrics_browser_proxy.ts
enum class DeleteBrowsingDataAction {
  kClearBrowsingDataDialog = 0,
  kClearBrowsingDataOnExit = 1,
  kIncognitoCloseTabs = 2,
  kCookiesInUseDialog = 3,
  kSitesSettingsPage = 4,
  kHistoryPageEntries = 5,
  kQuickDelete = 6,
  kPageInfoResetPermissions = 7,
  kRwsDeleteAllData = 8,
  kMaxValue = kRwsDeleteAllData,
};

// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//
// LINT.IfChange(DeleteBrowsingDataDialogAction)
enum class DeleteBrowsingDataDialogAction {
  kBrowsingHistoryToggledOn = 0,
  kBrowsingHistoryToggledOff = 1,
  kTabsToggledOn = 2,
  kTabsToggledOff = 3,
  kSiteDataToggledOn = 4,
  kSiteDataToggledOff = 5,
  kCacheToggledOn = 6,
  kCacheToggledOff = 7,
  kPasswordsToggledOn = 8,
  kPasswordsToggledOff = 9,
  kAutofillToggledOn = 10,
  kAutofillToggledOff = 11,
  kUpdateDataTypesSelected = 12,
  kCancelDataTypesSelected = 13,
  kSignoutLinkOpened = 14,
  kLast15MinutesSelected = 15,
  kLastHourSelected = 16,
  kLastDaySelected = 17,
  kLastWeekSelected = 18,
  kLastFourWeeksSelected = 19,
  kOlderThan30DaysSelected = 20,
  kAllTimeSelected = 21,
  kBrowsingDataSelected = 22,
  kSearchHistoryLinkOpened = 23,
  kMyActivityLinkedOpened = 24,
  kDeletionSelected = 25,
  kCancelSelected = 26,
  kDialogDismissedImplicitly = 27,
  kMenuItemEntryPointSelected = 28,
  kHistoryEntryPointSelected = 29,
  kPrivacyEntryPointSelected = 30,
  kKeyboardEntryPointSelected = 31,
  kMaxValue = kKeyboardEntryPointSelected,
};
// LINT.ThenChange(//tools/metrics/histograms/metadata/privacy/enums.xml:DeleteBrowsingDataDialogAction)

// Calculate the begin time for the deletion range specified by |time_period|.
base::Time CalculateBeginDeleteTime(TimePeriod time_period);

// Calculate the end time for the deletion range specified by |time_period|.
base::Time CalculateEndDeleteTime(TimePeriod time_period);

// Records the UMA action of UI-triggered data deletion for |time_period|.
void RecordDeletionForPeriod(TimePeriod time_period);

// Records the UMA action of a change of the clear browsing data time period.
void RecordTimePeriodChange(TimePeriod period);

// Record Delete Browsing Data Action specified by |cbd_action|.
void RecordDeleteBrowsingDataAction(DeleteBrowsingDataAction cbd_action);

// Constructs the text to be displayed by a counter from the given |result|.
// Currently this can only be used for counters for which the Result is
// defined in components/browsing_data/core/counters.
std::u16string GetCounterTextFromResult(
    const BrowsingDataCounter::Result* result);

// Returns the preference that stores the time period.
const char* GetTimePeriodPreferenceName(
    ClearBrowsingDataTab clear_browsing_data_tab);

// Copies the name of the deletion preference corresponding to the given
// |data_type| to |out_pref|. Returns false if no such preference exists.
bool GetDeletionPreferenceFromDataType(
    BrowsingDataType data_type,
    ClearBrowsingDataTab clear_browsing_data_tab,
    std::string* out_pref);

// Returns a BrowsingDataType if a type matching |pref_name| is found.
std::optional<BrowsingDataType> GetDataTypeFromDeletionPreference(
    const std::string& pref_name);

bool IsHttpsCookieSourceScheme(net::CookieSourceScheme cookie_source_scheme);

}  // namespace browsing_data

#endif  // COMPONENTS_BROWSING_DATA_CORE_BROWSING_DATA_UTILS_H_