Loading core/java/android/os/storage/StorageManagerInternal.java +22 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.os.storage; import android.os.IVold; /** * Mount service local interface. * Loading Loading @@ -79,4 +81,24 @@ public abstract class StorageManagerInternal { * @return The mount mode. */ public abstract int getExternalStorageMountMode(int uid, String packageName); /** * 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 @@ -876,6 +876,7 @@ class StorageManagerService extends IStorageManager.Stub mStoraged.onUserStarted(userId); } mVold.onSecureKeyguardStateChanged(mSecureKeyguardShowing); mStorageManagerInternal.onReset(mVold); } catch (Exception e) { Slog.wtf(TAG, e); } Loading Loading @@ -3629,6 +3630,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 @@ -3658,6 +3663,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 +22 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.os.storage; import android.os.IVold; /** * Mount service local interface. * Loading Loading @@ -79,4 +81,24 @@ public abstract class StorageManagerInternal { * @return The mount mode. */ public abstract int getExternalStorageMountMode(int uid, String packageName); /** * 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 @@ -876,6 +876,7 @@ class StorageManagerService extends IStorageManager.Stub mStoraged.onUserStarted(userId); } mVold.onSecureKeyguardStateChanged(mSecureKeyguardShowing); mStorageManagerInternal.onReset(mVold); } catch (Exception e) { Slog.wtf(TAG, e); } Loading Loading @@ -3629,6 +3630,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 @@ -3658,6 +3663,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