summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Svetoslav Ganov <svetoslavganov@google.com> 2016-04-22 21:03:28 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-04-22 21:03:30 +0000
commit5a91b615232374084a45752d7c09c25265e263ed (patch)
treed3c9a02f45112af2449e565726ac5236e3e8e9d8
parent7981e8ff6509769a590f15b440f989437d732be5 (diff)
parenta9c2500a6863dabdd786f17a25ce0bf3683109a2 (diff)
Merge "Disallow disable of the system shared libs." into nyc-dev
-rw-r--r--core/java/android/app/ApplicationPackageManager.java13
-rw-r--r--core/java/android/content/pm/IPackageManager.aidl1
-rw-r--r--core/java/android/content/pm/PackageManager.java11
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/Utils.java18
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java11
-rw-r--r--test-runner/src/android/test/mock/MockPackageManager.java8
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java6
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];
}