OSDN Git Service

Migrate all default app shortcut preference to use roles.
authorHai Zhang <zhanghai@google.com>
Thu, 28 Feb 2019 21:36:53 +0000 (13:36 -0800)
committerHai Zhang <zhanghai@google.com>
Thu, 28 Feb 2019 21:51:21 +0000 (13:51 -0800)
Bug: 124452117
Test: build
Change-Id: I19375dc21bfcd932a263c49330dc9a040a446beb

src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBase.java
src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java
src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceController.java
src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceController.java
tests/robotests/src/com/android/settings/applications/appinfo/DefaultAppShortcutPreferenceControllerBaseTest.java
tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java
tests/robotests/src/com/android/settings/applications/appinfo/DefaultEmergencyShortcutPreferenceControllerTest.java
tests/robotests/src/com/android/settings/applications/appinfo/DefaultHomeShortcutPreferenceControllerTest.java

index 20169d8..b056b20 100644 (file)
@@ -18,7 +18,6 @@ import android.app.role.RoleManager;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.Intent;
-import android.os.Bundle;
 import android.os.UserManager;
 import android.permission.PermissionControllerManager;
 import android.text.TextUtils;
@@ -28,10 +27,7 @@ import androidx.preference.PreferenceScreen;
 
 import com.android.internal.util.CollectionUtils;
 import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.applications.DefaultAppSettings;
 import com.android.settings.core.BasePreferenceController;
-import com.android.settings.core.SubSettingLauncher;
 
 /*
  * Abstract base controller for the default app shortcut preferences that launches the default app
@@ -58,22 +54,13 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
 
         mRoleManager = context.getSystemService(RoleManager.class);
 
-        // TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated.
-        if (mRoleName != null) {
-            final PermissionControllerManager permissionControllerManager =
-                    mContext.getSystemService(PermissionControllerManager.class);
-            permissionControllerManager.isApplicationQualifiedForRole(mRoleName, mPackageName,
-                    mContext.getMainExecutor(), qualified -> {
-                        mAppQualified = qualified;
-                        refreshAvailability();
-                    });
-        }
-    }
-
-    // TODO: STOPSHIP(b/110557011): Remove this once we have all default apps migrated.
-    public DefaultAppShortcutPreferenceControllerBase(Context context, String preferenceKey,
-            String packageName) {
-        this(context, preferenceKey, null /* roleName */, packageName);
+        final PermissionControllerManager permissionControllerManager =
+                mContext.getSystemService(PermissionControllerManager.class);
+        permissionControllerManager.isApplicationQualifiedForRole(mRoleName, mPackageName,
+                mContext.getMainExecutor(), qualified -> {
+                    mAppQualified = qualified;
+                    refreshAvailability();
+                });
     }
 
     @Override
@@ -98,7 +85,7 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
         if (mContext.getSystemService(UserManager.class).isManagedProfile()) {
             return DISABLED_FOR_USER;
         }
-        return hasAppCapability() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+        return mAppQualified ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
     }
 
     @Override
@@ -112,49 +99,20 @@ public abstract class DefaultAppShortcutPreferenceControllerBase extends BasePre
         if (!TextUtils.equals(mPreferenceKey, preference.getKey())) {
             return false;
         }
-        // TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated.
-        if (mRoleName != null) {
-            final Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP)
-                    .putExtra(Intent.EXTRA_ROLE_NAME, mRoleName);
-            mContext.startActivity(intent);
-        } else {
-            final Bundle bundle = new Bundle();
-            bundle.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, mPreferenceKey);
-            new SubSettingLauncher(mContext)
-                    .setDestination(DefaultAppSettings.class.getName())
-                    .setArguments(bundle)
-                    .setTitleRes(R.string.configure_apps)
-                    .setSourceMetricsCategory(SettingsEnums.PAGE_UNKNOWN)
-                    .launch();
-        }
+        final Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP)
+                .putExtra(Intent.EXTRA_ROLE_NAME, mRoleName);
+        mContext.startActivity(intent);
         return true;
     }
 
     /**
-     * Check whether the app has the default app capability
-     *
-     * @return true if the app has the default app capability
-     */
-    protected boolean hasAppCapability() {
-        // TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated.
-        if (mRoleName != null) {
-            return mAppQualified;
-        }
-        return false;
-    }
-
-    /**
      * Check whether the app is the default app
      *
      * @return true if the app is the default app
      */
-    protected boolean isDefaultApp() {
-        // TODO: STOPSHIP(b/110557011): Remove this check once we have all default apps migrated.
-        if (mRoleName != null) {
-            final String packageName = CollectionUtils.firstOrNull(mRoleManager.getRoleHolders(
-                    mRoleName));
-            return TextUtils.equals(mPackageName, packageName);
-        }
-        return false;
+    private boolean isDefaultApp() {
+        final String packageName = CollectionUtils.firstOrNull(mRoleManager.getRoleHolders(
+                mRoleName));
+        return TextUtils.equals(mPackageName, packageName);
     }
 }
index 4c7dd81..d554620 100644 (file)
 
 package com.android.settings.applications.appinfo;
 
+import android.app.role.RoleManager;
 import android.content.Context;
-import android.os.UserHandle;
-
-import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController;
 
 public class DefaultBrowserShortcutPreferenceController
         extends DefaultAppShortcutPreferenceControllerBase {
@@ -25,19 +23,6 @@ public class DefaultBrowserShortcutPreferenceController
     private static final String KEY = "default_browser";
 
     public DefaultBrowserShortcutPreferenceController(Context context, String packageName) {
-        super(context, KEY, packageName);
-    }
-
-    @Override
-    protected boolean hasAppCapability() {
-        return DefaultBrowserPreferenceController
-                .hasBrowserPreference(mPackageName, mContext, UserHandle.myUserId());
+        super(context, KEY, RoleManager.ROLE_BROWSER, packageName);
     }
-
-    @Override
-    protected boolean isDefaultApp() {
-        return new DefaultBrowserPreferenceController(mContext)
-                .isBrowserDefault(mPackageName, UserHandle.myUserId());
-    }
-
 }
index f0c1b8a..bd467ac 100644 (file)
 
 package com.android.settings.applications.appinfo;
 
+import android.app.role.RoleManager;
 import android.content.Context;
 
-import com.android.settings.applications.defaultapps.DefaultEmergencyPreferenceController;
-
 public class DefaultEmergencyShortcutPreferenceController
         extends DefaultAppShortcutPreferenceControllerBase {
 
     private static final String KEY = "default_emergency_app";
 
     public DefaultEmergencyShortcutPreferenceController(Context context, String packageName) {
-        super(context, KEY, packageName);
-    }
-
-    @Override
-    protected boolean hasAppCapability() {
-        return DefaultEmergencyPreferenceController.hasEmergencyPreference(mPackageName, mContext);
+        super(context, KEY, RoleManager.ROLE_EMERGENCY, packageName);
     }
-
-    @Override
-    protected boolean isDefaultApp() {
-        return DefaultEmergencyPreferenceController.isEmergencyDefault(mPackageName, mContext);
-    }
-
 }
index a58ef85..beb2d7e 100644 (file)
 
 package com.android.settings.applications.appinfo;
 
+import android.app.role.RoleManager;
 import android.content.Context;
 
-import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
-
 public class DefaultHomeShortcutPreferenceController
         extends DefaultAppShortcutPreferenceControllerBase {
 
     private static final String KEY = "default_home";
 
     public DefaultHomeShortcutPreferenceController(Context context, String packageName) {
-        super(context, KEY, packageName);
-    }
-
-    @Override
-    protected boolean hasAppCapability() {
-        return DefaultHomePreferenceController.hasHomePreference(mPackageName, mContext);
+        super(context, KEY, RoleManager.ROLE_HOME, packageName);
     }
-
-    @Override
-    protected boolean isDefaultApp() {
-        return DefaultHomePreferenceController.isHomeDefault(mPackageName,
-                mContext.getPackageManager());
-    }
-
 }
index 89beede..f3f4ca6 100644 (file)
@@ -34,8 +34,6 @@ import android.permission.PermissionControllerManager;
 import androidx.preference.Preference;
 
 import com.android.settings.R;
-import com.android.settings.SettingsActivity;
-import com.android.settings.applications.DefaultAppSettings;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -73,7 +71,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
     private ShadowUserManager mShadowUserManager;
 
     private TestRolePreferenceController mController;
-    private TestLegacyPreferenceController mLegacyController;
 
     @Before
     public void setUp() {
@@ -86,7 +83,6 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
         mShadowUserManager = shadowOf(mActivity.getSystemService(UserManager.class));
         mController = new TestRolePreferenceController(mActivity);
         when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
-        mLegacyController = new TestLegacyPreferenceController(mActivity);
     }
 
     @Test
@@ -141,8 +137,8 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
         when(mRoleManager.getRoleHolders(eq(TEST_ROLE_NAME))).thenReturn(Collections.singletonList(
                 TEST_PACKAGE_NAME));
         final CharSequence yesText = mActivity.getText(R.string.yes);
-
         mController.updateState(mPreference);
+
         verify(mPreference).setSummary(yesText);
     }
 
@@ -150,17 +146,17 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
     public void updateState_notRoleHoler_shouldSetSummaryToNo() {
         when(mRoleManager.getRoleHolders(eq(TEST_ROLE_NAME))).thenReturn(Collections.emptyList());
         final CharSequence noText = mActivity.getText(R.string.no);
-
         mController.updateState(mPreference);
+
         verify(mPreference).setSummary(noText);
     }
 
     @Test
     public void handlePreferenceTreeClick_shouldStartManageDefaultAppIntent() {
         final ShadowActivity shadowActivity = shadowOf(mActivity);
-
         mController.handlePreferenceTreeClick(mPreference);
         final Intent intent = shadowActivity.getNextStartedActivity();
+
         assertThat(intent).isNotNull();
         assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MANAGE_DEFAULT_APP);
         assertThat(intent.getStringExtra(Intent.EXTRA_ROLE_NAME)).isEqualTo(TEST_ROLE_NAME);
@@ -172,76 +168,4 @@ public class DefaultAppShortcutPreferenceControllerBaseTest {
             super(context, TEST_PREFERENCE_KEY, TEST_ROLE_NAME, TEST_PACKAGE_NAME);
         }
     }
-
-    // TODO: STOPSHIP(b/110557011): Remove following tests once we have all default apps migrated.
-
-    @Test
-    public void getAvailabilityStatus_hasAppCapability_shouldReturnAvailable() {
-        mShadowUserManager.setManagedProfile(false);
-        mLegacyController.mHasAppCapability = true;
-
-        assertThat(mLegacyController.getAvailabilityStatus()).isEqualTo(
-                DefaultAppShortcutPreferenceControllerBase.AVAILABLE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_noAppCapability_shouldReturnDisabled() {
-        mShadowUserManager.setManagedProfile(false);
-        mLegacyController.mHasAppCapability = false;
-
-        assertThat(mLegacyController.getAvailabilityStatus()).isEqualTo(
-                DefaultAppShortcutPreferenceControllerBase.UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void updateState_isDefaultApp_shouldSetSummaryToYes() {
-        mLegacyController.mIsDefaultApp = true;
-        final CharSequence yesText = mActivity.getText(R.string.yes);
-
-        mLegacyController.updateState(mPreference);
-        verify(mPreference).setSummary(yesText);
-    }
-
-    @Test
-    public void updateState_notDefaultApp_shouldSetSummaryToNo() {
-        mLegacyController.mIsDefaultApp = false;
-        final CharSequence noText = mActivity.getText(R.string.no);
-
-        mLegacyController.updateState(mPreference);
-        verify(mPreference).setSummary(noText);
-    }
-
-    @Test
-    public void handlePreferenceTreeClick_shouldStartDefaultAppSettings() {
-        final ShadowActivity shadowActivity = shadowOf(mActivity);
-
-        mLegacyController.handlePreferenceTreeClick(mPreference);
-        final Intent intent = shadowActivity.getNextStartedActivity();
-        assertThat(intent).isNotNull();
-        assertThat(intent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)).isEqualTo(
-                DefaultAppSettings.class.getName());
-        assertThat(intent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS).getString(
-                SettingsActivity.EXTRA_FRAGMENT_ARG_KEY)).isEqualTo(TEST_PREFERENCE_KEY);
-    }
-
-    private class TestLegacyPreferenceController
-            extends DefaultAppShortcutPreferenceControllerBase {
-
-        private boolean mIsDefaultApp;
-        private boolean mHasAppCapability;
-
-        private TestLegacyPreferenceController(Context context) {
-            super(context, TEST_PREFERENCE_KEY, TEST_PACKAGE_NAME);
-        }
-
-        @Override
-        protected boolean hasAppCapability() {
-            return mHasAppCapability;
-        }
-
-        @Override
-        protected boolean isDefaultApp() {
-            return mIsDefaultApp;
-        }
-    }
 }
index 65b68aa..c2a3b4a 100644 (file)
@@ -18,15 +18,8 @@ package com.android.settings.applications.appinfo;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
 import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
+import android.permission.PermissionControllerManager;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -35,57 +28,27 @@ import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
-
-import java.util.ArrayList;
-import java.util.List;
+import org.robolectric.shadows.ShadowApplication;
 
 @RunWith(RobolectricTestRunner.class)
 public class DefaultBrowserShortcutPreferenceControllerTest {
 
     @Mock
-    private PackageManager mPackageManager;
+    private PermissionControllerManager mPermissionControllerManager;
 
-    private Context mContext;
     private DefaultBrowserShortcutPreferenceController mController;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getPackageManager()).thenReturn(mPackageManager);
-        mController = new DefaultBrowserShortcutPreferenceController(mContext, "Package1");
+        ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE,
+                mPermissionControllerManager);
+        mController = new DefaultBrowserShortcutPreferenceController(RuntimeEnvironment.application,
+                "Package1");
     }
 
     @Test
     public void getPreferenceKey_shouldReturnDefaultBrowser() {
         assertThat(mController.getPreferenceKey()).isEqualTo("default_browser");
     }
-
-    @Test
-    public void hasAppCapability_hasBrowserCapability_shouldReturnTrue() {
-        List<ResolveInfo> resolveInfos = new ArrayList<>();
-        resolveInfos.add(new ResolveInfo());
-        when(mPackageManager.queryIntentActivitiesAsUser(argThat(intent-> intent != null
-                && intent.getCategories().contains(Intent.CATEGORY_BROWSABLE)), anyInt(), anyInt()))
-                .thenReturn(resolveInfos);
-
-        assertThat(mController.hasAppCapability()).isTrue();
-    }
-
-    @Test
-    public void hasAppCapability_noBrowserCapability_shouldReturnFalse() {
-        assertThat(mController.hasAppCapability()).isFalse();
-    }
-
-    @Test
-    public void isDefaultApp_isDefaultBrowser_shouldReturnTrue() {
-        when(mPackageManager.getDefaultBrowserPackageNameAsUser(anyInt())).thenReturn("Package1");
-
-        assertThat(mController.isDefaultApp()).isTrue();
-    }
-
-    @Test
-    public void isDefaultApp_notDefaultBrowser_shouldReturnFalse() {
-        assertThat(mController.isDefaultApp()).isFalse();
-    }
 }
index 9f2ee44..8466092 100644 (file)
@@ -18,17 +18,8 @@ package com.android.settings.applications.appinfo;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.argThat;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.app.role.RoleManager;
 import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.provider.Settings;
-import android.telephony.TelephonyManager;
+import android.permission.PermissionControllerManager;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -37,62 +28,27 @@ import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import org.robolectric.shadows.ShadowApplication;
 
 @RunWith(RobolectricTestRunner.class)
 public class DefaultEmergencyShortcutPreferenceControllerTest {
 
     @Mock
-    private RoleManager mRoleManager;
-    @Mock
-    private PackageManager mPackageManager;
+    private PermissionControllerManager mPermissionControllerManager;
 
-    private Context mContext;
     private DefaultEmergencyShortcutPreferenceController mController;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getPackageManager()).thenReturn(mPackageManager);
-        when(mContext.getSystemService(RoleManager.class)).thenReturn(mRoleManager);
-        mController = new DefaultEmergencyShortcutPreferenceController(mContext, "Package1");
+        ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE,
+                mPermissionControllerManager);
+        mController = new DefaultEmergencyShortcutPreferenceController(
+                RuntimeEnvironment.application, "Package1");
     }
 
     @Test
     public void getPreferenceKey_shouldReturnDefaultEmergency() {
         assertThat(mController.getPreferenceKey()).isEqualTo("default_emergency_app");
     }
-
-    @Test
-    public void hasAppCapability_hasEmergencyCapability_shouldReturnTrue() {
-        List<ResolveInfo> resolveInfos = new ArrayList<>();
-        resolveInfos.add(new ResolveInfo());
-        when(mPackageManager.queryIntentActivities(argThat(intent-> intent != null
-                && intent.getAction().equals(TelephonyManager.ACTION_EMERGENCY_ASSISTANCE)),
-                anyInt())).thenReturn(resolveInfos);
-
-        assertThat(mController.hasAppCapability()).isTrue();
-    }
-
-    @Test
-    public void hasAppCapability_noEmergencyCapability_shouldReturnFalse() {
-        assertThat(mController.hasAppCapability()).isFalse();
-    }
-
-    @Test
-    public void isDefaultApp_isDefaultEmergency_shouldReturnTrue() {
-        when(mRoleManager.getRoleHolders(RoleManager.ROLE_EMERGENCY))
-                .thenReturn(Collections.singletonList("Package1"));
-
-        assertThat(mController.isDefaultApp()).isTrue();
-    }
-
-    @Test
-    public void isDefaultApp_notDefaultEmergency_shouldReturnFalse() {
-        assertThat(mController.isDefaultApp()).isFalse();
-    }
 }
index ff281b2..c5cae3a 100644 (file)
@@ -18,15 +18,8 @@ package com.android.settings.applications.appinfo;
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyList;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.pm.PackageManager;
-
-import com.android.settings.applications.defaultapps.DefaultHomePreferenceController;
+import android.permission.PermissionControllerManager;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -35,62 +28,27 @@ import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
+import org.robolectric.shadows.ShadowApplication;
 
 @RunWith(RobolectricTestRunner.class)
 public class DefaultHomeShortcutPreferenceControllerTest {
 
     @Mock
-    private PackageManager mPackageManager;
+    private PermissionControllerManager mPermissionControllerManager;
 
-    private Context mContext;
     private DefaultHomeShortcutPreferenceController mController;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        mContext = spy(RuntimeEnvironment.application);
-        when(mContext.getPackageManager()).thenReturn(mPackageManager);
-        mController = new DefaultHomeShortcutPreferenceController(mContext, "Package1");
+        ShadowApplication.getInstance().setSystemService(Context.PERMISSION_CONTROLLER_SERVICE,
+                mPermissionControllerManager);
+        mController = new DefaultHomeShortcutPreferenceController(RuntimeEnvironment.application,
+                "Package1");
     }
 
     @Test
     public void getPreferenceKey_shouldReturnDefaultHome() {
         assertThat(mController.getPreferenceKey()).isEqualTo("default_home");
     }
-
-    @Test
-    @Config(shadows = ShadowDefaultHomePreferenceController.class)
-    public void hasAppCapability_hasHomeCapability_shouldReturnTrue() {
-        assertThat(mController.hasAppCapability()).isTrue();
-    }
-
-    @Test
-    public void hasAppCapability_noHomeCapability_shouldReturnFalse() {
-        assertThat(mController.hasAppCapability()).isFalse();
-    }
-
-    @Test
-    public void isDefaultApp_isDefaultHome_shouldReturnTrue() {
-        when(mPackageManager.getHomeActivities(anyList()))
-                .thenReturn(new ComponentName("Package1", "cls1"));
-        assertThat(mController.isDefaultApp()).isTrue();
-    }
-
-    @Test
-    public void isDefaultApp_notDefaultHome_shouldReturnFalse() {
-        when(mPackageManager.getHomeActivities(anyList()))
-                .thenReturn(new ComponentName("pkg2", "cls1"));
-        assertThat(mController.isDefaultApp()).isFalse();
-    }
-
-    @Implements(DefaultHomePreferenceController.class)
-    public static class ShadowDefaultHomePreferenceController {
-        @Implementation
-        protected static boolean hasHomePreference(String pkg, Context context) {
-            return true;
-        }
-    }
 }