diff options
| author | 2016-04-22 21:03:28 +0000 | |
|---|---|---|
| committer | 2016-04-22 21:03:30 +0000 | |
| commit | 5a91b615232374084a45752d7c09c25265e263ed (patch) | |
| tree | d3c9a02f45112af2449e565726ac5236e3e8e9d8 | |
| parent | 7981e8ff6509769a590f15b440f989437d732be5 (diff) | |
| parent | a9c2500a6863dabdd786f17a25ce0bf3683109a2 (diff) | |
Merge "Disallow disable of the system shared libs." into nyc-dev
7 files changed, 59 insertions, 9 deletions
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index bf56f2513257..87511eed93e6 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -441,7 +441,7 @@ public class ApplicationPackageManager extends PackageManager { /** @hide */ @Override - public @Nullable String getServicesSystemSharedLibraryPackageName() { + public @NonNull String getServicesSystemSharedLibraryPackageName() { try { return mPM.getServicesSystemSharedLibraryPackageName(); } catch (RemoteException e) { @@ -449,6 +449,17 @@ public class ApplicationPackageManager extends PackageManager { } } + /** + * @hide + */ + public @NonNull String getSharedSystemSharedLibraryPackageName() { + try { + return mPM.getSharedSystemSharedLibraryPackageName(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + @Override @SuppressWarnings("unchecked") public FeatureInfo[] getSystemAvailableFeatures() { diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 0e0be206971c..0c793120d0a8 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -567,6 +567,7 @@ interface IPackageManager { boolean setRequiredForSystemUser(String packageName, boolean systemUserApp); String getServicesSystemSharedLibraryPackageName(); + String getSharedSystemSharedLibraryPackageName(); boolean isPackageDeviceAdminOnAnyUser(String packageName); diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 3d2ab95b224a..cf3e893d7d7a 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -3573,7 +3573,16 @@ public abstract class PackageManager { * * @hide */ - public abstract @Nullable String getServicesSystemSharedLibraryPackageName(); + public abstract @NonNull String getServicesSystemSharedLibraryPackageName(); + + /** + * Get the name of the package hosting the shared components shared library. + * + * @return The library host package. + * + * @hide + */ + public abstract @NonNull String getSharedSystemSharedLibraryPackageName(); /** * Get a list of features that are available on the diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index ca0b86a52e4f..d98f1a4740ad 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -20,6 +20,10 @@ import com.android.settingslib.drawable.UserIconDrawable; import java.text.NumberFormat; public class Utils { + private static Signature[] sSystemSignature; + private static String sPermissionControllerPackageName; + private static String sServicesSystemSharedLibPackageName; + private static String sSharedSystemSharedLibPackageName; /** * Return string resource that best describes combination of tethering @@ -161,15 +165,19 @@ public class Utils { if (sPermissionControllerPackageName == null) { sPermissionControllerPackageName = pm.getPermissionControllerPackageName(); } + if (sServicesSystemSharedLibPackageName == null) { + sServicesSystemSharedLibPackageName = pm.getServicesSystemSharedLibraryPackageName(); + } + if (sSharedSystemSharedLibPackageName == null) { + sSharedSystemSharedLibPackageName = pm.getSharedSystemSharedLibraryPackageName(); + } return (sSystemSignature[0] != null && sSystemSignature[0].equals(getFirstSignature(pkg))) - || (sPermissionControllerPackageName != null - && sPermissionControllerPackageName.equals(pkg.packageName)); + || pkg.packageName.equals(sPermissionControllerPackageName) + || pkg.packageName.equals(sServicesSystemSharedLibPackageName) + || pkg.packageName.equals(sSharedSystemSharedLibPackageName); } - private static Signature[] sSystemSignature; - private static String sPermissionControllerPackageName; - private static Signature getFirstSignature(PackageInfo pkg) { if (pkg != null && pkg.signatures != null && pkg.signatures.length > 0) { return pkg.signatures[0]; diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index f285dec3ed5f..f21966d66000 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1104,6 +1104,7 @@ public class PackageManagerService extends IPackageManager.Stub { final @NonNull String mRequiredInstallerPackage; final @Nullable String mSetupWizardPackage; final @NonNull String mServicesSystemSharedLibraryPackageName; + final @NonNull String mSharedSystemSharedLibraryPackageName; private final PackageUsage mPackageUsage = new PackageUsage(); @@ -2712,7 +2713,7 @@ public class PackageManagerService extends IPackageManager.Stub { mIntentFilterVerifierComponent); mServicesSystemSharedLibraryPackageName = getRequiredSharedLibraryLPr( PackageManager.SYSTEM_SHARED_LIBRARY_SERVICES); - getRequiredSharedLibraryLPr( + mSharedSystemSharedLibraryPackageName = getRequiredSharedLibraryLPr( PackageManager.SYSTEM_SHARED_LIBRARY_SHARED); } else { mRequiredVerifierPackage = null; @@ -2720,6 +2721,7 @@ public class PackageManagerService extends IPackageManager.Stub { mIntentFilterVerifierComponent = null; mIntentFilterVerifier = null; mServicesSystemSharedLibraryPackageName = null; + mSharedSystemSharedLibraryPackageName = null; } mInstallerService = new PackageInstallerService(context, this); @@ -3695,6 +3697,13 @@ public class PackageManagerService extends IPackageManager.Stub { } @Override + public @NonNull String getSharedSystemSharedLibraryPackageName() { + synchronized (mPackages) { + return mSharedSystemSharedLibraryPackageName; + } + } + + @Override public @NonNull ParceledListSlice<FeatureInfo> getSystemAvailableFeatures() { synchronized (mPackages) { final ArrayList<FeatureInfo> res = new ArrayList<>(mAvailableFeatures.values()); diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index 2e5ed3fd3520..330dbab5bab3 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -822,7 +822,13 @@ public class MockPackageManager extends PackageManager { /** @hide */ @Override - public @Nullable String getServicesSystemSharedLibraryPackageName() { + public @NonNull String getServicesSystemSharedLibraryPackageName() { + throw new UnsupportedOperationException(); + } + + /** @hide */ + @Override + public @NonNull String getSharedSystemSharedLibraryPackageName() { throw new UnsupportedOperationException(); } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java index 0a64b63bfc64..b3ed9e1a0164 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java @@ -49,6 +49,7 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Handler; +import android.os.RemoteException; import android.os.UserHandle; import android.os.storage.VolumeInfo; import java.util.List; @@ -311,6 +312,11 @@ public class BridgePackageManager extends PackageManager { } @Override + public @NonNull String getSharedSystemSharedLibraryPackageName() { + return null; + } + + @Override public FeatureInfo[] getSystemAvailableFeatures() { return new FeatureInfo[0]; } |