chromium/base/android/java/src/org/chromium/base/shared_preferences/PreferenceKeyRegistry.java

// 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.

package org.chromium.base.shared_preferences;

import androidx.annotation.NonNull;

import org.chromium.build.annotations.CheckDiscard;

import java.util.HashSet;
import java.util.List;
import java.util.Locale;

@CheckDiscard("Preference key checking should only happen on build with asserts")
public class PreferenceKeyRegistry {
    private final String mModule;
    public final HashSet<String> mKeysInUse;
    public final HashSet<String> mLegacyFormatKeys;
    public final List<KeyPrefix> mLegacyPrefixes;

    public PreferenceKeyRegistry(
            String module,
            List<String> keysInUse,
            List<String> legacyKeys,
            List<KeyPrefix> legacyPrefixes) {
        mModule = module;
        mKeysInUse = new HashSet<>(keysInUse);
        mLegacyFormatKeys = new HashSet<>(legacyKeys);
        mLegacyPrefixes = legacyPrefixes;
    }

    @NonNull
    public String toDebugString() {
        return String.format(
                Locale.getDefault(),
                "%s (%d in use, %d legacy, %d legacy prefixes)",
                mModule,
                mKeysInUse.size(),
                mLegacyFormatKeys.size(),
                mLegacyPrefixes.size());
    }
}