diff options
| author | 2017-08-18 21:33:46 +0000 | |
|---|---|---|
| committer | 2017-08-18 21:33:46 +0000 | |
| commit | 1327cdc53de0d557bddeac8dabd07a2d197def3b (patch) | |
| tree | e5f475525a88b217d706120ddf53a4d265651624 | |
| parent | edda7ebdd98676e503d44a98b18756d28e484290 (diff) | |
| parent | 8558ec7dbe7733a36b621b24309e7a9dd9deec8c (diff) | |
Merge "Don't resume activity if user is locked and encryption is unsupported" into oc-mr1-dev
3 files changed, 14 insertions, 2 deletions
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 72075a515e02..2aa3d09dd479 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -1508,6 +1508,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return (privateFlags & ApplicationInfo.PRIVATE_FLAG_PARTIALLY_DIRECT_BOOT_AWARE) != 0; } + /** @hide */ + public boolean isEncryptionAware() { + return isDirectBootAware() || isPartiallyDirectBootAware(); + } + /** * @hide */ diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 74bdf6f3dae4..995ac3726744 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -146,6 +146,7 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.Trace; import android.os.UserHandle; +import android.os.storage.StorageManager; import android.service.voice.IVoiceInteractionSession; import android.util.EventLog; import android.util.Log; @@ -2011,6 +2012,13 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo /** Checks whether the activity should be shown for current user. */ public boolean okToShowLocked() { + // We cannot show activities when the device is locked and the application is not + // encryption aware. + if (!StorageManager.isUserKeyUnlocked(userId) + && !info.applicationInfo.isEncryptionAware()) { + return false; + } + return (info.flags & FLAG_SHOW_FOR_ALL_USERS) != 0 || (mStackSupervisor.isCurrentProfileLocked(userId) && service.mUserController.isUserRunningLocked(userId, 0 /* flags */)); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 43e0affb590a..4ff4885db42e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -3884,8 +3884,7 @@ public class PackageManagerService extends IPackageManager.Stub throw new SecurityException("Package " + packageName + " is currently frozen!"); } - if (!userKeyUnlocked && !(ps.pkg.applicationInfo.isDirectBootAware() - || ps.pkg.applicationInfo.isPartiallyDirectBootAware())) { + if (!userKeyUnlocked && !ps.pkg.applicationInfo.isEncryptionAware()) { throw new SecurityException("Package " + packageName + " is not encryption aware!"); } } |