summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Christopher Tate <ctate@google.com> 2013-07-12 20:18:55 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2013-07-12 20:18:55 +0000
commit70d3dd4f796c6be76ed3e18be400a261c5e01343 (patch)
tree6f3d0cc03c2944b1de5ae06a95d8aad19b1a0e1a
parent2dafbe78c12252073d94ba954efdc107d0d2deba (diff)
parent409bb36a1388d7f8c869a4b8cd07e819755e983f (diff)
Merge "Out-of-band apk pushes to the privileged install dir"
-rwxr-xr-xservices/java/com/android/server/pm/PackageManagerService.java30
1 files changed, 18 insertions, 12 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 8fde010d9f78..6f572613effa 100755
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -1246,7 +1246,7 @@ public class PackageManagerService extends IPackageManager.Stub {
// Find base frameworks (resource packages without code).
mFrameworkInstallObserver = new AppDirObserver(
- mFrameworkDir.getPath(), OBSERVER_EVENTS, true);
+ mFrameworkDir.getPath(), OBSERVER_EVENTS, true, false);
mFrameworkInstallObserver.startWatching();
scanDirLI(mFrameworkDir, PackageParser.PARSE_IS_SYSTEM
| PackageParser.PARSE_IS_SYSTEM_DIR,
@@ -1255,7 +1255,7 @@ public class PackageManagerService extends IPackageManager.Stub {
// Collected privileged system packages.
mPrivilegedAppDir = new File(Environment.getRootDirectory(), "priv-app");
mPrivilegedInstallObserver = new AppDirObserver(
- mPrivilegedAppDir.getPath(), OBSERVER_EVENTS, true);
+ mPrivilegedAppDir.getPath(), OBSERVER_EVENTS, true, true);
mPrivilegedInstallObserver.startWatching();
scanDirLI(mPrivilegedAppDir, PackageParser.PARSE_IS_SYSTEM
| PackageParser.PARSE_IS_SYSTEM_DIR
@@ -1264,7 +1264,7 @@ public class PackageManagerService extends IPackageManager.Stub {
// Collect ordinary system packages.
mSystemAppDir = new File(Environment.getRootDirectory(), "app");
mSystemInstallObserver = new AppDirObserver(
- mSystemAppDir.getPath(), OBSERVER_EVENTS, true);
+ mSystemAppDir.getPath(), OBSERVER_EVENTS, true, false);
mSystemInstallObserver.startWatching();
scanDirLI(mSystemAppDir, PackageParser.PARSE_IS_SYSTEM
| PackageParser.PARSE_IS_SYSTEM_DIR, scanMode, 0);
@@ -1272,7 +1272,7 @@ public class PackageManagerService extends IPackageManager.Stub {
// Collect all vendor packages.
mVendorAppDir = new File("/vendor/app");
mVendorInstallObserver = new AppDirObserver(
- mVendorAppDir.getPath(), OBSERVER_EVENTS, true);
+ mVendorAppDir.getPath(), OBSERVER_EVENTS, true, false);
mVendorInstallObserver.startWatching();
scanDirLI(mVendorAppDir, PackageParser.PARSE_IS_SYSTEM
| PackageParser.PARSE_IS_SYSTEM_DIR, scanMode, 0);
@@ -1345,12 +1345,12 @@ public class PackageManagerService extends IPackageManager.Stub {
EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_PMS_DATA_SCAN_START,
SystemClock.uptimeMillis());
mAppInstallObserver = new AppDirObserver(
- mAppInstallDir.getPath(), OBSERVER_EVENTS, false);
+ mAppInstallDir.getPath(), OBSERVER_EVENTS, false, false);
mAppInstallObserver.startWatching();
scanDirLI(mAppInstallDir, 0, scanMode, 0);
mDrmAppInstallObserver = new AppDirObserver(
- mDrmAppPrivateInstallDir.getPath(), OBSERVER_EVENTS, false);
+ mDrmAppPrivateInstallDir.getPath(), OBSERVER_EVENTS, false, false);
mDrmAppInstallObserver.startWatching();
scanDirLI(mDrmAppPrivateInstallDir, PackageParser.PARSE_FORWARD_LOCK,
scanMode, 0);
@@ -5972,10 +5972,11 @@ public class PackageManagerService extends IPackageManager.Stub {
}
private final class AppDirObserver extends FileObserver {
- public AppDirObserver(String path, int mask, boolean isrom) {
+ public AppDirObserver(String path, int mask, boolean isrom, boolean isPrivileged) {
super(path, mask);
mRootDir = path;
mIsRom = isrom;
+ mIsPrivileged = isPrivileged;
}
public void onEvent(int event, String path) {
@@ -6036,11 +6037,15 @@ public class PackageManagerService extends IPackageManager.Stub {
if ((event&ADD_EVENTS) != 0) {
if (p == null) {
if (DEBUG_INSTALL) Slog.d(TAG, "New file appeared: " + fullPath);
- p = scanPackageLI(fullPath,
- (mIsRom ? PackageParser.PARSE_IS_SYSTEM
- | PackageParser.PARSE_IS_SYSTEM_DIR: 0) |
- PackageParser.PARSE_CHATTY |
- PackageParser.PARSE_MUST_BE_APK,
+ int flags = PackageParser.PARSE_CHATTY | PackageParser.PARSE_MUST_BE_APK;
+ if (mIsRom) {
+ flags |= PackageParser.PARSE_IS_SYSTEM
+ | PackageParser.PARSE_IS_SYSTEM_DIR;
+ if (mIsPrivileged) {
+ flags |= PackageParser.PARSE_IS_PRIVILEGED;
+ }
+ }
+ p = scanPackageLI(fullPath, flags,
SCAN_MONITOR | SCAN_NO_PATHS | SCAN_UPDATE_TIME,
System.currentTimeMillis(), UserHandle.ALL);
if (p != null) {
@@ -6083,6 +6088,7 @@ public class PackageManagerService extends IPackageManager.Stub {
private final String mRootDir;
private final boolean mIsRom;
+ private final boolean mIsPrivileged;
}
/* Called when a downloaded package installation has been confirmed by the user */