From 51b651aea178fcfca8a3219141f0ecfda1504887 Mon Sep 17 00:00:00 2001 From: Carlos Valdivia Date: Wed, 30 Mar 2016 13:44:28 -0700 Subject: introduce GET_PASSWORD_PRIVILEDGED permission. That will be used to filter in passwords for Session based AccountManager flows. Bug: 27590532 Change-Id: I4a6d0540bcff186e416351a6f719600ce35d86a0 --- api/current.txt | 1 + api/system-current.txt | 1 + api/test-current.txt | 1 + core/java/android/accounts/AccountManager.java | 11 +++++- core/res/AndroidManifest.xml | 5 +++ .../server/accounts/AccountManagerService.java | 46 ++++++++++++++++++---- 6 files changed, 56 insertions(+), 9 deletions(-) diff --git a/api/current.txt b/api/current.txt index 03d3f884b1da..d7562581b64d 100644 --- a/api/current.txt +++ b/api/current.txt @@ -71,6 +71,7 @@ package android { field public static final java.lang.String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS"; field public static final java.lang.String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED"; field public static final java.lang.String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE"; + field public static final java.lang.String GET_PASSWORD_PRIVILEGED = "android.permission.GET_PASSWORD_PRIVILEGED"; field public static final deprecated java.lang.String GET_TASKS = "android.permission.GET_TASKS"; field public static final java.lang.String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH"; field public static final java.lang.String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER"; diff --git a/api/system-current.txt b/api/system-current.txt index ef94aa9a89ff..f2c7b6cef972 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -103,6 +103,7 @@ package android { field public static final java.lang.String GET_APP_OPS_STATS = "android.permission.GET_APP_OPS_STATS"; field public static final java.lang.String GET_PACKAGE_IMPORTANCE = "android.permission.GET_PACKAGE_IMPORTANCE"; field public static final java.lang.String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE"; + field public static final java.lang.String GET_PASSWORD_PRIVILEGED = "android.permission.GET_PASSWORD_PRIVILEGED"; field public static final java.lang.String GET_PROCESS_STATE_AND_OOM_SCORE = "android.permission.GET_PROCESS_STATE_AND_OOM_SCORE"; field public static final deprecated java.lang.String GET_TASKS = "android.permission.GET_TASKS"; field public static final java.lang.String GET_TOP_ACTIVITY_INFO = "android.permission.GET_TOP_ACTIVITY_INFO"; diff --git a/api/test-current.txt b/api/test-current.txt index 8f04e23b2cbe..b2162315e2ec 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -71,6 +71,7 @@ package android { field public static final java.lang.String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS"; field public static final java.lang.String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED"; field public static final java.lang.String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE"; + field public static final java.lang.String GET_PASSWORD_PRIVILEGED = "android.permission.GET_PASSWORD_PRIVILEGED"; field public static final deprecated java.lang.String GET_TASKS = "android.permission.GET_TASKS"; field public static final java.lang.String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH"; field public static final java.lang.String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER"; diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index e520b406656b..7465ed92e469 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -2798,6 +2798,15 @@ public class AccountManager { if (account == null) { throw new IllegalArgumentException("account is null"); } + + // Always include the calling package name. This just makes life easier + // down stream. + final Bundle optionsIn = new Bundle(); + if (options != null) { + optionsIn.putAll(options); + } + optionsIn.putString(KEY_ANDROID_PACKAGE_NAME, mContext.getPackageName()); + return new AmsTask(activity, handler, callback) { @Override public void doWork() throws RemoteException { @@ -2806,7 +2815,7 @@ public class AccountManager { account, authTokenType, activity != null, - options); + optionsIn); } }.start(); } diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index e03183b216f1..6aa0dcf083df 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2004,6 +2004,11 @@ + + +