blob: e37c369e142715da1f20caa6ebdc03de76059e44 [file] [log] [blame]
// Copyright 2020 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.components.prefs;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import org.jni_zero.CalledByNative;
import org.jni_zero.NativeMethods;
/** PrefService provides read and write access to native PrefService. */
public class PrefService {
private long mNativePrefServiceAndroid;
@CalledByNative
private static PrefService create(long nativePrefServiceAndroid) {
return new PrefService(nativePrefServiceAndroid);
}
@CalledByNative
private void clearNativePtr() {
mNativePrefServiceAndroid = 0;
}
@CalledByNative
private long getNativePointer() {
return mNativePrefServiceAndroid;
}
@VisibleForTesting
PrefService(long nativePrefServiceAndroid) {
mNativePrefServiceAndroid = nativePrefServiceAndroid;
}
/** @param preference The name of the preference. */
public void clearPref(@NonNull String preference) {
PrefServiceJni.get().clearPref(mNativePrefServiceAndroid, preference);
}
/** @param preference The name of the preference. */
public boolean hasPrefPath(@NonNull String preference) {
return PrefServiceJni.get().hasPrefPath(mNativePrefServiceAndroid, preference);
}
/**
* @param preference The name of the preference.
* @return Whether the specified preference is enabled.
*/
public boolean getBoolean(@NonNull String preference) {
return PrefServiceJni.get().getBoolean(mNativePrefServiceAndroid, preference);
}
/**
* @param preference The name of the preference.
* @param value The value the specified preference will be set to.
*/
public void setBoolean(@NonNull String preference, boolean value) {
PrefServiceJni.get().setBoolean(mNativePrefServiceAndroid, preference, value);
}
/**
* @param preference The name of the preference.
* @return value The value of the specified preference.
*/
public int getInteger(@NonNull String preference) {
return PrefServiceJni.get().getInteger(mNativePrefServiceAndroid, preference);
}
/**
* @param preference The name of the preference.
* @param value The value the specified preference will be set to.
*/
public void setInteger(@NonNull String preference, int value) {
PrefServiceJni.get().setInteger(mNativePrefServiceAndroid, preference, value);
}
/**
* @param preference The name of the preference.
* @return value The value of the specified preference.
*/
public double getDouble(@NonNull String preference) {
return PrefServiceJni.get().getDouble(mNativePrefServiceAndroid, preference);
}
/**
* @param preference The name of the preference.
* @param value The value the specified preference will be set to.
*/
public void setDouble(@NonNull String preference, double value) {
PrefServiceJni.get().setDouble(mNativePrefServiceAndroid, preference, value);
}
/**
* @param preference The name of the preference.
* @return value The value of the specified preference.
*/
@NonNull
public String getString(@NonNull String preference) {
return PrefServiceJni.get().getString(mNativePrefServiceAndroid, preference);
}
/**
* @param preference The name of the preference.
* @param value The value the specified preference will be set to.
*/
public void setString(@NonNull String preference, @NonNull String value) {
PrefServiceJni.get().setString(mNativePrefServiceAndroid, preference, value);
}
/**
* @param preference The name of the preference.
* @return Whether the specified preference is managed.
*/
public boolean isManagedPreference(@NonNull String preference) {
return PrefServiceJni.get().isManagedPreference(mNativePrefServiceAndroid, preference);
}
/**
* @param preference The name of the preference
* @return Whether the specified preference is currently using its default value
* and has not been set by any higher-priority source (even with the same value).
*/
public boolean isDefaultValuePreference(@NonNull String preference) {
return PrefServiceJni.get().isDefaultValuePreference(mNativePrefServiceAndroid, preference);
}
@NativeMethods
interface Natives {
void clearPref(long nativePrefServiceAndroid, String preference);
boolean hasPrefPath(long nativePrefServiceAndroid, String preference);
boolean getBoolean(long nativePrefServiceAndroid, String preference);
void setBoolean(long nativePrefServiceAndroid, String preference, boolean value);
int getInteger(long nativePrefServiceAndroid, String preference);
void setInteger(long nativePrefServiceAndroid, String preference, int value);
double getDouble(long nativePrefServiceAndroid, String preference);
void setDouble(long nativePrefServiceAndroid, String preference, double value);
String getString(long nativePrefServiceAndroid, String preference);
void setString(long nativePrefServiceAndroid, String preference, String value);
boolean isManagedPreference(long nativePrefServiceAndroid, String preference);
boolean isDefaultValuePreference(long nativePrefServiceAndroid, String preference);
}
}