| // 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 CHROME_BROWSER_EXTENSIONS_OMAHA_ATTRIBUTES_HANDLER_H_ |
| #define CHROME_BROWSER_EXTENSIONS_OMAHA_ATTRIBUTES_HANDLER_H_ |
| |
| namespace base { |
| class Value; |
| } |
| |
| namespace extensions { |
| |
| // These values are logged to UMA. Entries should not be renumbered and |
| // numeric values should never be reused. Please keep in sync with |
| // "ExtensionUpdateCheckDataKey" in src/tools/metrics/histograms/enums.xml. |
| enum class ExtensionUpdateCheckDataKey { |
| // No update check data keys were found so no action was taken. |
| kNoKey = 0, |
| // The update check data keys had a "_malware" key resulting in the extension |
| // being disabled. |
| kMalware = 1, |
| // The update check data keys had a "_potentially_uws" key resulting in the |
| // extension being disabled. |
| kPotentiallyUWS = 2, |
| // The update check data keys had a "_policy_violation" key resulting in the |
| // extension being disabled. |
| kPolicyViolation = 3, |
| kMaxValue = kPolicyViolation |
| }; |
| |
| // Manages the Omaha attributes blocklist/greylist states in extension pref. |
| class OmahaAttributesHandler { |
| public: |
| OmahaAttributesHandler() = default; |
| OmahaAttributesHandler(const OmahaAttributesHandler&) = delete; |
| OmahaAttributesHandler& operator=(const OmahaAttributesHandler&) = delete; |
| ~OmahaAttributesHandler() = default; |
| |
| // Logs UMA metrics when an extension is disabled remotely. |
| static void ReportExtensionDisabledRemotely( |
| bool should_be_remotely_disabled, |
| ExtensionUpdateCheckDataKey reason); |
| |
| // Logs UMA metrics when the key is not found in Omaha attributes. |
| static void ReportNoUpdateCheckKeys(); |
| |
| // Logs UMA metrics when a remotely disabled extension is re-enabled. |
| static void ReportReenableExtensionFromMalware(); |
| |
| // Performs action based on Omaha attributes for the extension. |
| // TODO(crbug.com/1193695): This function currently only handles greylist |
| // states. We should move blocklist handling into this class too. |
| void PerformActionBasedOnOmahaAttributes(const base::Value& attributes); |
| |
| private: |
| void ReportPolicyViolationUWSOmahaAttributes(const base::Value& attributes); |
| }; |
| |
| } // namespace extensions |
| |
| #endif // CHROME_BROWSER_EXTENSIONS_OMAHA_ATTRIBUTES_HANDLER_H_ |