Merge "Fix getTempContainerId()" into gingerbread

This commit is contained in:
Kenny Root
2010-07-28 14:48:40 -07:00
committed by Android (Google) Code Review

View File

@ -188,6 +188,8 @@ class PackageManagerService extends IPackageManager.Stub {
"com.android.defcontainer", "com.android.defcontainer",
"com.android.defcontainer.DefaultContainerService"); "com.android.defcontainer.DefaultContainerService");
static final String mTempContainerPrefix = "smdl2tmp";
final HandlerThread mHandlerThread = new HandlerThread("PackageManager", final HandlerThread mHandlerThread = new HandlerThread("PackageManager",
Process.THREAD_PRIORITY_BACKGROUND); Process.THREAD_PRIORITY_BACKGROUND);
final PackageHandler mHandler; final PackageHandler mHandler;
@ -9549,47 +9551,27 @@ class PackageManagerService extends IPackageManager.Stub {
} }
} }
static String getTempContainerId() { /* package */ static String getTempContainerId() {
String prefix = "smdl2tmp";
int tmpIdx = 1; int tmpIdx = 1;
String list[] = PackageHelper.getSecureContainerList(); String list[] = PackageHelper.getSecureContainerList();
if (list != null) { if (list != null) {
int idx = 0; for (final String name : list) {
int idList[] = new int[MAX_CONTAINERS]; // Ignore null and non-temporary container entries
boolean neverFound = true; if (name == null || !name.startsWith(mTempContainerPrefix)) {
for (String name : list) {
// Ignore null entries
if (name == null) {
continue; continue;
} }
int sidx = name.indexOf(prefix);
if (sidx == -1) { String subStr = name.substring(mTempContainerPrefix.length());
// Not a temp file. just ignore
continue;
}
String subStr = name.substring(sidx + prefix.length());
idList[idx] = -1;
if (subStr != null) {
try { try {
int cid = Integer.parseInt(subStr); int cid = Integer.parseInt(subStr);
idList[idx++] = cid; if (cid >= tmpIdx) {
neverFound = false; tmpIdx = cid + 1;
}
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
} }
} }
} }
if (!neverFound) { return mTempContainerPrefix + tmpIdx;
// Sort idList
Arrays.sort(idList);
for (int j = 1; j <= idList.length; j++) {
if (idList[j-1] != j) {
tmpIdx = j;
break;
}
}
}
}
return prefix + tmpIdx;
} }
/* /*