blob: 5f4416d2160c6c35e7ee4b3e834fd1ec873e7080 [file] [log] [blame]
// Copyright 2019 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;
/**
* A prefix for a range of SharedPreferences keys generated dynamically.
*
* Instances should be declared as keys in the PreferenceKeys registry.
*/
public class KeyPrefix {
private final String mPrefix;
public KeyPrefix(String pattern) {
// More thorough checking is performed in ChromePreferenceKeysTest.
assert pattern.endsWith("*");
mPrefix = pattern.substring(0, pattern.length() - 1);
}
/**
* @param stem A non-empty string. The '*' character is reserved.
* @return The complete SharedPreferences key to be passed to {@link SharedPreferencesManager}.
*/
public String createKey(String stem) {
return mPrefix + stem;
}
/**
* @param index An int to generate a unique key.
* @return The complete SharedPreferences key to be passed to {@link SharedPreferencesManager}.
*/
public String createKey(int index) {
return mPrefix + index;
}
public String pattern() {
return mPrefix + "*";
}
public boolean hasGenerated(String key) {
return key.startsWith(mPrefix);
}
}