summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2011-01-31 16:36:32 -0800
committerKenny Root <kroot@google.com>2011-01-31 16:59:12 -0800
commit4c3915a0f73e51d0c70d93fe5b9ed125d5739b93 (patch)
treec2eb0fe88340b9820d32c9312a3ba422ff1bc324
parentcb9d4d28be41c72a8c6f254bf8fdaac5f41e0b6f (diff)
downloadframeworks_base-4c3915a0f73e51d0c70d93fe5b9ed125d5739b93.zip
frameworks_base-4c3915a0f73e51d0c70d93fe5b9ed125d5739b93.tar.gz
frameworks_base-4c3915a0f73e51d0c70d93fe5b9ed125d5739b93.tar.bz2
Do not check features in PackageManagerService
PackageManagerService shouldn't check features that a package declares that it uses because this will cause problems in the future when we add more features that older phones didn't explicitly declare. We must rely on markets to know about phones and filter them for us to avoid this situation. Bug: 3409434 Change-Id: I419a5b936be3572b83a485081a6c81b2f1c8741c
-rw-r--r--core/tests/coretests/res/raw/install_uses_featurebin3198 -> 3178 bytes
-rwxr-xr-xcore/tests/coretests/src/android/content/pm/PackageManagerTests.java15
-rw-r--r--services/java/com/android/server/PackageManagerService.java20
3 files changed, 12 insertions, 23 deletions
diff --git a/core/tests/coretests/res/raw/install_uses_feature b/core/tests/coretests/res/raw/install_uses_feature
index 769a246..eeeb309 100644
--- a/core/tests/coretests/res/raw/install_uses_feature
+++ b/core/tests/coretests/res/raw/install_uses_feature
Binary files differ
diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
index 0e65df5..7af64e4 100755
--- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
+++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
@@ -3098,10 +3098,19 @@ public class PackageManagerTests extends AndroidTestCase {
fail, retCode, PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
}
+ /**
+ * Unknown features should be allowed to install. This prevents older phones
+ * from rejecting new packages that specify features that didn't exist when
+ * an older phone existed. All older phones are assumed to have those
+ * features.
+ * <p>
+ * Right now we allow all packages to be installed regardless of their
+ * features.
+ */
@LargeTest
- public void testUsesFeatureMissingFeature() {
- int retCode = PackageManager.INSTALL_FAILED_MISSING_FEATURE;
- installFromRawResource("install.apk", R.raw.install_uses_feature, 0, true, true, retCode,
+ public void testUsesFeatureUnknownFeature() {
+ int retCode = PackageManager.INSTALL_SUCCEEDED;
+ installFromRawResource("install.apk", R.raw.install_uses_feature, 0, true, false, retCode,
PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
}
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index d75aef6..f3b5f4b 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -2924,26 +2924,6 @@ class PackageManagerService extends IPackageManager.Stub {
}
}
- if (pkg.reqFeatures != null) {
- int N = pkg.reqFeatures.size();
- for (int i = 0; i < N; i++) {
- FeatureInfo fi = pkg.reqFeatures.get(i);
- if ((fi.flags & FeatureInfo.FLAG_REQUIRED) == 0) {
- // Don't care.
- continue;
- }
-
- if (fi.name != null) {
- if (mAvailableFeatures.get(fi.name) == null) {
- Slog.e(TAG, "Package " + pkg.packageName
- + " requires unavailable feature " + fi.name + "; failing!");
- mLastScanError = PackageManager.INSTALL_FAILED_MISSING_FEATURE;
- return null;
- }
- }
- }
- }
-
if (pkg.mSharedUserId != null) {
suid = mSettings.getSharedUserLP(pkg.mSharedUserId,
pkg.applicationInfo.flags, true);