Switch default install location to unspecified.

Add a new install location unspecified for backward compatibility.
There is not much difference between policies auto and unspecified.
But we dont have to make any code changes in PackageParser based
on our preference for install location.
Add tests

Change-Id: I563238133261d911d08fbc66344687b7dfc870b1
This commit is contained in:
Suchi Amalapurapu
2010-03-18 11:38:35 -07:00
parent b82ac6bf37
commit 90d8ee650b
4 changed files with 103 additions and 67 deletions

View File

@@ -4701,23 +4701,22 @@ class PackageManagerService extends IPackageManager.Stub {
}
return PackageHelper.RECOMMEND_INSTALL_INTERNAL;
} else {
// When replacing apps make sure we honour
// the existing app location if not overwritten by other options
boolean prevOnSd = (pkg.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0;
if (onSd) {
// Install flag overrides everything.
return PackageHelper.RECOMMEND_INSTALL_EXTERNAL;
}
// If current upgrade does not specify install location.
// If current upgrade specifies particular preference
if (installLocation == PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY) {
// Application explicitly specified internal.
return PackageHelper.RECOMMEND_INSTALL_INTERNAL;
} else if (installLocation == PackageInfo.INSTALL_LOCATION_PREFER_EXTERNAL) {
// App explictly prefers external. Let policy decide
} else if (installLocation == PackageInfo.INSTALL_LOCATION_AUTO) {
} else {
// Prefer previous location
return prevOnSd ? PackageHelper.RECOMMEND_INSTALL_EXTERNAL:
PackageHelper.RECOMMEND_INSTALL_INTERNAL;
if ((pkg.applicationInfo.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
return PackageHelper.RECOMMEND_INSTALL_EXTERNAL;
}
return PackageHelper.RECOMMEND_INSTALL_INTERNAL;
}
}
} else {