123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // Copyright 2021 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 ANDROID_WEBVIEW_COMMON_METRICS_APP_PACKAGE_NAME_LOGGING_RULE_H_
- #define ANDROID_WEBVIEW_COMMON_METRICS_APP_PACKAGE_NAME_LOGGING_RULE_H_
- #include "base/time/time.h"
- #include "base/values.h"
- #include "base/version.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- namespace android_webview {
- // A class to hold the state of whether an app package name should be recorded
- // in UMA metrics log or not. This represent the result of looking the app
- // package name in a list of allowed apps.
- class AppPackageNameLoggingRule {
- public:
- AppPackageNameLoggingRule(const base::Version& version,
- const base::Time& expiry_date);
- ~AppPackageNameLoggingRule() = default;
- AppPackageNameLoggingRule(const AppPackageNameLoggingRule&) = default;
- AppPackageNameLoggingRule& operator=(const AppPackageNameLoggingRule&) =
- default;
- AppPackageNameLoggingRule(AppPackageNameLoggingRule&&) = default;
- AppPackageNameLoggingRule& operator=(AppPackageNameLoggingRule&&) = default;
- base::Version GetVersion() const;
- base::Time GetExpiryDate() const;
- // Return `true` is the app is in the allowlist and the result hasn't expired,
- // `false` otherwise.
- bool IsAppPackageNameAllowed() const;
- // If it has the same version and expiry_date as `record`.
- bool IsSameAs(const AppPackageNameLoggingRule& record) const;
- base::Value ToDictionary();
- // Creates a valid AppPackageNameLoggingRule from a dictionary, or null if
- // the dictionary have invalid values.
- static absl::optional<AppPackageNameLoggingRule> FromDictionary(
- const base::Value& dict);
- private:
- base::Version version_;
- base::Time expiry_date_;
- };
- } // namespace android_webview
- #endif // ANDROID_WEBVIEW_COMMON_METRICS_APP_PACKAGE_NAME_LOGGING_RULE_H_
|