Announce user credential deletions

Change-Id: I08c3d022c37b5c5fb9f2e996fcbe131dffce4ba0
Fix: 26352550
diff --git a/src/com/android/settings/UserCredentialsSettings.java b/src/com/android/settings/UserCredentialsSettings.java
index a09800b..535c301 100644
--- a/src/com/android/settings/UserCredentialsSettings.java
+++ b/src/com/android/settings/UserCredentialsSettings.java
@@ -90,6 +90,12 @@
         CredentialDialogFragment.show(this, item);
     }
 
+    protected void announceRemoval(String alias) {
+        if (isAdded()) {
+            mListView.announceForAccessibility(getString(R.string.user_credential_removed, alias));
+        }
+    }
+
     protected void refreshItems() {
         if (isAdded()) {
             new AliasLoader().execute();
@@ -141,8 +147,7 @@
                             RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
                                     admin);
                         } else {
-                            new RemoveCredentialsTask(getContext(), getTargetFragment())
-                                    .execute(item.alias);
+                            new RemoveCredentialsTask(getTargetFragment()).execute(item.alias);
                         }
                         dialog.dismiss();
                     }
@@ -152,17 +157,15 @@
             return builder.create();
         }
 
-        private class RemoveCredentialsTask extends AsyncTask<String, Void, Void> {
-            private Context context;
+        private class RemoveCredentialsTask extends AsyncTask<String, Void, String[]> {
             private Fragment targetFragment;
 
-            public RemoveCredentialsTask(Context context, Fragment targetFragment) {
-                this.context = context;
+            public RemoveCredentialsTask(Fragment targetFragment) {
                 this.targetFragment = targetFragment;
             }
 
             @Override
-            protected Void doInBackground(String... aliases) {
+            protected String[] doInBackground(String... aliases) {
                 try {
                     final KeyChainConnection conn = KeyChain.bind(getContext());
                     try {
@@ -178,13 +181,17 @@
                 } catch (InterruptedException e) {
                     Log.w(TAG, "Connecting to keychain", e);
                 }
-                return null;
+                return aliases;
             }
 
             @Override
-            protected void onPostExecute(Void result) {
-                if (targetFragment instanceof UserCredentialsSettings) {
-                    ((UserCredentialsSettings) targetFragment).refreshItems();
+            protected void onPostExecute(String... aliases) {
+                if (targetFragment instanceof UserCredentialsSettings && targetFragment.isAdded()) {
+                    final UserCredentialsSettings target = (UserCredentialsSettings) targetFragment;
+                    for (final String alias : aliases) {
+                        target.announceRemoval(alias);
+                    }
+                    target.refreshItems();
                 }
             }
         }