Grant permissions to apps on sd when enabling/disabling packages.

Change-Id: I0f011bd4a3348ccd46fd7ae9765edf8933b94142
This commit is contained in:
Suchi Amalapurapu
2010-03-19 11:55:29 -07:00
parent b05ec11868
commit ebb83ade1e
2 changed files with 29 additions and 0 deletions

View File

@@ -9552,6 +9552,8 @@ class PackageManagerService extends IPackageManager.Stub {
// Scan the package
if (scanPackageLI(pkg, parseFlags, SCAN_MONITOR) != null) {
synchronized (mPackages) {
updatePermissionsLP(pkg.packageName, pkg,
pkg.permissions.size() > 0, false);
retCode = PackageManager.INSTALL_SUCCEEDED;
pkgList.add(pkg.packageName);
// Post process args

View File

@@ -2156,6 +2156,33 @@ public class PackageManagerTests extends AndroidTestCase {
}
}
/*
* Ensure that permissions are properly declared.
*/
public void testInstallOnSdPermissionsUnmount() {
InstallParams ip = null;
boolean origMediaState = getMediaState();
try {
// **: Upon installing a package, are its declared permissions published?
int iFlags = PackageManager.INSTALL_INTERNAL;
int iApk = R.raw.install_decl_perm;
ip = installFromRawResource("install.apk", iApk,
iFlags, false,
false, -1, PackageInfo.INSTALL_LOCATION_INTERNAL_ONLY);
assertInstall(ip.pkg, iFlags, ip.pkg.installLocation);
assertPermissions(BASE_PERMISSIONS_DEFINED);
// Unmount media here
assertTrue(unmountMedia());
// Mount media again
mountMedia();
//Check permissions now
assertPermissions(BASE_PERMISSIONS_DEFINED);
} finally {
if (ip != null) {
cleanUpInstall(ip);
}
}
}
/*---------- Recommended install location tests ----*/
/*
* TODO's