diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java index cce8b7d02fb..b623801db7e 100644 --- a/src/com/android/settings/applications/AdvancedAppSettings.java +++ b/src/com/android/settings/applications/AdvancedAppSettings.java @@ -18,8 +18,8 @@ package com.android.settings.applications; import android.app.Activity; import android.content.Context; import android.provider.SearchIndexableResource; - import android.text.TextUtils; + import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController; @@ -57,6 +57,15 @@ public class AdvancedAppSettings extends DashboardFragment { @Override protected List getPreferenceControllers(Context context) { + return buildPreferenceControllers(context); + } + + @Override + public int getMetricsCategory() { + return MetricsEvent.APPLICATIONS_ADVANCED; + } + + private static List buildPreferenceControllers(Context context) { final List controllers = new ArrayList<>(); controllers.add(new DefaultBrowserPreferenceController(context)); controllers.add(new DefaultWorkBrowserPreferenceController(context)); @@ -68,11 +77,6 @@ public class AdvancedAppSettings extends DashboardFragment { return controllers; } - @Override - public int getMetricsCategory() { - return MetricsEvent.APPLICATIONS_ADVANCED; - } - public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override @@ -94,6 +98,11 @@ public class AdvancedAppSettings extends DashboardFragment { .getPreferenceKey()); return keys; } + + @Override + public List getPreferenceControllers(Context context) { + return buildPreferenceControllers(context); + } }; static class SummaryProvider implements SummaryLoader.SummaryProvider { @@ -118,10 +127,10 @@ public class AdvancedAppSettings extends DashboardFragment { return; } CharSequence summary = concatSummaryText( - mDefaultSmsPreferenceController.getDefaultAppLabel(), - mDefaultBrowserPreferenceController.getDefaultAppLabel()); + mDefaultSmsPreferenceController.getDefaultAppLabel(), + mDefaultBrowserPreferenceController.getDefaultAppLabel()); summary = concatSummaryText(summary, - mDefaultPhonePreferenceController.getDefaultAppLabel()); + mDefaultPhonePreferenceController.getDefaultAppLabel()); if (!TextUtils.isEmpty(summary)) { mSummaryLoader.setSummary(this, summary); } @@ -139,11 +148,11 @@ public class AdvancedAppSettings extends DashboardFragment { } public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY = - new SummaryLoader.SummaryProviderFactory() { - @Override - public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity, - SummaryLoader summaryLoader) { - return new AdvancedAppSettings.SummaryProvider(activity, summaryLoader); - } - }; + new SummaryLoader.SummaryProviderFactory() { + @Override + public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity, + SummaryLoader summaryLoader) { + return new AdvancedAppSettings.SummaryProvider(activity, summaryLoader); + } + }; } diff --git a/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider b/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider index 1712f1938ac..b3290725c98 100644 --- a/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider +++ b/tests/robotests/assets/grandfather_not_sharing_pref_controllers_with_search_provider @@ -1,2 +1 @@ -com.android.settings.applications.AdvancedAppSettings com.android.settings.fuelgauge.PowerUsageSummary diff --git a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java index 0c3c1600577..6960575d134 100644 --- a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java +++ b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java @@ -17,16 +17,19 @@ package com.android.settings.applications; import android.content.Context; +import android.content.pm.PackageManager; +import android.os.UserManager; +import android.telephony.TelephonyManager; import com.android.settings.R; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; - import com.android.settings.applications.defaultapps.DefaultBrowserPreferenceController; import com.android.settings.applications.defaultapps.DefaultPhonePreferenceController; import com.android.settings.applications.defaultapps.DefaultSmsPreferenceController; import com.android.settings.dashboard.SummaryLoader; import com.android.settings.testutils.XmlTestUtils; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -38,8 +41,10 @@ import org.robolectric.util.ReflectionHelpers; import java.util.List; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; @@ -73,18 +78,18 @@ public class AdvancedAppSettingsTest { public void setListening_shouldUpdateSummary() { final SummaryLoader summaryLoader = mock(SummaryLoader.class); final AdvancedAppSettings.SummaryProvider summaryProvider = - new AdvancedAppSettings.SummaryProvider(mContext, summaryLoader); + new AdvancedAppSettings.SummaryProvider(mContext, summaryLoader); final DefaultSmsPreferenceController defaultSms = - mock(DefaultSmsPreferenceController.class); + mock(DefaultSmsPreferenceController.class); final DefaultBrowserPreferenceController defaultBrowser = - mock(DefaultBrowserPreferenceController.class); + mock(DefaultBrowserPreferenceController.class); final DefaultPhonePreferenceController defaultPhone = - mock(DefaultPhonePreferenceController.class); + mock(DefaultPhonePreferenceController.class); ReflectionHelpers.setField(summaryProvider, "mDefaultSmsPreferenceController", defaultSms); ReflectionHelpers.setField( - summaryProvider, "mDefaultBrowserPreferenceController", defaultBrowser); + summaryProvider, "mDefaultBrowserPreferenceController", defaultBrowser); ReflectionHelpers.setField( - summaryProvider, "mDefaultPhonePreferenceController", defaultPhone); + summaryProvider, "mDefaultPhonePreferenceController", defaultPhone); // all available when(defaultSms.getDefaultAppLabel()).thenReturn("Sms1"); @@ -140,12 +145,23 @@ public class AdvancedAppSettingsTest { } - @Test public void testNonIndexableKeys_existInXmlLayout() { final Context context = spy(RuntimeEnvironment.application); + final Context mockContext = mock(Context.class); + final UserManager userManager = mock(UserManager.class, RETURNS_DEEP_STUBS); + + when(mockContext.getSystemService(Context.USER_SERVICE)) + .thenReturn(userManager); + when(userManager.getUserInfo(anyInt()).isRestricted()).thenReturn(true); + + when(mockContext.getSystemService(Context.TELEPHONY_SERVICE)) + .thenReturn(mock(TelephonyManager.class)); + when(mockContext.getPackageManager()) + .thenReturn(mock(PackageManager.class)); final List niks = AdvancedAppSettings.SEARCH_INDEX_DATA_PROVIDER - .getNonIndexableKeys(context); + .getNonIndexableKeys(mockContext); + final int xmlId = (new AdvancedAppSettings()).getPreferenceScreenResId(); final List keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);