blob: 0bb0440b9c926c80b542d373b58985f806dad66b [file] [log] [blame]
// 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 EXTENSIONS_BROWSER_BLOCKLIST_EXTENSION_PREFS_H_
#define EXTENSIONS_BROWSER_BLOCKLIST_EXTENSION_PREFS_H_
#include <string>
#include "extensions/browser/blocklist_state.h"
namespace extensions {
class ExtensionPrefs;
// Helper namespace for adding/removing/querying prefs for the blocklist.
namespace blocklist_prefs {
// Converts BlocklistState to BitMapBlocklistState.
BitMapBlocklistState BlocklistStateToBitMapBlocklistState(
BlocklistState blocklist_state);
// Takes both Safe Browsing blocklist state and Omaha attribute blocklist states
// into account and determine the final state of the extension. The precedence
// is defined as follow:
// BLOCKLISTED_MALWARE > BLOCKLISTED_CWS_POLICY_VIOLATION >
// BLOCKLISTED_POTENTIALLY_UNWANTED > BLOCKLISTED_SECURITY_VULNERABILITY.
BitMapBlocklistState GetExtensionBlocklistState(
const std::string& extension_id,
ExtensionPrefs* extension_prefs);
// Returns whether the extension with |extension_id| is blocklisted for malware
// by the Safe Browsing blocklist or the Omaha attribute blocklist.
bool IsExtensionBlocklisted(const std::string& extension_id,
ExtensionPrefs* extension_prefs);
// Adds the `state` to the Omaha blocklist state pref.
void AddOmahaBlocklistState(const std::string& extension_id,
BitMapBlocklistState state,
ExtensionPrefs* extension_prefs);
// Removes the `state` from the Omaha blocklist state pref. It doesn't clear
// the other states in the pref.
void RemoveOmahaBlocklistState(const std::string& extension_id,
BitMapBlocklistState state,
ExtensionPrefs* extension_prefs);
// Checks whether the `extension_id` has the `state` in the Omaha blocklist
// state pref.
bool HasOmahaBlocklistState(const std::string& extension_id,
BitMapBlocklistState state,
ExtensionPrefs* extension_prefs);
// Checks whether the `extension_id` is in any Omaha greylist state.
bool HasAnyOmahaGreylistState(const std::string& extension_id,
ExtensionPrefs* extension_prefs);
// Adds the `state` to the acknowledged blocklist state pref.
void AddAcknowledgedBlocklistState(const std::string& extension_id,
BitMapBlocklistState state,
ExtensionPrefs* extension_prefs);
// Removes the `state` from the acknowledged blocklist state pref. It doesn't
// clear the other states in the pref.
void RemoveAcknowledgedBlocklistState(
const std::string& extension_id,
BitMapBlocklistState state,
extensions::ExtensionPrefs* extension_prefs);
// Clears all greylisted states in the acknowledged blocklist state pref.
void ClearAcknowledgedGreylistStates(const std::string& extension_id,
ExtensionPrefs* extension_prefs);
// Checks whether the `extension_id` has the `state` in the acknowledged
// blocklist state pref.
bool HasAcknowledgedBlocklistState(const std::string& extension_id,
BitMapBlocklistState state,
const ExtensionPrefs* extension_prefs);
// Sets all current greylist states for this `extension_id` as acknowledged.
// It will consider both Safe Browsing greylist state and Omaha attribute
// greylist state. Previous acknowledged states will be cleared if the
// `extension_id` is no longer in that state.
void UpdateCurrentGreylistStatesAsAcknowledged(const std::string& extension_id,
ExtensionPrefs* extension_prefs);
// Sets the `bitmap_blocklist_state` to the Safe Browsing blocklist state pref.
void SetSafeBrowsingExtensionBlocklistState(
const std::string& extension_id,
BitMapBlocklistState bitmap_blocklist_state,
ExtensionPrefs* extension_prefs);
// Returns the current Safe Browsing blocklist state of the `extension_id`.
// Warning: This function only takes Safe Browsing blocklist states into
// account. If you'd like to combine both Safe Browsing and Omaha attribute
// blocklist, please use blocklist_prefs::GetExtensionBlocklistState instead.
BitMapBlocklistState GetSafeBrowsingExtensionBlocklistState(
const std::string& extension_id,
ExtensionPrefs* extension_prefs);
} // namespace blocklist_prefs
} // namespace extensions
#endif // EXTENSIONS_BROWSER_BLOCKLIST_EXTENSION_PREFS_H_