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
This commit is contained in:
@@ -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"/>
|
||||
|
||||
|
@@ -20,7 +20,7 @@ import android.provider.SearchIndexableResource;
|
||||
|
||||
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 @@ public class AdvancedAppSettings extends DashboardFragment {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@@ -23,7 +23,8 @@ import android.content.pm.ResolveInfo;
|
||||
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 com.android.settings.R;
|
||||
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 @@ public class DefaultAutoFillPicker extends DefaultAppPickerFragment {
|
||||
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 @@ public class DefaultAutoFillPicker extends DefaultAppPickerFragment {
|
||||
/**
|
||||
* 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 @@ public class DefaultAutoFillPicker extends DefaultAppPickerFragment {
|
||||
@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)) {
|
@@ -22,9 +22,9 @@ import android.content.Intent;
|
||||
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 @@ public class DefaultAutoFillPreferenceController extends DefaultAppPreferenceCon
|
||||
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 @@ public class DefaultAutoFillPreferenceController extends DefaultAppPreferenceCon
|
||||
@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));
|
@@ -46,7 +46,7 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
@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 @@ public class DefaultAutoFillPickerTest {
|
||||
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);
|
@@ -45,7 +45,7 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
@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 @@ public class DefaultAutoFillPreferenceControllerTest {
|
||||
@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 class DefaultAutoFillPreferenceControllerTest {
|
||||
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 @@ public class DefaultAutoFillPreferenceControllerTest {
|
||||
mController.getSettingIntent(info);
|
||||
|
||||
verify(mPackageManager.getPackageManager()).queryIntentServices(
|
||||
DefaultAutoFillPicker.AUTO_FILL_PROBE, PackageManager.GET_META_DATA);
|
||||
DefaultAutofillPicker.AUTOFILL_PROBE, PackageManager.GET_META_DATA);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user