blob: 4704f68cabf8c288bfc4eff85260f63024a1dac7 [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.
#include "chrome/browser/extensions/blocklist_extension_prefs.h"
#include "extensions/browser/extension_prefs.h"
namespace extensions {
namespace {
// If extension is blocklisted by Omaha attributes.
constexpr const char kPrefOmahaBlocklistState[] = "omaha_blocklist_state";
// If the user has acknowledged the blocklist state.
constexpr const char kPrefAcknowledgedBlocklistState[] =
"acknowledged_blocklist_state";
// The default value to use for getting blocklist state from the pref.
constexpr BitMapBlocklistState kDefaultBitMapBlocklistState =
BitMapBlocklistState::NOT_BLOCKLISTED;
} // namespace
namespace blocklist_prefs {
void AddOmahaBlocklistState(const std::string& extension_id,
BitMapBlocklistState state,
extensions::ExtensionPrefs* extension_prefs) {
extension_prefs->ModifyBitMapPrefBits(
extension_id, static_cast<int>(state), ExtensionPrefs::BIT_MAP_PREF_ADD,
kPrefOmahaBlocklistState, static_cast<int>(kDefaultBitMapBlocklistState));
}
void RemoveOmahaBlocklistState(const std::string& extension_id,
BitMapBlocklistState state,
extensions::ExtensionPrefs* extension_prefs) {
extension_prefs->ModifyBitMapPrefBits(
extension_id, static_cast<int>(state),
ExtensionPrefs::BIT_MAP_PREF_REMOVE, kPrefOmahaBlocklistState,
static_cast<int>(kDefaultBitMapBlocklistState));
}
bool HasOmahaBlocklistState(const std::string& extension_id,
BitMapBlocklistState state,
extensions::ExtensionPrefs* extension_prefs) {
int current_states = extension_prefs->GetBitMapPrefBits(
extension_id, kPrefOmahaBlocklistState,
static_cast<int>(kDefaultBitMapBlocklistState));
return (current_states & static_cast<int>(state)) != 0;
}
void AddAcknowledgedBlocklistState(
const std::string& extension_id,
BitMapBlocklistState state,
extensions::ExtensionPrefs* extension_prefs) {
extension_prefs->ModifyBitMapPrefBits(
extension_id, static_cast<int>(state), ExtensionPrefs::BIT_MAP_PREF_ADD,
kPrefAcknowledgedBlocklistState,
static_cast<int>(kDefaultBitMapBlocklistState));
}
void ClearAcknowledgedBlocklistState(
const std::string& extension_id,
extensions::ExtensionPrefs* extension_prefs) {
extension_prefs->ModifyBitMapPrefBits(
extension_id, 0, ExtensionPrefs::BIT_MAP_PREF_CLEAR,
kPrefAcknowledgedBlocklistState,
static_cast<int>(kDefaultBitMapBlocklistState));
}
bool HasAcknowledgedBlocklistState(
const std::string& extension_id,
BitMapBlocklistState state,
extensions::ExtensionPrefs* extension_prefs) {
int current_states = extension_prefs->GetBitMapPrefBits(
extension_id, kPrefAcknowledgedBlocklistState,
static_cast<int>(kDefaultBitMapBlocklistState));
return (current_states & static_cast<int>(state)) != 0;
}
} // namespace blocklist_prefs
} // namespace extensions