From 21526c1f801bb6fa41de503cc4e09523ada41475 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 6 Sep 2018 15:44:26 -0700 Subject: [PATCH] Launch the new TopLevelSettings for all settings tab. The new TopLevelSettings page uses a standard DashboardFragment to host all top level settings. It's easier to maintain than DashboardSummary. It does not support conditional cards or suggestion cards. We will use PersonalSettingsFragment to host these as contextual cards going forward. Bug: 110405144 Test: visual Change-Id: I2ab2d3556e870e86ebc18f9876336c4a3a361897 --- src/com/android/settings/SettingsActivity.java | 10 ++++++++-- src/com/android/settings/SettingsHomepageActivity.java | 6 +++--- .../settings/homepage/PersonalSettingsFragment.java | 2 +- .../src/com/android/settings/SettingsActivityTest.java | 9 ++++++--- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 4ca1c2cb688..cde2aca820c 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -62,6 +62,7 @@ import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.gateway.SettingsGateway; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.DashboardSummary; +import com.android.settings.homepage.TopLevelSettings; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.DeviceIndexFeatureProvider; import com.android.settings.wfd.WifiDisplaySettings; @@ -403,8 +404,13 @@ public class SettingsActivity extends SettingsBaseActivity // Show search icon as up affordance if we are displaying the main Dashboard mInitialTitleResId = R.string.dashboard_title; - switchToFragment(DashboardSummary.class.getName(), null /* args */, false, false, - mInitialTitleResId, mInitialTitle, false); + if (SettingsHomepageActivity.isDynamicHomepageEnabled(this)) { + switchToFragment(TopLevelSettings.class.getName(), null /* args */, false, false, + mInitialTitleResId, mInitialTitle, false); + } else { + switchToFragment(DashboardSummary.class.getName(), null /* args */, false, false, + mInitialTitleResId, mInitialTitle, false); + } } } diff --git a/src/com/android/settings/SettingsHomepageActivity.java b/src/com/android/settings/SettingsHomepageActivity.java index de25cf4e27a..77155e00000 100644 --- a/src/com/android/settings/SettingsHomepageActivity.java +++ b/src/com/android/settings/SettingsHomepageActivity.java @@ -29,6 +29,7 @@ import com.android.settings.core.FeatureFlags; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.dashboard.DashboardSummary; import com.android.settings.homepage.PersonalSettingsFragment; +import com.android.settings.homepage.TopLevelSettings; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.SearchFeatureProvider; @@ -58,8 +59,7 @@ public class SettingsHomepageActivity extends SettingsBaseActivity { FeatureFactory.getFactory(this).getSearchFeatureProvider() .initSearchToolbar(this, searchButton); - final BottomNavigationView navigation = (BottomNavigationView) findViewById( - R.id.bottom_nav); + final BottomNavigationView navigation = findViewById(R.id.bottom_nav); navigation.setOnNavigationItemSelectedListener(item -> { switch (item.getItemId()) { case R.id.homepage_personal_settings: @@ -68,7 +68,7 @@ public class SettingsHomepageActivity extends SettingsBaseActivity { return true; case R.id.homepage_all_settings: - switchFragment(DashboardSummary.class.getName(), ALL_SETTINGS_TAG, + switchFragment(TopLevelSettings.class.getName(), ALL_SETTINGS_TAG, PERSONAL_SETTINGS_TAG); return true; } diff --git a/src/com/android/settings/homepage/PersonalSettingsFragment.java b/src/com/android/settings/homepage/PersonalSettingsFragment.java index b515e294071..1894e5e3696 100644 --- a/src/com/android/settings/homepage/PersonalSettingsFragment.java +++ b/src/com/android/settings/homepage/PersonalSettingsFragment.java @@ -54,7 +54,7 @@ public class PersonalSettingsFragment extends InstrumentedFragment { Bundle savedInstanceState) { final View rootView = inflater.inflate(R.layout.settings_homepage, container, false); - mCardsContainer = (RecyclerView) rootView.findViewById(R.id.card_container); + mCardsContainer = rootView.findViewById(R.id.card_container); mLayoutManager = new GridLayoutManager(getActivity(), SPAN_COUNT, LinearLayoutManager.VERTICAL, false /* reverseLayout */); mCardsContainer.setLayoutManager(mLayoutManager); diff --git a/tests/robotests/src/com/android/settings/SettingsActivityTest.java b/tests/robotests/src/com/android/settings/SettingsActivityTest.java index 723978f9bb1..409512eb140 100644 --- a/tests/robotests/src/com/android/settings/SettingsActivityTest.java +++ b/tests/robotests/src/com/android/settings/SettingsActivityTest.java @@ -73,10 +73,11 @@ public class SettingsActivityTest { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 0); final Intent intent = new Intent(mContext, Settings.class); final SettingsActivity activity = - Robolectric.buildActivity(SettingsActivity.class, intent).create(Bundle.EMPTY).get(); + Robolectric.buildActivity(SettingsActivity.class, intent).create( + Bundle.EMPTY).get(); assertThat(activity.findViewById(R.id.search_bar).getVisibility()) - .isEqualTo(View.INVISIBLE); + .isEqualTo(View.INVISIBLE); } @Test @@ -84,7 +85,8 @@ public class SettingsActivityTest { Global.putInt(mContext.getContentResolver(), Global.DEVICE_PROVISIONED, 1); final Intent intent = new Intent(mContext, Settings.class); final SettingsActivity activity = - Robolectric.buildActivity(SettingsActivity.class, intent).create(Bundle.EMPTY).get(); + Robolectric.buildActivity(SettingsActivity.class, intent).create( + Bundle.EMPTY).get(); assertThat(activity.findViewById(R.id.search_bar).getVisibility()).isEqualTo(View.VISIBLE); } @@ -92,6 +94,7 @@ public class SettingsActivityTest { @Test public void launchSettingFragment_nullExtraShowFragment_shouldNotCrash() { when(mActivity.getSupportFragmentManager()).thenReturn(mFragmentManager); + doReturn(mContext.getContentResolver()).when(mActivity).getContentResolver(); when(mFragmentManager.beginTransaction()).thenReturn(mock(FragmentTransaction.class)); doReturn(RuntimeEnvironment.application.getClassLoader()).when(mActivity).getClassLoader();