Loading services/core/java/com/android/server/slice/SlicePermissionManager.java +18 −4 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.util.Log; import android.util.Slog; import android.util.Xml.Encoding; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.XmlUtils; import com.android.server.slice.SliceProviderPermissions.SliceAuthority; Loading Loading @@ -76,8 +77,11 @@ public class SlicePermissionManager implements DirtyTracker { private final File mSliceDir; private final Context mContext; private final Handler mHandler; @GuardedBy("itself") private final ArrayMap<PkgUser, SliceProviderPermissions> mCachedProviders = new ArrayMap<>(); @GuardedBy("itself") private final ArrayMap<PkgUser, SliceClientPermissions> mCachedClients = new ArrayMap<>(); @GuardedBy("this") private final ArraySet<Persistable> mDirty = new ArraySet<>(); @VisibleForTesting Loading Loading @@ -354,15 +358,23 @@ public class SlicePermissionManager implements DirtyTracker { // use addPersistableDirty(); this is just for tests @VisibleForTesting void addDirtyImmediate(Persistable obj) { synchronized (this) { mDirty.add(obj); } } private void handleRemove(PkgUser pkgUser) { getFile(SliceClientPermissions.getFileName(pkgUser)).delete(); getFile(SliceProviderPermissions.getFileName(pkgUser)).delete(); synchronized (this) { synchronized (mCachedClients) { mDirty.remove(mCachedClients.remove(pkgUser)); } synchronized (mCachedProviders) { mDirty.remove(mCachedProviders.remove(pkgUser)); } } } private final class H extends Handler { private static final int MSG_ADD_DIRTY = 1; Loading @@ -379,7 +391,9 @@ public class SlicePermissionManager implements DirtyTracker { public void handleMessage(Message msg) { switch (msg.what) { case MSG_ADD_DIRTY: synchronized (SlicePermissionManager.this) { mDirty.add((Persistable) msg.obj); } break; case MSG_PERSIST: handlePersist(); Loading Loading
services/core/java/com/android/server/slice/SlicePermissionManager.java +18 −4 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.util.Log; import android.util.Slog; import android.util.Xml.Encoding; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.XmlUtils; import com.android.server.slice.SliceProviderPermissions.SliceAuthority; Loading Loading @@ -76,8 +77,11 @@ public class SlicePermissionManager implements DirtyTracker { private final File mSliceDir; private final Context mContext; private final Handler mHandler; @GuardedBy("itself") private final ArrayMap<PkgUser, SliceProviderPermissions> mCachedProviders = new ArrayMap<>(); @GuardedBy("itself") private final ArrayMap<PkgUser, SliceClientPermissions> mCachedClients = new ArrayMap<>(); @GuardedBy("this") private final ArraySet<Persistable> mDirty = new ArraySet<>(); @VisibleForTesting Loading Loading @@ -354,15 +358,23 @@ public class SlicePermissionManager implements DirtyTracker { // use addPersistableDirty(); this is just for tests @VisibleForTesting void addDirtyImmediate(Persistable obj) { synchronized (this) { mDirty.add(obj); } } private void handleRemove(PkgUser pkgUser) { getFile(SliceClientPermissions.getFileName(pkgUser)).delete(); getFile(SliceProviderPermissions.getFileName(pkgUser)).delete(); synchronized (this) { synchronized (mCachedClients) { mDirty.remove(mCachedClients.remove(pkgUser)); } synchronized (mCachedProviders) { mDirty.remove(mCachedProviders.remove(pkgUser)); } } } private final class H extends Handler { private static final int MSG_ADD_DIRTY = 1; Loading @@ -379,7 +391,9 @@ public class SlicePermissionManager implements DirtyTracker { public void handleMessage(Message msg) { switch (msg.what) { case MSG_ADD_DIRTY: synchronized (SlicePermissionManager.this) { mDirty.add((Persistable) msg.obj); } break; case MSG_PERSIST: handlePersist(); Loading