1 // Copyright 2020 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.components.prefs; 6 7 import androidx.annotation.NonNull; 8 import androidx.annotation.VisibleForTesting; 9 10 import org.jni_zero.CalledByNative; 11 import org.jni_zero.NativeMethods; 12 13 /** PrefService provides read and write access to native PrefService. */ 14 public class PrefService { 15 private long mNativePrefServiceAndroid; 16 17 @CalledByNative create(long nativePrefServiceAndroid)18 private static PrefService create(long nativePrefServiceAndroid) { 19 return new PrefService(nativePrefServiceAndroid); 20 } 21 22 @CalledByNative clearNativePtr()23 private void clearNativePtr() { 24 mNativePrefServiceAndroid = 0; 25 } 26 27 @CalledByNative getNativePointer()28 private long getNativePointer() { 29 return mNativePrefServiceAndroid; 30 } 31 32 @VisibleForTesting PrefService(long nativePrefServiceAndroid)33 PrefService(long nativePrefServiceAndroid) { 34 mNativePrefServiceAndroid = nativePrefServiceAndroid; 35 } 36 37 /** @param preference The name of the preference. */ clearPref(@onNull String preference)38 public void clearPref(@NonNull String preference) { 39 PrefServiceJni.get().clearPref(mNativePrefServiceAndroid, preference); 40 } 41 42 /** @param preference The name of the preference. */ hasPrefPath(@onNull String preference)43 public boolean hasPrefPath(@NonNull String preference) { 44 return PrefServiceJni.get().hasPrefPath(mNativePrefServiceAndroid, preference); 45 } 46 47 /** 48 * @param preference The name of the preference. 49 * @return Whether the specified preference is enabled. 50 */ getBoolean(@onNull String preference)51 public boolean getBoolean(@NonNull String preference) { 52 return PrefServiceJni.get().getBoolean(mNativePrefServiceAndroid, preference); 53 } 54 55 /** 56 * @param preference The name of the preference. 57 * @param value The value the specified preference will be set to. 58 */ setBoolean(@onNull String preference, boolean value)59 public void setBoolean(@NonNull String preference, boolean value) { 60 PrefServiceJni.get().setBoolean(mNativePrefServiceAndroid, preference, value); 61 } 62 63 /** 64 * @param preference The name of the preference. 65 * @return value The value of the specified preference. 66 */ getInteger(@onNull String preference)67 public int getInteger(@NonNull String preference) { 68 return PrefServiceJni.get().getInteger(mNativePrefServiceAndroid, preference); 69 } 70 71 /** 72 * @param preference The name of the preference. 73 * @param value The value the specified preference will be set to. 74 */ setInteger(@onNull String preference, int value)75 public void setInteger(@NonNull String preference, int value) { 76 PrefServiceJni.get().setInteger(mNativePrefServiceAndroid, preference, value); 77 } 78 79 /** 80 * @param preference The name of the preference. 81 * @return value The value of the specified preference. 82 */ getDouble(@onNull String preference)83 public double getDouble(@NonNull String preference) { 84 return PrefServiceJni.get().getDouble(mNativePrefServiceAndroid, preference); 85 } 86 87 /** 88 * @param preference The name of the preference. 89 * @param value The value the specified preference will be set to. 90 */ setDouble(@onNull String preference, double value)91 public void setDouble(@NonNull String preference, double value) { 92 PrefServiceJni.get().setDouble(mNativePrefServiceAndroid, preference, value); 93 } 94 95 /** 96 * @param preference The name of the preference. 97 * @return value The value of the specified preference. 98 */ 99 @NonNull getString(@onNull String preference)100 public String getString(@NonNull String preference) { 101 return PrefServiceJni.get().getString(mNativePrefServiceAndroid, preference); 102 } 103 104 /** 105 * @param preference The name of the preference. 106 * @param value The value the specified preference will be set to. 107 */ setString(@onNull String preference, @NonNull String value)108 public void setString(@NonNull String preference, @NonNull String value) { 109 PrefServiceJni.get().setString(mNativePrefServiceAndroid, preference, value); 110 } 111 112 /** 113 * @param preference The name of the preference. 114 * @return Whether the specified preference is managed. 115 */ isManagedPreference(@onNull String preference)116 public boolean isManagedPreference(@NonNull String preference) { 117 return PrefServiceJni.get().isManagedPreference(mNativePrefServiceAndroid, preference); 118 } 119 120 /** 121 * @param preference The name of the preference 122 * @return Whether the specified preference is currently using its default value 123 * and has not been set by any higher-priority source (even with the same value). 124 */ isDefaultValuePreference(@onNull String preference)125 public boolean isDefaultValuePreference(@NonNull String preference) { 126 return PrefServiceJni.get().isDefaultValuePreference(mNativePrefServiceAndroid, preference); 127 } 128 129 @NativeMethods 130 interface Natives { clearPref(long nativePrefServiceAndroid, String preference)131 void clearPref(long nativePrefServiceAndroid, String preference); 132 hasPrefPath(long nativePrefServiceAndroid, String preference)133 boolean hasPrefPath(long nativePrefServiceAndroid, String preference); 134 getBoolean(long nativePrefServiceAndroid, String preference)135 boolean getBoolean(long nativePrefServiceAndroid, String preference); 136 setBoolean(long nativePrefServiceAndroid, String preference, boolean value)137 void setBoolean(long nativePrefServiceAndroid, String preference, boolean value); 138 getInteger(long nativePrefServiceAndroid, String preference)139 int getInteger(long nativePrefServiceAndroid, String preference); 140 setInteger(long nativePrefServiceAndroid, String preference, int value)141 void setInteger(long nativePrefServiceAndroid, String preference, int value); 142 getDouble(long nativePrefServiceAndroid, String preference)143 double getDouble(long nativePrefServiceAndroid, String preference); 144 setDouble(long nativePrefServiceAndroid, String preference, double value)145 void setDouble(long nativePrefServiceAndroid, String preference, double value); 146 getString(long nativePrefServiceAndroid, String preference)147 String getString(long nativePrefServiceAndroid, String preference); 148 setString(long nativePrefServiceAndroid, String preference, String value)149 void setString(long nativePrefServiceAndroid, String preference, String value); 150 isManagedPreference(long nativePrefServiceAndroid, String preference)151 boolean isManagedPreference(long nativePrefServiceAndroid, String preference); 152 isDefaultValuePreference(long nativePrefServiceAndroid, String preference)153 boolean isDefaultValuePreference(long nativePrefServiceAndroid, String preference); 154 } 155 } 156