summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@google.com> 2016-01-28 18:20:03 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-01-28 18:20:03 +0000
commitec498e8ebedbfbb614808ca1cd4455886fa80af1 (patch)
treeb7a9e003260f3df039f09a94ddd4af466485b13e
parenta4ff39903908f2da53d2b326193027ebf0fb1ba2 (diff)
parentb92b05bb4bcaa6f7869128e925d0331eee62e4da (diff)
Merge "Report FBE through a feature string."
-rw-r--r--core/java/android/content/pm/PackageManager.java5
-rw-r--r--services/core/java/com/android/server/DiskStatsService.java5
-rw-r--r--services/core/java/com/android/server/SystemConfig.java44
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java1
4 files changed, 42 insertions, 13 deletions
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 476dc46a2118..aaa02bd9ce8e 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -2017,6 +2017,11 @@ public abstract class PackageManager {
public static final String FEATURE_SECURELY_REMOVES_USERS
= "android.software.securely_removes_users";
+ /** {@hide} */
+ @SdkConstant(SdkConstantType.FEATURE)
+ public static final String FEATURE_FILE_BASED_ENCRYPTION
+ = "android.software.file_based_encryption";
+
/**
* Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}:
* The device has a full implementation of the android.webkit.* APIs. Devices
diff --git a/services/core/java/com/android/server/DiskStatsService.java b/services/core/java/com/android/server/DiskStatsService.java
index bc12fc5c44e0..93131488f509 100644
--- a/services/core/java/com/android/server/DiskStatsService.java
+++ b/services/core/java/com/android/server/DiskStatsService.java
@@ -21,6 +21,7 @@ import android.os.Binder;
import android.os.Environment;
import android.os.StatFs;
import android.os.SystemClock;
+import android.os.storage.StorageManager;
import java.io.File;
import java.io.FileDescriptor;
@@ -79,6 +80,10 @@ public class DiskStatsService extends Binder {
reportFreeSpace(Environment.getDownloadCacheDirectory(), "Cache", pw);
reportFreeSpace(new File("/system"), "System", pw);
+ if (StorageManager.isNativeFileBasedEncryptionEnabled()) {
+ pw.println("File-based Encryption: true");
+ }
+
// TODO: Read /proc/yaffs and report interesting values;
// add configurable (through args) performance test parameters.
}
diff --git a/services/core/java/com/android/server/SystemConfig.java b/services/core/java/com/android/server/SystemConfig.java
index 4dc46ac63643..5aba22d5c4c7 100644
--- a/services/core/java/com/android/server/SystemConfig.java
+++ b/services/core/java/com/android/server/SystemConfig.java
@@ -16,20 +16,24 @@
package com.android.server;
+import static com.android.internal.util.ArrayUtils.appendInt;
+
import android.app.ActivityManager;
import android.content.pm.FeatureInfo;
-import android.os.*;
+import android.content.pm.PackageManager;
+import android.os.Environment;
import android.os.Process;
+import android.os.storage.StorageManager;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Slog;
import android.util.SparseArray;
import android.util.Xml;
-import libcore.io.IoUtils;
-
import com.android.internal.util.XmlUtils;
+import libcore.io.IoUtils;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -38,8 +42,6 @@ import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
-import static com.android.internal.util.ArrayUtils.appendInt;
-
/**
* Loads global system configuration info.
*/
@@ -351,10 +353,7 @@ public class SystemConfig {
Slog.w(TAG, "<feature> without name in " + permFile + " at "
+ parser.getPositionDescription());
} else if (allowed) {
- //Log.i(TAG, "Got feature " + fname);
- FeatureInfo fi = new FeatureInfo();
- fi.name = fname;
- mAvailableFeatures.put(fname, fi);
+ addFeature(fname);
}
XmlUtils.skipCurrentTag(parser);
continue;
@@ -443,10 +442,29 @@ public class SystemConfig {
IoUtils.closeQuietly(permReader);
}
- for (String fname : mUnavailableFeatures) {
- if (mAvailableFeatures.remove(fname) != null) {
- Slog.d(TAG, "Removed unavailable feature " + fname);
- }
+ // Some devices can be field-converted to FBE, so offer to splice in
+ // those features if not already defined by the static config
+ if (StorageManager.isNativeFileBasedEncryptionEnabled()) {
+ addFeature(PackageManager.FEATURE_FILE_BASED_ENCRYPTION);
+ addFeature(PackageManager.FEATURE_SECURELY_REMOVES_USERS);
+ }
+
+ for (String featureName : mUnavailableFeatures) {
+ removeFeature(featureName);
+ }
+ }
+
+ private void addFeature(String featureName) {
+ if (!mAvailableFeatures.containsKey(featureName)) {
+ final FeatureInfo fi = new FeatureInfo();
+ fi.name = featureName;
+ mAvailableFeatures.put(featureName, fi);
+ }
+ }
+
+ private void removeFeature(String featureName) {
+ if (mAvailableFeatures.remove(featureName) != null) {
+ Slog.d(TAG, "Removed unavailable feature " + featureName);
}
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index d11da792e9d6..c3f20eb8afe1 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -76,6 +76,7 @@ import static android.os.Process.SYSTEM_UID;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
import static android.system.OsConstants.O_CREAT;
import static android.system.OsConstants.O_RDWR;
+
import static com.android.internal.app.IntentForwarderActivity.FORWARD_INTENT_TO_MANAGED_PROFILE;
import static com.android.internal.app.IntentForwarderActivity.FORWARD_INTENT_TO_PARENT;
import static com.android.internal.content.NativeLibraryHelper.LIB64_DIR_NAME;