diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-11-04 00:41:00 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-11-04 00:41:00 +0000 |
commit | 725bf3e2372b8ab29e521e864d28770fdf2c0443 (patch) | |
tree | d094f43841ac9dc9c54fd96ffd940b6f71f8ba39 /sdksandbox/framework/java/android/app/sdksandbox/SharedPreferencesSyncManager.java | |
parent | 190c25efdbd5a5bdbb41a2818cf39a05d0ea9be0 (diff) | |
parent | 7b99dc653ed133fef81d0423fee87d45299097e2 (diff) | |
download | AdServices-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.java | 36 |
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()); + } } } |