Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 103d61b9 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Shift around encryption public APIs."

parents 15c4bbdd 7a30a30e
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -7780,6 +7780,8 @@ package android.content {
    method public abstract int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public abstract deprecated void clearWallpaper() throws java.io.IOException;
    method public abstract android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public abstract android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public abstract android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public abstract android.content.Context createDisplayContext(android.view.Display);
    method public abstract android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public abstract java.lang.String[] databaseList();
@@ -7803,7 +7805,6 @@ package android.content {
    method public final android.content.res.ColorStateList getColorStateList(int);
    method public abstract android.content.ContentResolver getContentResolver();
    method public abstract java.io.File getDatabasePath(java.lang.String);
    method public abstract java.io.File getDeviceEncryptedFilesDir();
    method public abstract java.io.File getDir(java.lang.String, int);
    method public final android.graphics.drawable.Drawable getDrawable(int);
    method public abstract java.io.File getExternalCacheDir();
@@ -7836,6 +7837,8 @@ package android.content {
    method public abstract deprecated int getWallpaperDesiredMinimumHeight();
    method public abstract deprecated int getWallpaperDesiredMinimumWidth();
    method public abstract void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public abstract boolean isCredentialEncrypted();
    method public abstract boolean isDeviceEncrypted();
    method public boolean isRestricted();
    method public final android.content.res.TypedArray obtainStyledAttributes(int[]);
    method public final android.content.res.TypedArray obtainStyledAttributes(int, int[]) throws android.content.res.Resources.NotFoundException;
@@ -7967,6 +7970,8 @@ package android.content {
    method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public deprecated void clearWallpaper() throws java.io.IOException;
    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public android.content.Context createDisplayContext(android.view.Display);
    method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public java.lang.String[] databaseList();
@@ -7989,7 +7994,6 @@ package android.content {
    method public java.io.File getCodeCacheDir();
    method public android.content.ContentResolver getContentResolver();
    method public java.io.File getDatabasePath(java.lang.String);
    method public java.io.File getDeviceEncryptedFilesDir();
    method public java.io.File getDir(java.lang.String, int);
    method public java.io.File getExternalCacheDir();
    method public java.io.File[] getExternalCacheDirs();
@@ -8017,6 +8021,8 @@ package android.content {
    method public deprecated int getWallpaperDesiredMinimumHeight();
    method public deprecated int getWallpaperDesiredMinimumWidth();
    method public void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public boolean isCredentialEncrypted();
    method public boolean isDeviceEncrypted();
    method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
    method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
@@ -9098,8 +9104,10 @@ package android.content.pm {
    field public java.lang.String backupAgentName;
    field public java.lang.String className;
    field public int compatibleWidthLimitDp;
    field public java.lang.String credentialEncryptedDataDir;
    field public java.lang.String dataDir;
    field public int descriptionRes;
    field public java.lang.String deviceEncryptedDataDir;
    field public boolean enabled;
    field public int flags;
    field public int largestWidthLimitDp;
@@ -36239,6 +36247,8 @@ package android.test.mock {
    method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public void clearWallpaper();
    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public android.content.Context createDisplayContext(android.view.Display);
    method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public java.lang.String[] databaseList();
@@ -36260,7 +36270,6 @@ package android.test.mock {
    method public java.io.File getCodeCacheDir();
    method public android.content.ContentResolver getContentResolver();
    method public java.io.File getDatabasePath(java.lang.String);
    method public java.io.File getDeviceEncryptedFilesDir();
    method public java.io.File getDir(java.lang.String, int);
    method public java.io.File getExternalCacheDir();
    method public java.io.File[] getExternalCacheDirs();
@@ -36288,6 +36297,8 @@ package android.test.mock {
    method public int getWallpaperDesiredMinimumHeight();
    method public int getWallpaperDesiredMinimumWidth();
    method public void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public boolean isCredentialEncrypted();
    method public boolean isDeviceEncrypted();
    method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
    method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
+14 −6
Original line number Diff line number Diff line
@@ -8024,6 +8024,8 @@ package android.content {
    method public abstract int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public abstract deprecated void clearWallpaper() throws java.io.IOException;
    method public abstract android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public abstract android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public abstract android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public abstract android.content.Context createDisplayContext(android.view.Display);
    method public abstract android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public abstract java.lang.String[] databaseList();
@@ -8046,9 +8048,7 @@ package android.content {
    method public final int getColor(int);
    method public final android.content.res.ColorStateList getColorStateList(int);
    method public abstract android.content.ContentResolver getContentResolver();
    method public abstract java.io.File getCredentialEncryptedFilesDir();
    method public abstract java.io.File getDatabasePath(java.lang.String);
    method public abstract java.io.File getDeviceEncryptedFilesDir();
    method public abstract java.io.File getDir(java.lang.String, int);
    method public final android.graphics.drawable.Drawable getDrawable(int);
    method public abstract java.io.File getExternalCacheDir();
@@ -8081,6 +8081,8 @@ package android.content {
    method public abstract deprecated int getWallpaperDesiredMinimumHeight();
    method public abstract deprecated int getWallpaperDesiredMinimumWidth();
    method public abstract void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public abstract boolean isCredentialEncrypted();
    method public abstract boolean isDeviceEncrypted();
    method public boolean isRestricted();
    method public final android.content.res.TypedArray obtainStyledAttributes(int[]);
    method public final android.content.res.TypedArray obtainStyledAttributes(int, int[]) throws android.content.res.Resources.NotFoundException;
@@ -8220,6 +8222,8 @@ package android.content {
    method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public deprecated void clearWallpaper() throws java.io.IOException;
    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public android.content.Context createDisplayContext(android.view.Display);
    method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public java.lang.String[] databaseList();
@@ -8241,9 +8245,7 @@ package android.content {
    method public java.lang.ClassLoader getClassLoader();
    method public java.io.File getCodeCacheDir();
    method public android.content.ContentResolver getContentResolver();
    method public java.io.File getCredentialEncryptedFilesDir();
    method public java.io.File getDatabasePath(java.lang.String);
    method public java.io.File getDeviceEncryptedFilesDir();
    method public java.io.File getDir(java.lang.String, int);
    method public java.io.File getExternalCacheDir();
    method public java.io.File[] getExternalCacheDirs();
@@ -8271,6 +8273,8 @@ package android.content {
    method public deprecated int getWallpaperDesiredMinimumHeight();
    method public deprecated int getWallpaperDesiredMinimumWidth();
    method public void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public boolean isCredentialEncrypted();
    method public boolean isDeviceEncrypted();
    method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
    method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
@@ -9362,8 +9366,10 @@ package android.content.pm {
    field public java.lang.String backupAgentName;
    field public java.lang.String className;
    field public int compatibleWidthLimitDp;
    field public java.lang.String credentialEncryptedDataDir;
    field public java.lang.String dataDir;
    field public int descriptionRes;
    field public java.lang.String deviceEncryptedDataDir;
    field public boolean enabled;
    field public int flags;
    field public int largestWidthLimitDp;
@@ -38565,6 +38571,8 @@ package android.test.mock {
    method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public void clearWallpaper();
    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public android.content.Context createDisplayContext(android.view.Display);
    method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public java.lang.String[] databaseList();
@@ -38585,9 +38593,7 @@ package android.test.mock {
    method public java.lang.ClassLoader getClassLoader();
    method public java.io.File getCodeCacheDir();
    method public android.content.ContentResolver getContentResolver();
    method public java.io.File getCredentialEncryptedFilesDir();
    method public java.io.File getDatabasePath(java.lang.String);
    method public java.io.File getDeviceEncryptedFilesDir();
    method public java.io.File getDir(java.lang.String, int);
    method public java.io.File getExternalCacheDir();
    method public java.io.File[] getExternalCacheDirs();
@@ -38615,6 +38621,8 @@ package android.test.mock {
    method public int getWallpaperDesiredMinimumHeight();
    method public int getWallpaperDesiredMinimumWidth();
    method public void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public boolean isCredentialEncrypted();
    method public boolean isDeviceEncrypted();
    method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
    method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
+14 −3
Original line number Diff line number Diff line
@@ -7780,6 +7780,8 @@ package android.content {
    method public abstract int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public abstract deprecated void clearWallpaper() throws java.io.IOException;
    method public abstract android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public abstract android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public abstract android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public abstract android.content.Context createDisplayContext(android.view.Display);
    method public abstract android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public abstract java.lang.String[] databaseList();
@@ -7803,7 +7805,6 @@ package android.content {
    method public final android.content.res.ColorStateList getColorStateList(int);
    method public abstract android.content.ContentResolver getContentResolver();
    method public abstract java.io.File getDatabasePath(java.lang.String);
    method public abstract java.io.File getDeviceEncryptedFilesDir();
    method public abstract java.io.File getDir(java.lang.String, int);
    method public final android.graphics.drawable.Drawable getDrawable(int);
    method public abstract java.io.File getExternalCacheDir();
@@ -7836,6 +7837,8 @@ package android.content {
    method public abstract deprecated int getWallpaperDesiredMinimumHeight();
    method public abstract deprecated int getWallpaperDesiredMinimumWidth();
    method public abstract void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public abstract boolean isCredentialEncrypted();
    method public abstract boolean isDeviceEncrypted();
    method public boolean isRestricted();
    method public final android.content.res.TypedArray obtainStyledAttributes(int[]);
    method public final android.content.res.TypedArray obtainStyledAttributes(int, int[]) throws android.content.res.Resources.NotFoundException;
@@ -7967,6 +7970,8 @@ package android.content {
    method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public deprecated void clearWallpaper() throws java.io.IOException;
    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public android.content.Context createDisplayContext(android.view.Display);
    method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public java.lang.String[] databaseList();
@@ -7989,7 +7994,6 @@ package android.content {
    method public java.io.File getCodeCacheDir();
    method public android.content.ContentResolver getContentResolver();
    method public java.io.File getDatabasePath(java.lang.String);
    method public java.io.File getDeviceEncryptedFilesDir();
    method public java.io.File getDir(java.lang.String, int);
    method public java.io.File getExternalCacheDir();
    method public java.io.File[] getExternalCacheDirs();
@@ -8017,6 +8021,8 @@ package android.content {
    method public deprecated int getWallpaperDesiredMinimumHeight();
    method public deprecated int getWallpaperDesiredMinimumWidth();
    method public void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public boolean isCredentialEncrypted();
    method public boolean isDeviceEncrypted();
    method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
    method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
@@ -9098,8 +9104,10 @@ package android.content.pm {
    field public java.lang.String backupAgentName;
    field public java.lang.String className;
    field public int compatibleWidthLimitDp;
    field public java.lang.String credentialEncryptedDataDir;
    field public java.lang.String dataDir;
    field public int descriptionRes;
    field public java.lang.String deviceEncryptedDataDir;
    field public boolean enabled;
    field public int flags;
    field public int largestWidthLimitDp;
@@ -36241,6 +36249,8 @@ package android.test.mock {
    method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
    method public void clearWallpaper();
    method public android.content.Context createConfigurationContext(android.content.res.Configuration);
    method public android.content.Context createCredentialEncryptedContext(android.content.Context);
    method public android.content.Context createDeviceEncryptedContext(android.content.Context);
    method public android.content.Context createDisplayContext(android.view.Display);
    method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException;
    method public java.lang.String[] databaseList();
@@ -36262,7 +36272,6 @@ package android.test.mock {
    method public java.io.File getCodeCacheDir();
    method public android.content.ContentResolver getContentResolver();
    method public java.io.File getDatabasePath(java.lang.String);
    method public java.io.File getDeviceEncryptedFilesDir();
    method public java.io.File getDir(java.lang.String, int);
    method public java.io.File getExternalCacheDir();
    method public java.io.File[] getExternalCacheDirs();
@@ -36290,6 +36299,8 @@ package android.test.mock {
    method public int getWallpaperDesiredMinimumHeight();
    method public int getWallpaperDesiredMinimumWidth();
    method public void grantUriPermission(java.lang.String, android.net.Uri, int);
    method public boolean isCredentialEncrypted();
    method public boolean isDeviceEncrypted();
    method public java.io.FileInputStream openFileInput(java.lang.String) throws java.io.FileNotFoundException;
    method public java.io.FileOutputStream openFileOutput(java.lang.String, int) throws java.io.FileNotFoundException;
    method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory);
+61 −31

File changed.

Preview size limit exceeded, changes collapsed.

+72 −21
Original line number Diff line number Diff line
@@ -770,27 +770,6 @@ public abstract class Context {
     */
    public abstract File getFilesDir();

    /**
     * Return the filesystem directory for storing device-encrypted private app
     * data. Files stored in this location are typically encrypted with a key
     * tied to the physical device, and they can be accessed whenever the device
     * has booted successfully, both <em>before and after</em> the user has
     * entered their credentials (such as a lock pattern or PIN).
     */
    public abstract File getDeviceEncryptedFilesDir();

    /**
     * Return the filesystem directory for storing credential-encrypted private
     * app data. Files stored in this location are typically encrypted with a
     * key tied to user credentials, and they can be accessed
     * <em>only after</em> the user has entered their credentials (such as a
     * lock pattern or PIN).
     *
     * @hide
     */
    @SystemApi
    public abstract File getCredentialEncryptedFilesDir();

    /**
     * Returns the absolute path to the directory on the filesystem similar to
     * {@link #getFilesDir()}. The difference is that files placed under this
@@ -3885,6 +3864,26 @@ public abstract class Context {
     */
    public static final int CONTEXT_RESTRICTED = 0x00000004;

    /**
     * Flag for use with {@link #createPackageContext}: point all file APIs at
     * device-encrypted storage.
     *
     * @hide
     */
    public static final int CONTEXT_STORAGE_DEVICE_ENCRYPTED = 0x00000008;

    /**
     * Flag for use with {@link #createPackageContext}: point all file APIs at
     * credential-encrypted storage.
     *
     * @hide
     */
    public static final int CONTEXT_STORAGE_CREDENTIAL_ENCRYPTED = 0x00000010;

    /** {@hide} */
    public static final int CONTEXT_STORAGE_MASK = CONTEXT_STORAGE_DEVICE_ENCRYPTED
            | CONTEXT_STORAGE_CREDENTIAL_ENCRYPTED;

    /**
     * @hide Used to indicate we should tell the activity manager about the process
     * loading this code.
@@ -3984,6 +3983,42 @@ public abstract class Context {
     */
    public abstract Context createDisplayContext(@NonNull Display display);

    /**
     * Return a new Context object for the current Context but whose storage
     * APIs are backed by device-encrypted storage.
     * <p>
     * Data stored in device-encrypted storage is typically encrypted with a
     * key tied to the physical device, and they can be accessed whenever the
     * device has booted successfully, both <em>before and after</em> the user
     * has entered their credentials (such as a lock pattern or PIN).
     * <p>
     * Each call to this method returns a new instance of a Context object;
     * Context objects are not shared, however common state (ClassLoader, other
     * Resources for the same configuration) may be so the Context itself can be
     * fairly lightweight.
     *
     * @see #isDeviceEncrypted()
     */
    public abstract Context createDeviceEncryptedContext(Context context);

    /**
     * Return a new Context object for the current Context but whose storage
     * APIs are backed by credential-encrypted storage.
     * <p>
     * Data stored in credential-encrypted storage is typically encrypted with a
     * key tied to user credentials, and they can be accessed
     * <em>only after</em> the user has entered their credentials (such as a
     * lock pattern or PIN).
     * <p>
     * Each call to this method returns a new instance of a Context object;
     * Context objects are not shared, however common state (ClassLoader, other
     * Resources for the same configuration) may be so the Context itself can be
     * fairly lightweight.
     *
     * @see #isCredentialEncrypted()
     */
    public abstract Context createCredentialEncryptedContext(Context context);

    /**
     * Gets the display adjustments holder for this context.  This information
     * is provided on a per-application or activity basis and is used to simulate lower density
@@ -4005,4 +4040,20 @@ public abstract class Context {
    public boolean isRestricted() {
        return false;
    }

    /**
     * Indicates if the storage APIs of this Context are backed by
     * device-encrypted storage.
     *
     * @see #createDeviceEncryptedContext(Context)
     */
    public abstract boolean isDeviceEncrypted();

    /**
     * Indicates if the storage APIs of this Context are backed by
     * credential-encrypted storage.
     *
     * @see #createCredentialEncryptedContext(Context)
     */
    public abstract boolean isCredentialEncrypted();
}
Loading