Announce user credential deletions

Change-Id: I08c3d022c37b5c5fb9f2e996fcbe131dffce4ba0
Fix: 26352550
This commit is contained in:
Robin Lee
2016-05-16 15:42:34 +01:00
parent ac384f47c5
commit 11fd5506ae
2 changed files with 20 additions and 11 deletions

View File

@@ -90,6 +90,12 @@ public class UserCredentialsSettings extends OptionsMenuFragment implements OnIt
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 @@ public class UserCredentialsSettings extends OptionsMenuFragment implements OnIt
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
admin);
} else {
new RemoveCredentialsTask(getContext(), getTargetFragment())
.execute(item.alias);
new RemoveCredentialsTask(getTargetFragment()).execute(item.alias);
}
dialog.dismiss();
}
@@ -152,17 +157,15 @@ public class UserCredentialsSettings extends OptionsMenuFragment implements OnIt
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 @@ public class UserCredentialsSettings extends OptionsMenuFragment implements OnIt
} 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();
}
}
}