Replaced auto-fill by autofill to keep it consistent with API style.
To keep backward compatibility, it looks for the new service (AutofillService),
then falls back to the old one (AutoFillService) if not found.
Bug: 35956626
Bug: 36024626
Test: manual verification with a custom service
Test: RunSettingsRoboTests passes
Change-Id: I64112ac5d796e94866e632ec8ea79a3fb13e3d9b
diff --git a/res/xml/app_default_settings.xml b/res/xml/app_default_settings.xml
index a382bc9..e96c070 100644
--- a/res/xml/app_default_settings.xml
+++ b/res/xml/app_default_settings.xml
@@ -67,7 +67,7 @@
android:key="default_autofill"
android:title="@string/autofill_app"
android:summary="@string/app_list_preference_none"
- android:fragment="com.android.settings.applications.defaultapps.DefaultAutoFillPicker"
+ android:fragment="com.android.settings.applications.defaultapps.DefaultAutofillPicker"
settings:keywords="@string/autofill_keywords"
android:order="-14"/>
diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java
index c68e19f..b8ebeb4 100644
--- a/src/com/android/settings/applications/AdvancedAppSettings.java
+++ b/src/com/android/settings/applications/AdvancedAppSettings.java
@@ -20,7 +20,7 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
-import com.android.settings.applications.defaultapps.DefaultAutoFillPreferenceController;
+import com.android.settings.applications.defaultapps.DefaultAutofillPreferenceController;
import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController;
import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
@@ -61,7 +61,7 @@
controllers.add(new DefaultSmsPreferenceController(context));
controllers.add(new DefaultEmergencyPreferenceController(context));
controllers.add(new DefaultHomePreferenceController(context));
- controllers.add(new DefaultAutoFillPreferenceController(context));
+ controllers.add(new DefaultAutofillPreferenceController(context));
return controllers;
}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAutoFillPicker.java b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
similarity index 62%
rename from src/com/android/settings/applications/defaultapps/DefaultAutoFillPicker.java
rename to src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
index b8190cd..e3a7a2b 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAutoFillPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
@@ -23,7 +23,8 @@
import android.content.pm.ServiceInfo;
import android.provider.Settings;
import android.service.autofill.AutoFillService;
-import android.service.autofill.AutoFillServiceInfo;
+import android.service.autofill.AutofillService;
+import android.service.autofill.AutofillServiceInfo;
import android.text.TextUtils;
import com.android.internal.logging.nano.MetricsProto;
@@ -32,10 +33,12 @@
import java.util.ArrayList;
import java.util.List;
-public class DefaultAutoFillPicker extends DefaultAppPickerFragment {
+public class DefaultAutofillPicker extends DefaultAppPickerFragment {
- static final String SETTING = Settings.Secure.AUTO_FILL_SERVICE;
- static final Intent AUTO_FILL_PROBE = new Intent(AutoFillService.SERVICE_INTERFACE);
+ static final String SETTING = Settings.Secure.AUTOFILL_SERVICE;
+ // TODO(b/35956626): remove once clients migrated
+ static final Intent OLD_AUTO_FILL_PROBE = new Intent(AutoFillService.OLD_SERVICE_INTERFACE);
+ static final Intent AUTOFILL_PROBE = new Intent(AutofillService.SERVICE_INTERFACE);
@Override
public int getMetricsCategory() {
@@ -51,11 +54,17 @@
protected List<DefaultAppInfo> getCandidates() {
final List<DefaultAppInfo> candidates = new ArrayList<>();
final List<ResolveInfo> resolveInfos = mPm.getPackageManager()
- .queryIntentServices(AUTO_FILL_PROBE, PackageManager.GET_META_DATA);
+ .queryIntentServices(AUTOFILL_PROBE, PackageManager.GET_META_DATA);
for (ResolveInfo info : resolveInfos) {
candidates.add(new DefaultAppInfo(mUserId, new ComponentName(
info.serviceInfo.packageName, info.serviceInfo.name)));
}
+ final List<ResolveInfo> oldResolveInfos = mPm.getPackageManager()
+ .queryIntentServices(OLD_AUTO_FILL_PROBE, PackageManager.GET_META_DATA);
+ for (ResolveInfo info : oldResolveInfos) {
+ candidates.add(new DefaultAppInfo(mUserId, new ComponentName(
+ info.serviceInfo.packageName, info.serviceInfo.name)));
+ }
return candidates;
}
@@ -82,13 +91,12 @@
/**
* Provides Intent to setting activity for the specified auto-fill service.
*/
- static final class AutoFillSettingIntentProvider
- implements SettingIntentProvider {
+ static final class AutofillSettingIntentProvider implements SettingIntentProvider {
private final String mSelectedKey;
private final PackageManager mPackageManager;
- public AutoFillSettingIntentProvider(PackageManager packageManager, String key) {
+ public AutofillSettingIntentProvider(PackageManager packageManager, String key) {
mSelectedKey = key;
mPackageManager = packageManager;
}
@@ -96,14 +104,33 @@
@Override
public Intent getIntent() {
final List<ResolveInfo> resolveInfos = mPackageManager.queryIntentServices(
- AUTO_FILL_PROBE, PackageManager.GET_META_DATA);
+ AUTOFILL_PROBE, PackageManager.GET_META_DATA);
for (ResolveInfo resolveInfo : resolveInfos) {
final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
final String flattenKey = new ComponentName(
serviceInfo.packageName, serviceInfo.name).flattenToString();
if (TextUtils.equals(mSelectedKey, flattenKey)) {
- final String settingsActivity = new AutoFillServiceInfo(
+ final String settingsActivity = new AutofillServiceInfo(
+ mPackageManager, serviceInfo)
+ .getSettingsActivity();
+ if (TextUtils.isEmpty(settingsActivity)) {
+ return null;
+ }
+ return new Intent(Intent.ACTION_MAIN).setComponent(
+ new ComponentName(serviceInfo.packageName, settingsActivity));
+ }
+ }
+
+ final List<ResolveInfo> oldResolveInfos = mPackageManager.queryIntentServices(
+ OLD_AUTO_FILL_PROBE, PackageManager.GET_META_DATA);
+
+ for (ResolveInfo resolveInfo : oldResolveInfos) {
+ final ServiceInfo serviceInfo = resolveInfo.serviceInfo;
+ final String flattenKey = new ComponentName(
+ serviceInfo.packageName, serviceInfo.name).flattenToString();
+ if (TextUtils.equals(mSelectedKey, flattenKey)) {
+ final String settingsActivity = new AutofillServiceInfo(
mPackageManager, serviceInfo)
.getSettingsActivity();
if (TextUtils.isEmpty(settingsActivity)) {
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAutoFillPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceController.java
similarity index 85%
rename from src/com/android/settings/applications/defaultapps/DefaultAutoFillPreferenceController.java
rename to src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceController.java
index b7f3b77..c536dbb 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAutoFillPreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceController.java
@@ -22,9 +22,9 @@
import android.provider.Settings;
import android.text.TextUtils;
-public class DefaultAutoFillPreferenceController extends DefaultAppPreferenceController {
+public class DefaultAutofillPreferenceController extends DefaultAppPreferenceController {
- public DefaultAutoFillPreferenceController(Context context) {
+ public DefaultAutofillPreferenceController(Context context) {
super(context);
}
@@ -43,8 +43,8 @@
if (info == null) {
return null;
}
- final DefaultAutoFillPicker.AutoFillSettingIntentProvider intentProvider =
- new DefaultAutoFillPicker.AutoFillSettingIntentProvider(
+ final DefaultAutofillPicker.AutofillSettingIntentProvider intentProvider =
+ new DefaultAutofillPicker.AutofillSettingIntentProvider(
mPackageManager.getPackageManager(), info.getKey());
return intentProvider.getIntent();
}
@@ -52,7 +52,7 @@
@Override
protected DefaultAppInfo getDefaultAppInfo() {
final String flattenComponent = Settings.Secure.getString(mContext.getContentResolver(),
- DefaultAutoFillPicker.SETTING);
+ DefaultAutofillPicker.SETTING);
if (!TextUtils.isEmpty(flattenComponent)) {
DefaultAppInfo appInfo = new DefaultAppInfo(
mUserId, ComponentName.unflattenFromString(flattenComponent));
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutoFillPickerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutofillPickerTest.java
similarity index 95%
rename from tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutoFillPickerTest.java
rename to tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutofillPickerTest.java
index 1ee18cf..1bd611b 100644
--- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutoFillPickerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutofillPickerTest.java
@@ -46,7 +46,7 @@
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class DefaultAutoFillPickerTest {
+public class DefaultAutofillPickerTest {
private static final String TEST_APP_KEY = "123";
@@ -56,14 +56,14 @@
private UserManager mUserManager;
@Mock
private PackageManagerWrapper mPackageManager;
- private DefaultAutoFillPicker mPicker;
+ private DefaultAutofillPicker mPicker;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
FakeFeatureFactory.setupForTest(mActivity);
when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
- mPicker = spy(new DefaultAutoFillPicker());
+ mPicker = spy(new DefaultAutofillPicker());
mPicker.onAttach((Context) mActivity);
ReflectionHelpers.setField(mPicker, "mPm", mPackageManager);
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutoFillPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceControllerTest.java
similarity index 90%
rename from tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutoFillPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceControllerTest.java
index 1c37368..7bcbcb0 100644
--- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutoFillPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceControllerTest.java
@@ -45,7 +45,7 @@
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class DefaultAutoFillPreferenceControllerTest {
+public class DefaultAutofillPreferenceControllerTest {
@Mock
private Context mContext;
@@ -54,14 +54,14 @@
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private PackageManagerWrapper mPackageManager;
- private DefaultAutoFillPreferenceController mController;
+ private DefaultAutofillPreferenceController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
- mController = spy(new DefaultAutoFillPreferenceController(mContext));
+ mController = spy(new DefaultAutofillPreferenceController(mContext));
ReflectionHelpers.setField(mController, "mPackageManager", mPackageManager);
}
@@ -82,7 +82,7 @@
public void getDefaultAppInfo_shouldHaveSettingsProvider() {
ReflectionHelpers.setField(mController, "mContext", RuntimeEnvironment.application);
Settings.Secure.putString(RuntimeEnvironment.application.getContentResolver(),
- DefaultAutoFillPicker.SETTING, "com.android.settings/SettingsActivity.class");
+ DefaultAutofillPicker.SETTING, "com.android.settings/SettingsActivity.class");
final DefaultAppInfo info = mController.getDefaultAppInfo();
@@ -91,6 +91,6 @@
mController.getSettingIntent(info);
verify(mPackageManager.getPackageManager()).queryIntentServices(
- DefaultAutoFillPicker.AUTO_FILL_PROBE, PackageManager.GET_META_DATA);
+ DefaultAutofillPicker.AUTOFILL_PROBE, PackageManager.GET_META_DATA);
}
}