From 0989e386fa077bfd673594384ab8a0300bcb477f Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Tue, 13 Mar 2018 10:26:47 +0900 Subject: Allow apps in /odm/app and /odm/priv-app (2/2) /odm is another vendor partition other than /vendor. So, duplicating remaining code fragments about /vendor/[app|priv-app] for /odm. Bug: 71366495 Test: m -j Change-Id: Ic0db416a02e3fa9a8ae03348449f68062e3d73b3 Teet: cd frameworks/base/tests/OdmApps; atest . --- .../java/com/android/server/pm/PackageManagerService.java | 13 ++++++++++--- .../server/pm/permission/DefaultPermissionGrantPolicy.java | 4 ++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 707184fcfb97..f0922b341a22 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2877,7 +2877,8 @@ public class PackageManagerService extends IPackageManager.Stub rescanFlags = scanFlags | SCAN_AS_SYSTEM; - } else if (FileUtils.contains(privilegedVendorAppDir, scanFile)) { + } else if (FileUtils.contains(privilegedVendorAppDir, scanFile) + || FileUtils.contains(privilegedOdmAppDir, scanFile)) { reparseFlags = mDefParseFlags | PackageParser.PARSE_IS_SYSTEM_DIR; @@ -2886,7 +2887,8 @@ public class PackageManagerService extends IPackageManager.Stub | SCAN_AS_SYSTEM | SCAN_AS_VENDOR | SCAN_AS_PRIVILEGED; - } else if (FileUtils.contains(vendorAppDir, scanFile)) { + } else if (FileUtils.contains(vendorAppDir, scanFile) + || FileUtils.contains(odmAppDir, scanFile)) { reparseFlags = mDefParseFlags | PackageParser.PARSE_IS_SYSTEM_DIR; @@ -11788,6 +11790,8 @@ public class PackageManagerService extends IPackageManager.Stub codeRoot = Environment.getOemDirectory(); } else if (FileUtils.contains(Environment.getVendorDirectory(), codePath)) { codeRoot = Environment.getVendorDirectory(); + } else if (FileUtils.contains(Environment.getOdmDirectory(), codePath)) { + codeRoot = Environment.getOdmDirectory(); } else if (FileUtils.contains(Environment.getProductDirectory(), codePath)) { codeRoot = Environment.getProductDirectory(); } else { @@ -18217,9 +18221,11 @@ public class PackageManagerService extends IPackageManager.Stub try { final File privilegedAppDir = new File(Environment.getRootDirectory(), "priv-app"); final File privilegedVendorAppDir = new File(Environment.getVendorDirectory(), "priv-app"); + final File privilegedOdmAppDir = new File(Environment.getOdmDirectory(), "priv-app"); final File privilegedProductAppDir = new File(Environment.getProductDirectory(), "priv-app"); return path.startsWith(privilegedAppDir.getCanonicalPath()) || path.startsWith(privilegedVendorAppDir.getCanonicalPath()) + || path.startsWith(privilegedOdmAppDir.getCanonicalPath()) || path.startsWith(privilegedProductAppDir.getCanonicalPath()); } catch (IOException e) { Slog.e(TAG, "Unable to access code path " + path); @@ -18238,7 +18244,8 @@ public class PackageManagerService extends IPackageManager.Stub static boolean locationIsVendor(String path) { try { - return path.startsWith(Environment.getVendorDirectory().getCanonicalPath()); + return path.startsWith(Environment.getVendorDirectory().getCanonicalPath()) + || path.startsWith(Environment.getOdmDirectory().getCanonicalPath()); } catch (IOException e) { Slog.e(TAG, "Unable to access code path " + path); } diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index 4abcce16f777..bf85f30d092e 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -1240,6 +1240,10 @@ public final class DefaultPermissionGrantPolicy { if (dir.isDirectory() && dir.canRead()) { Collections.addAll(ret, dir.listFiles()); } + dir = new File(Environment.getOdmDirectory(), "etc/default-permissions"); + if (dir.isDirectory() && dir.canRead()) { + Collections.addAll(ret, dir.listFiles()); + } dir = new File(Environment.getProductDirectory(), "etc/default-permissions"); if (dir.isDirectory() && dir.canRead()) { Collections.addAll(ret, dir.listFiles()); -- cgit v1.2.3-59-g8ed1b