Add service link when no providers are present

Test: ondevice & atest
Bug: 273752971
Change-Id: Ia7080f5c44c2f59a386e00146b898228e5829988
This commit is contained in:
Becca Hughes
2023-03-23 22:37:32 +00:00
parent 5107ba4cdb
commit fbc05225bf
2 changed files with 115 additions and 5 deletions

View File

@@ -33,9 +33,11 @@ import android.content.pm.ServiceInfo;
import android.credentials.CredentialProviderInfo;
import android.net.Uri;
import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings;
import androidx.lifecycle.Lifecycle;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
@@ -120,11 +122,42 @@ public class CredentialManagerPreferenceControllerTest {
}
@Test
public void displayPreference_noServices_noPreferencesAdded() {
public void displayPreference_noServices_noPreferencesAdded_useAutofillUri() {
Settings.Secure.putStringForUser(
mContext.getContentResolver(),
Settings.Secure.AUTOFILL_SERVICE_SEARCH_URI,
"test",
UserHandle.myUserId());
CredentialManagerPreferenceController controller =
createControllerWithServices(Collections.emptyList());
controller.displayPreference(mScreen);
assertThat(mCredentialsPreferenceCategory.getPreferenceCount()).isEqualTo(0);
assertThat(mCredentialsPreferenceCategory.getPreferenceCount()).isEqualTo(1);
Preference pref = mCredentialsPreferenceCategory.getPreference(0);
assertThat(pref.getTitle()).isEqualTo("Add service");
assertThat(controller.getAddServiceUri(mContext)).isEqualTo("test");
}
@Test
public void displayPreference_noServices_noPreferencesAdded_useCredManUri() {
Settings.Secure.putStringForUser(
mContext.getContentResolver(),
Settings.Secure.AUTOFILL_SERVICE_SEARCH_URI,
"test",
UserHandle.myUserId());
CredentialManagerPreferenceController controller =
createControllerWithServicesAndAddServiceOverride(
Collections.emptyList(), "credman");
controller.displayPreference(mScreen);
assertThat(mCredentialsPreferenceCategory.getPreferenceCount()).isEqualTo(1);
Preference pref = mCredentialsPreferenceCategory.getPreference(0);
assertThat(pref.getTitle()).isEqualTo("Add service");
assertThat(controller.getAddServiceUri(mContext)).isEqualTo("credman");
}
@Test
@@ -134,6 +167,9 @@ public class CredentialManagerPreferenceControllerTest {
controller.displayPreference(mScreen);
assertThat(controller.isConnected()).isFalse();
assertThat(mCredentialsPreferenceCategory.getPreferenceCount()).isEqualTo(1);
Preference pref = mCredentialsPreferenceCategory.getPreference(0);
assertThat(pref.getTitle()).isNotEqualTo("Add account");
}
@Test
@@ -400,10 +436,15 @@ public class CredentialManagerPreferenceControllerTest {
private CredentialManagerPreferenceController createControllerWithServices(
List<CredentialProviderInfo> availableServices) {
return createControllerWithServicesAndAddServiceOverride(availableServices, null);
}
private CredentialManagerPreferenceController createControllerWithServicesAndAddServiceOverride(
List<CredentialProviderInfo> availableServices, String addServiceOverride) {
CredentialManagerPreferenceController controller =
new CredentialManagerPreferenceController(
mContext, mCredentialsPreferenceCategory.getKey());
controller.setAvailableServices(() -> mock(Lifecycle.class), availableServices);
controller.setAvailableServices(() -> mock(Lifecycle.class), availableServices, addServiceOverride);
controller.setDelegate(mDelegate);
return controller;
}