summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Bryce Lee <brycelee@google.com> 2017-08-18 21:33:46 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-08-18 21:33:46 +0000
commit1327cdc53de0d557bddeac8dabd07a2d197def3b (patch)
treee5f475525a88b217d706120ddf53a4d265651624
parentedda7ebdd98676e503d44a98b18756d28e484290 (diff)
parent8558ec7dbe7733a36b621b24309e7a9dd9deec8c (diff)
Merge "Don't resume activity if user is locked and encryption is unsupported" into oc-mr1-dev
-rw-r--r--core/java/android/content/pm/ApplicationInfo.java5
-rw-r--r--services/core/java/com/android/server/am/ActivityRecord.java8
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java3
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!");
}
}