diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 755c6e37a0d..60821829451 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -3387,6 +3387,34 @@ android:value="com.android.settings.category.ia.accounts" /> + + + + + + + + + + + + + + + + + + Apps & notifications User & accounts + + App defaults Language: %1$s diff --git a/res/xml/app_default_settings.xml b/res/xml/app_default_settings.xml new file mode 100644 index 00000000000..c6e56a177e1 --- /dev/null +++ b/res/xml/app_default_settings.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 34dd09598fd..432dec34c7a 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -62,8 +62,8 @@ import com.android.settings.accounts.AccountSyncSettings; import com.android.settings.accounts.ChooseAccountActivity; import com.android.settings.accounts.ManagedProfileSettings; import com.android.settings.accounts.UserAndAccountDashboardFragment; -import com.android.settings.applications.AppAndNotificationDashboardFragment; import com.android.settings.applications.AdvancedAppSettings; +import com.android.settings.applications.AppAndNotificationDashboardFragment; import com.android.settings.applications.DrawOverlayDetails; import com.android.settings.applications.InstalledAppDetails; import com.android.settings.applications.ManageApplications; @@ -285,6 +285,7 @@ public class SettingsActivity extends SettingsDrawerActivity Settings.SupportDashboardActivity.class.getName(), // Home page > Apps & Notifications "com.android.settings.Settings.ManageApplicationsDashboardAlias", + "com.android.settings.Settings.PaymentSettingsDashboardAlias", // Home page > Network & Internet "com.android.settings.Settings.WifiDashboardAlias", "com.android.settings.Settings.DataUsageDashboardAlias", diff --git a/src/com/android/settings/applications/AdvancedAppSettings.java b/src/com/android/settings/applications/AdvancedAppSettings.java index 59c1fbec7e9..827b6e89037 100644 --- a/src/com/android/settings/applications/AdvancedAppSettings.java +++ b/src/com/android/settings/applications/AdvancedAppSettings.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,8 +24,10 @@ import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.PreferenceController; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; +import com.android.settingslib.drawer.CategoryKey; import java.util.Arrays; import java.util.List; @@ -41,7 +43,7 @@ public class AdvancedAppSettings extends DashboardFragment { @Override protected String getCategoryKey() { - return ""; + return CategoryKey.CATEGORY_APPS_DEFAULT; } @Override @@ -51,7 +53,9 @@ public class AdvancedAppSettings extends DashboardFragment { @Override protected int getPreferenceScreenResId() { - return R.xml.advanced_apps; + return mDashboardFeatureProvider.isEnabled() + ? R.xml.app_default_settings + : R.xml.advanced_apps; } @Override @@ -69,8 +73,11 @@ public class AdvancedAppSettings extends DashboardFragment { @Override public List getXmlResourcesToIndex( Context context, boolean enabled) { - SearchIndexableResource sir = new SearchIndexableResource(context); - sir.xmlResId = R.xml.advanced_apps; + final SearchIndexableResource sir = new SearchIndexableResource(context); + sir.xmlResId = FeatureFactory.getFactory(context) + .getDashboardFeatureProvider(context).isEnabled() + ? R.xml.app_default_settings + : R.xml.advanced_apps; return Arrays.asList(sir); } diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java index f868c1b6277..2329d12f6c7 100644 --- a/src/com/android/settings/applications/ManageApplications.java +++ b/src/com/android/settings/applications/ManageApplications.java @@ -245,7 +245,8 @@ public class ManageApplications extends InstrumentedFragment } if (className.equals(AllApplicationsActivity.class.getName())) { mShowSystem = true; - } else if (className.equals(NotificationAppListActivity.class.getName())) { + } else if (className.equals(NotificationAppListActivity.class.getName()) + || this instanceof NotificationApps) { mListType = LIST_TYPE_NOTIFICATION; mNotifBackend = new NotificationBackend(); } else if (className.equals(StorageUseActivity.class.getName())) { diff --git a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java new file mode 100644 index 00000000000..d0c58897735 --- /dev/null +++ b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.applications; + +import android.content.Context; + +import com.android.settings.R; +import com.android.settings.TestConfig; +import com.android.settings.testutils.FakeFeatureFactory; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowApplication; + +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.when; + +@RunWith(RobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class AdvancedAppSettingsTest { + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private Context mContext; + + private FakeFeatureFactory mFeatureFactory; + private AdvancedAppSettings mFragment; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + FakeFeatureFactory.setupForTest(mContext); + mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); + mFragment = new AdvancedAppSettings(); + mFragment.onAttach(ShadowApplication.getInstance().getApplicationContext()); + } + + @Test + public void getPreferenceScreenResId_differentIAEnabledState_shouldUseDifferentPrefLayout() { + when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true); + assertThat(mFragment.getPreferenceScreenResId()).isEqualTo( + R.xml.app_default_settings); + + when(mFeatureFactory.dashboardFeatureProvider.isEnabled()).thenReturn(false); + assertThat(mFragment.getPreferenceScreenResId()).isEqualTo( + R.xml.advanced_apps); + } + +}