Loading core/java/android/os/storage/StorageManagerInternal.java +21 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.os.storage; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.IVold; /** * Mount service local interface. Loading Loading @@ -111,4 +112,24 @@ public abstract class StorageManagerInternal { * @return Labels of storage volumes that are visible to the given userId. */ public abstract String[] getVisibleVolumesForUser(int userId); /** * A listener for reset events in the StorageManagerService. */ public interface ResetListener { /** * A method that should be triggered internally by StorageManagerInternal * when StorageManagerService reset happens. * * @param vold The binder object to vold. */ void onReset(IVold vold); } /** * Add a listener to listen to reset event in StorageManagerService. * * @param listener The listener that will be notified on reset events. */ public abstract void addResetListener(ResetListener listener); } services/core/java/com/android/server/StorageManagerService.java +20 −0 Original line number Diff line number Diff line Loading @@ -878,6 +878,7 @@ class StorageManagerService extends IStorageManager.Stub mStoraged.onUserStarted(userId); } mVold.onSecureKeyguardStateChanged(mSecureKeyguardShowing); mStorageManagerInternal.onReset(mVold); } catch (Exception e) { Slog.wtf(TAG, e); } Loading Loading @@ -3635,6 +3636,10 @@ class StorageManagerService extends IStorageManager.Stub private final CopyOnWriteArrayList<ExternalStorageMountPolicy> mPolicies = new CopyOnWriteArrayList<>(); @GuardedBy("mResetListeners") private final List<StorageManagerInternal.ResetListener> mResetListeners = new ArrayList<>(); @Override public void addExternalStoragePolicy(ExternalStorageMountPolicy policy) { // No locking - CopyOnWriteArrayList Loading Loading @@ -3666,6 +3671,21 @@ class StorageManagerService extends IStorageManager.Stub return mountMode; } @Override public void addResetListener(StorageManagerInternal.ResetListener listener) { synchronized (mResetListeners) { mResetListeners.add(listener); } } public void onReset(IVold vold) { synchronized (mResetListeners) { for (StorageManagerInternal.ResetListener listener : mResetListeners) { listener.onReset(vold); } } } public boolean hasExternalStorage(int uid, String packageName) { // No need to check for system uid. This avoids a deadlock between // PackageManagerService and AppOpsService. Loading Loading
core/java/android/os/storage/StorageManagerInternal.java +21 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.os.storage; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.IVold; /** * Mount service local interface. Loading Loading @@ -111,4 +112,24 @@ public abstract class StorageManagerInternal { * @return Labels of storage volumes that are visible to the given userId. */ public abstract String[] getVisibleVolumesForUser(int userId); /** * A listener for reset events in the StorageManagerService. */ public interface ResetListener { /** * A method that should be triggered internally by StorageManagerInternal * when StorageManagerService reset happens. * * @param vold The binder object to vold. */ void onReset(IVold vold); } /** * Add a listener to listen to reset event in StorageManagerService. * * @param listener The listener that will be notified on reset events. */ public abstract void addResetListener(ResetListener listener); }
services/core/java/com/android/server/StorageManagerService.java +20 −0 Original line number Diff line number Diff line Loading @@ -878,6 +878,7 @@ class StorageManagerService extends IStorageManager.Stub mStoraged.onUserStarted(userId); } mVold.onSecureKeyguardStateChanged(mSecureKeyguardShowing); mStorageManagerInternal.onReset(mVold); } catch (Exception e) { Slog.wtf(TAG, e); } Loading Loading @@ -3635,6 +3636,10 @@ class StorageManagerService extends IStorageManager.Stub private final CopyOnWriteArrayList<ExternalStorageMountPolicy> mPolicies = new CopyOnWriteArrayList<>(); @GuardedBy("mResetListeners") private final List<StorageManagerInternal.ResetListener> mResetListeners = new ArrayList<>(); @Override public void addExternalStoragePolicy(ExternalStorageMountPolicy policy) { // No locking - CopyOnWriteArrayList Loading Loading @@ -3666,6 +3671,21 @@ class StorageManagerService extends IStorageManager.Stub return mountMode; } @Override public void addResetListener(StorageManagerInternal.ResetListener listener) { synchronized (mResetListeners) { mResetListeners.add(listener); } } public void onReset(IVold vold) { synchronized (mResetListeners) { for (StorageManagerInternal.ResetListener listener : mResetListeners) { listener.onReset(vold); } } } public boolean hasExternalStorage(int uid, String packageName) { // No need to check for system uid. This avoids a deadlock between // PackageManagerService and AppOpsService. Loading