chromium/components/user_manager/include_exclude_account_id_filter.h

// Copyright 2023 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_USER_MANAGER_INCLUDE_EXCLUDE_ACCOUNT_ID_FILTER_H_
#define COMPONENTS_USER_MANAGER_INCLUDE_EXCLUDE_ACCOUNT_ID_FILTER_H_

#include <vector>

#include "base/containers/flat_set.h"
#include "components/account_id/account_id.h"
#include "components/user_manager/user_manager_export.h"

namespace user_manager {

// IncludeExcludeAccountIdFilter is a data structure which helps to identify
// whether `AccountId` is included or excluded from some set (e.g. set of
// ephemeral accounts).
//
// It holds include set, exclude set and a boolean flag which indicates
// whether item is included by default if not present neither in include set
// nor in exclude set.
//
// For example, every account is ephemeral or not, so we can have a set of
// ephemeral accounts and appropriate IncludeExcludeAccountIdFilter if we
// provide next things:
//   1. list of accounts that are ephemeral (include_list)
//   2. list of accounts that are non-ephemeral (exclude_list)
//   3. boolean flag (included_by_default) which configures whether we consider
//      account ephemeral (included to the set) if account is neither present in
//      include nor in exclude lists.
class USER_MANAGER_EXPORT IncludeExcludeAccountIdFilter {};

}  // namespace user_manager

#endif  // COMPONENTS_USER_MANAGER_INCLUDE_EXCLUDE_ACCOUNT_ID_FILTER_H_