From 0c7c59f1b933e3e1a0060611d4cd6a7febc73460 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Fri, 26 Oct 2018 13:40:38 -0700 Subject: [PATCH] Make android.settings.SETTINGS intent go into homepage. Change-Id: Ib7453a79a473410c44bdcf06019446cedd34f837 Fixes: 117281845 Test: robotests --- AndroidManifest.xml | 19 ++++---- .../android/settings/SettingsActivity.java | 8 +--- .../homepage/SettingsHomepageActivity.java | 11 ++--- .../settings/SettingsActivityTest.java | 14 +++--- .../SettingsHomepageActivityTest.java | 47 +++++++++++++++++++ 5 files changed, 67 insertions(+), 32 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index bc832efcd87..1ffdba16ac2 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -111,13 +111,9 @@ - - - - - @@ -126,6 +122,12 @@ android:label="@string/settings_label_launcher" android:theme="@style/Theme.Settings.Home" android:launchMode="singleTask"> + + + + + - + android:exported="false" /> - - + android:exported="true" /> diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 8881fc2f56c..8ed368ca490 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -16,8 +16,6 @@ package com.android.settings; -import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO; - import android.app.ActionBar; import android.app.ActivityManager; import android.content.BroadcastReceiver; @@ -248,10 +246,8 @@ public class SettingsActivity extends SettingsBaseActivity // Getting Intent properties can only be done after the super.onCreate(...) final String initialFragmentName = intent.getStringExtra(EXTRA_SHOW_FRAGMENT); - final ComponentName cn = intent.getComponent(); - final String className = cn.getClassName(); - - mIsShowingDashboard = className.equals(Settings.class.getName()); + mIsShowingDashboard = TextUtils.equals( + SettingsActivity.class.getName(), intent.getComponent().getClassName()); // This is a "Sub Settings" when: // - this is a real SubSettings diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index b3d1aa43ff5..c10543dab6d 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -16,7 +16,6 @@ package com.android.settings.homepage; -import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.FeatureFlagUtils; @@ -27,6 +26,7 @@ import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import com.android.settings.R; +import com.android.settings.SettingsActivity; import com.android.settings.core.FeatureFlags; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.homepage.contextualcards.ContextualCardsFragment; @@ -38,9 +38,8 @@ public class SettingsHomepageActivity extends SettingsBaseActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (!isDynamicHomepageEnabled(this)) { - final Intent settings = new Intent(); - settings.setAction("android.settings.SETTINGS"); + if (!FeatureFlagUtils.isEnabled(this, FeatureFlags.DYNAMIC_HOMEPAGE)) { + final Intent settings = new Intent(this, SettingsActivity.class); startActivity(settings); finish(); return; @@ -56,10 +55,6 @@ public class SettingsHomepageActivity extends SettingsBaseActivity { showFragment(new TopLevelSettings(), R.id.main_content); } - public static boolean isDynamicHomepageEnabled(Context context) { - return FeatureFlagUtils.isEnabled(context, FeatureFlags.DYNAMIC_HOMEPAGE); - } - private void showFragment(Fragment fragment, int id) { final FragmentManager fragmentManager = getSupportFragmentManager(); final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); diff --git a/tests/robotests/src/com/android/settings/SettingsActivityTest.java b/tests/robotests/src/com/android/settings/SettingsActivityTest.java index 409512eb140..af25f4835df 100644 --- a/tests/robotests/src/com/android/settings/SettingsActivityTest.java +++ b/tests/robotests/src/com/android/settings/SettingsActivityTest.java @@ -71,10 +71,9 @@ public class SettingsActivityTest { @Test public void onCreate_deviceNotProvisioned_shouldDisableSearch() { 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(); + final SettingsActivity activity = Robolectric.buildActivity(SettingsActivity.class) + .create(Bundle.EMPTY) + .get(); assertThat(activity.findViewById(R.id.search_bar).getVisibility()) .isEqualTo(View.INVISIBLE); @@ -83,10 +82,9 @@ public class SettingsActivityTest { @Test public void onCreate_deviceProvisioned_shouldEnableSearch() { 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(); + final SettingsActivity activity = Robolectric.buildActivity(SettingsActivity.class) + .create(Bundle.EMPTY) + .get(); assertThat(activity.findViewById(R.id.search_bar).getVisibility()).isEqualTo(View.VISIBLE); } diff --git a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java new file mode 100644 index 00000000000..f1228194d49 --- /dev/null +++ b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2018 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.homepage; + +import static com.google.common.truth.Truth.assertThat; + +import android.util.FeatureFlagUtils; + +import com.android.settings.SettingsActivity; +import com.android.settings.core.FeatureFlags; +import com.android.settings.testutils.SettingsRobolectricTestRunner; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.Shadows; +import org.robolectric.shadows.ShadowActivity; + +@RunWith(SettingsRobolectricTestRunner.class) +public class SettingsHomepageActivityTest { + + @Test + public void launch_featureFlagOff_shouldRedirectToSettingsActivity() { + FeatureFlagUtils.setEnabled(RuntimeEnvironment.application, FeatureFlags.DYNAMIC_HOMEPAGE, + false); + + final ShadowActivity shadowActivity = Shadows.shadowOf( + Robolectric.setupActivity(SettingsHomepageActivity.class)); + assertThat(shadowActivity.getNextStartedActivity().getComponent().getClassName()) + .isEqualTo(SettingsActivity.class.getName()); + } +}