Loading services/java/com/android/server/MountService.java +32 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,8 @@ class MountService extends IMountService.Stub private static final String VOLD_TAG = "VoldConnector"; protected static final int MAX_OBBS = 8; /* * Internal vold volume state constants */ Loading Loading @@ -154,6 +156,7 @@ class MountService extends IMountService.Stub * Mounted OBB tracking information. Used to track the current state of all * OBBs. */ final private Map<Integer, Integer> mObbUidUsage = new HashMap<Integer, Integer>(); final private Map<IObbActionListener, List<ObbState>> mObbMounts = new HashMap<IObbActionListener, List<ObbState>>(); final private Map<String, ObbState> mObbPathToStateMap = new HashMap<String, ObbState>(); Loading Loading @@ -1576,6 +1579,12 @@ class MountService extends IMountService.Stub } final int callerUid = Binder.getCallingUid(); final Integer uidUsage = mObbUidUsage.get(callerUid); if (uidUsage != null && uidUsage > MAX_OBBS) { throw new IllegalStateException("Maximum number of OBBs mounted!"); } obbState = new ObbState(filename, token, callerUid); addObbState(obbState); } Loading Loading @@ -1637,6 +1646,15 @@ class MountService extends IMountService.Stub } obbStates.add(obbState); mObbPathToStateMap.put(obbState.filename, obbState); // Track the number of OBBs used by this UID. final int uid = obbState.callerUid; final Integer uidUsage = mObbUidUsage.get(uid); if (uidUsage == null) { mObbUidUsage.put(uid, 1); } else { mObbUidUsage.put(uid, uidUsage + 1); } } } Loading @@ -1650,6 +1668,20 @@ class MountService extends IMountService.Stub mObbMounts.remove(obbState.token); } mObbPathToStateMap.remove(obbState.filename); // Track the number of OBBs used by this UID. final int uid = obbState.callerUid; final Integer uidUsage = mObbUidUsage.get(uid); if (uidUsage == null) { Slog.e(TAG, "Called removeObbState for UID that isn't in map: " + uid); } else { final int newUsage = uidUsage - 1; if (newUsage == 0) { mObbUidUsage.remove(uid); } else { mObbUidUsage.put(uid, newUsage); } } } } Loading Loading
services/java/com/android/server/MountService.java +32 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,8 @@ class MountService extends IMountService.Stub private static final String VOLD_TAG = "VoldConnector"; protected static final int MAX_OBBS = 8; /* * Internal vold volume state constants */ Loading Loading @@ -154,6 +156,7 @@ class MountService extends IMountService.Stub * Mounted OBB tracking information. Used to track the current state of all * OBBs. */ final private Map<Integer, Integer> mObbUidUsage = new HashMap<Integer, Integer>(); final private Map<IObbActionListener, List<ObbState>> mObbMounts = new HashMap<IObbActionListener, List<ObbState>>(); final private Map<String, ObbState> mObbPathToStateMap = new HashMap<String, ObbState>(); Loading Loading @@ -1576,6 +1579,12 @@ class MountService extends IMountService.Stub } final int callerUid = Binder.getCallingUid(); final Integer uidUsage = mObbUidUsage.get(callerUid); if (uidUsage != null && uidUsage > MAX_OBBS) { throw new IllegalStateException("Maximum number of OBBs mounted!"); } obbState = new ObbState(filename, token, callerUid); addObbState(obbState); } Loading Loading @@ -1637,6 +1646,15 @@ class MountService extends IMountService.Stub } obbStates.add(obbState); mObbPathToStateMap.put(obbState.filename, obbState); // Track the number of OBBs used by this UID. final int uid = obbState.callerUid; final Integer uidUsage = mObbUidUsage.get(uid); if (uidUsage == null) { mObbUidUsage.put(uid, 1); } else { mObbUidUsage.put(uid, uidUsage + 1); } } } Loading @@ -1650,6 +1668,20 @@ class MountService extends IMountService.Stub mObbMounts.remove(obbState.token); } mObbPathToStateMap.remove(obbState.filename); // Track the number of OBBs used by this UID. final int uid = obbState.callerUid; final Integer uidUsage = mObbUidUsage.get(uid); if (uidUsage == null) { Slog.e(TAG, "Called removeObbState for UID that isn't in map: " + uid); } else { final int newUsage = uidUsage - 1; if (newUsage == 0) { mObbUidUsage.remove(uid); } else { mObbUidUsage.put(uid, newUsage); } } } } Loading