diff options
author | Vinod Krishnan <vinodkrishnan@google.com> | 2016-07-05 19:02:00 -0700 |
---|---|---|
committer | Vinod Krishnan <vinodkrishnan@google.com> | 2016-07-06 14:50:35 -0700 |
commit | 3947c8d14e5a3383762a5cf2d029a3327e8c5fde (patch) | |
tree | 6b0408bbd1a3a73c29eb21db43639620d2d387a3 /src | |
parent | 8321e0fdc7562b08b036c07d7576cba0bf3e644f (diff) | |
download | android_packages_apps_PackageInstaller-3947c8d14e5a3383762a5cf2d029a3327e8c5fde.tar.gz android_packages_apps_PackageInstaller-3947c8d14e5a3383762a5cf2d029a3327e8c5fde.tar.bz2 android_packages_apps_PackageInstaller-3947c8d14e5a3383762a5cf2d029a3327e8c5fde.zip |
Do not allow downgrades of embedded microapps
- flag is passed in from https://critique.corp.google.com/#review/126666577
Bug: 29641183
Change-Id: I1becbb446d824331430eb37d99bdbc7a36dd13db
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/packageinstaller/wear/WearPackageArgs.java | 6 | ||||
-rw-r--r-- | src/com/android/packageinstaller/wear/WearPackageInstallerService.java | 18 |
2 files changed, 20 insertions, 4 deletions
diff --git a/src/com/android/packageinstaller/wear/WearPackageArgs.java b/src/com/android/packageinstaller/wear/WearPackageArgs.java index da49192a..2c289b2a 100644 --- a/src/com/android/packageinstaller/wear/WearPackageArgs.java +++ b/src/com/android/packageinstaller/wear/WearPackageArgs.java @@ -45,6 +45,8 @@ public class WearPackageArgs { "com.google.android.clockwork.EXTRA_KEY_COMPANION_DEVICE_VERSION"; private static final String KEY_SHOULD_CHECK_GMS_DEPENDENCY = "com.google.android.clockwork.EXTRA_KEY_SHOULD_CHECK_GMS_DEPENDENCY"; + private static final String KEY_SKIP_IF_LOWER_VERSION = + "com.google.android.clockwork.EXTRA_SKIP_IF_LOWER_VERSION"; public static String getPackageName(Bundle b) { return b.getString(KEY_PACKAGE_NAME); @@ -87,6 +89,10 @@ public class WearPackageArgs { return b.getInt(KEY_START_ID); } + public static boolean skipIfLowerVersion(Bundle b) { + return b.getBoolean(KEY_SKIP_IF_LOWER_VERSION, false); + } + public static Bundle setStartId(Bundle b, int startId) { b.putInt(KEY_START_ID, startId); return b; diff --git a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java index 22e8fc68..2d4744c2 100644 --- a/src/com/android/packageinstaller/wear/WearPackageInstallerService.java +++ b/src/com/android/packageinstaller/wear/WearPackageInstallerService.java @@ -195,13 +195,15 @@ public class WearPackageInstallerService extends Service { int companionSdkVersion = WearPackageArgs.getCompanionSdkVersion(argsBundle); int companionDeviceVersion = WearPackageArgs.getCompanionDeviceVersion(argsBundle); String compressionAlg = WearPackageArgs.getCompressionAlg(argsBundle); + boolean skipIfLowerVersion = WearPackageArgs.skipIfLowerVersion(argsBundle); if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "Installing package: " + packageName + ", assetUri: " + assetUri + ",permUri: " + permUri + ", startId: " + startId + ", checkPerms: " + checkPerms + ", skipIfSameVersion: " + skipIfSameVersion + ", compressionAlg: " + compressionAlg + ", companionSdkVersion: " + - companionSdkVersion + ", companionDeviceVersion: " + companionDeviceVersion); + companionSdkVersion + ", companionDeviceVersion: " + companionDeviceVersion + + ", skipIfLowerVersion: " + skipIfLowerVersion); } final PackageManager pm = getPackageManager(); File tempFile = null; @@ -266,9 +268,17 @@ public class WearPackageInstallerService extends Service { ") is equal to existing app for " + packageName); } } else if (existingPkgInfo.versionCode > pkg.mVersionCode) { - Log.w(TAG, "Version number of new app (" + pkg.mVersionCode + - ") is lower than existing app ( " + existingPkgInfo.versionCode + - ") for " + packageName); + if (skipIfLowerVersion) { + // Starting in Feldspar, we are not going to allow downgrades of any app. + Log.w(TAG, "Version number of new app (" + pkg.mVersionCode + + ") is lower than existing app ( " + existingPkgInfo.versionCode + + ") for " + packageName + "; not installing due to versionCheck"); + return; + } else { + Log.w(TAG, "Version number of new app (" + pkg.mVersionCode + + ") is lower than existing app ( " + existingPkgInfo.versionCode + + ") for " + packageName); + } } // Following the Android Phone model, we should only check for permissions for any |