OSDN Git Service

Replaced auto-fill by autofill to keep it consistent with API style.
authorFelipe Leme <felipeal@google.com>
Tue, 7 Mar 2017 16:58:15 +0000 (08:58 -0800)
committerFelipe Leme <felipeal@google.com>
Wed, 8 Mar 2017 21:45:27 +0000 (13:45 -0800)
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

res/xml/app_default_settings.xml
src/com/android/settings/applications/AdvancedAppSettings.java
src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java [moved from src/com/android/settings/applications/defaultapps/DefaultAutoFillPicker.java with 62% similarity]
src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceController.java [moved from src/com/android/settings/applications/defaultapps/DefaultAutoFillPreferenceController.java with 85% similarity]
tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutofillPickerTest.java [moved from tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutoFillPickerTest.java with 95% similarity]
tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutofillPreferenceControllerTest.java [moved from tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAutoFillPreferenceControllerTest.java with 90% similarity]

index a382bc9..e96c070 100644 (file)
@@ -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"/>
 
index c68e19f..b8ebeb4 100644 (file)
@@ -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);
     }
 }