Do not finish activity when the input account doesn't exist

This is to avoid the caller getting the existing account list because
the prompt respond reveals that the input account does not exist.

Bug: 249981091
Test: robotest
Change-Id: I4bb8ecead8233780443b1cd1a8780983b7e4d5de
This commit is contained in:
Jason Chiu
2023-07-04 17:13:51 +08:00
parent 1c112249f3
commit e01a9b6039
2 changed files with 10 additions and 3 deletions

View File

@@ -50,6 +50,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringJoiner;
/**
* An extra {@link UserHandle} can be specified in the intent as {@link EXTRA_USER}, if the user for
@@ -189,7 +190,7 @@ public class ChooseAccountPreferenceController extends BasePreferenceController
mScreen.addPreference(p);
}
} else {
if (Log.isLoggable(TAG, Log.VERBOSE)) {
if (mAuthorities != null && Log.isLoggable(TAG, Log.VERBOSE)) {
final StringBuilder auths = new StringBuilder();
for (String a : mAuthorities) {
auths.append(a);
@@ -197,8 +198,14 @@ public class ChooseAccountPreferenceController extends BasePreferenceController
}
Log.v(TAG, "No providers found for authorities: " + auths);
}
if (mAccountTypesFilter != null) {
final StringJoiner types = new StringJoiner(", ", "", "");
mAccountTypesFilter.forEach(types::add);
Log.w(TAG, "No providers found for account types: " + types);
}
mActivity.setResult(RESULT_CANCELED);
mActivity.finish();
// Do not finish activity to avoid the caller getting the existing account list because
// the prompt respond reveals that the input account does not exist.
}
}

View File

@@ -173,7 +173,7 @@ public class ChooseAccountPreferenceControllerTest {
mActivity);
mController.displayPreference(mPreferenceScreen);
assertThat(mActivity.isFinishing()).isTrue();
assertThat(mActivity.isFinishing()).isFalse();
assertThat(mPreferenceScreen.getPreferenceCount()).isEqualTo(0);
}