summaryrefslogtreecommitdiff
path: root/sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-11-04 00:41:00 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-11-04 00:41:00 +0000
commit725bf3e2372b8ab29e521e864d28770fdf2c0443 (patch)
treed094f43841ac9dc9c54fd96ffd940b6f71f8ba39 /sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java
parent190c25efdbd5a5bdbb41a2818cf39a05d0ea9be0 (diff)
parent7b99dc653ed133fef81d0423fee87d45299097e2 (diff)
downloadAdServices-725bf3e2372b8ab29e521e864d28770fdf2c0443.tar.gz
Snap for 9254005 from 7b99dc653ed133fef81d0423fee87d45299097e2 to mainline-ipsec-releaseaml_ips_331910010aml_ips_331312000aml_ips_331310000android13-mainline-ipsec-release
Change-Id: Id77860bb313cd5104abdea4a778d197a1db28861
Diffstat (limited to 'sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java')
-rw-r--r--sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java36
1 files changed, 28 insertions, 8 deletions
diff --git a/sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java b/sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java
index 44bba284de..5e0c383783 100644
--- a/sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java
+++ b/sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java
@@ -23,6 +23,7 @@ import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.RemoteException;
import android.preference.PreferenceManager;
+import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
@@ -45,9 +46,7 @@ import java.util.Set;
public class SharedPreferencesSyncManager {
private static final String TAG = "SdkSandboxSyncManager";
-
- private static SharedPreferencesSyncManager sInstance = null;
-
+ private static ArrayMap<String, SharedPreferencesSyncManager> sInstanceMap = new ArrayMap<>();
private final ISdkSandboxManager mService;
private final Context mContext;
private final Object mLock = new Object();
@@ -71,13 +70,17 @@ public class SharedPreferencesSyncManager {
mService = service;
}
- /** Returns a singleton instance of this class. */
+ /**
+ * Returns a new instance of this class if there is a new package, otherewise returns a
+ * singleton instance.
+ */
public static synchronized SharedPreferencesSyncManager getInstance(
@NonNull Context context, @NonNull ISdkSandboxManager service) {
- if (sInstance == null) {
- sInstance = new SharedPreferencesSyncManager(context, service);
+ final String packageName = context.getPackageName();
+ if (!sInstanceMap.containsKey(packageName)) {
+ sInstanceMap.put(packageName, new SharedPreferencesSyncManager(context, service));
}
- return sInstance;
+ return sInstanceMap.get(packageName);
}
/**
@@ -107,7 +110,24 @@ public class SharedPreferencesSyncManager {
public void removeSharedPreferencesSyncKeys(@NonNull Set<String> keys) {
synchronized (mLock) {
mKeysToSync.removeAll(keys);
- // TODO(b/19742283): removed keys need to be erased from sandbox.
+
+ final ArrayList<SharedPreferencesKey> keysWithTypeBeingRemoved = new ArrayList<>();
+
+ for (final String key : keys) {
+ keysWithTypeBeingRemoved.add(
+ new SharedPreferencesKey(key, SharedPreferencesKey.KEY_TYPE_STRING));
+ }
+ final SharedPreferencesUpdate update =
+ new SharedPreferencesUpdate(keysWithTypeBeingRemoved, new Bundle());
+ try {
+ mService.syncDataFromClient(
+ mContext.getPackageName(),
+ /*timeAppCalledSystemServer=*/ System.currentTimeMillis(),
+ update,
+ mCallback);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Couldn't connect to SdkSandboxManagerService: " + e.getMessage());
+ }
}
}