From 92a2613353cec71ea390234414ffb8f95a5df01a Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 6 Feb 2018 14:24:18 -0800 Subject: [PATCH] Use framework onNavigateUp() instead of simply finish(). - Simply finishing activity bypasses the entire nav-up chain, making taskAffinity/parentActivity defined in androidmanifest.xml no-op, which is bad. - Also removed showMenu() logic, this is from drawer era and was only needed by mobile settings. We no longer need drawer so this method can be removed. Bug: 72337421 Test: atest Change-Id: Idee1b72751363b5162887a799197404a9498c83e --- .../settingslib/drawer/SettingsDrawerActivity.java | 32 ++++---------------- .../drawer/SettingsDrawerActivityTest.java | 34 ++++------------------ 2 files changed, 11 insertions(+), 55 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java index 190f5e6d1402..68ead09d9d57 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java @@ -17,7 +17,6 @@ package com.android.settingslib.drawer; import android.annotation.LayoutRes; import android.annotation.Nullable; -import android.app.ActionBar; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -72,9 +71,9 @@ public class SettingsDrawerActivity extends Activity { requestWindowFeature(Window.FEATURE_NO_TITLE); } super.setContentView(R.layout.settings_with_drawer); - mContentHeaderContainer = (FrameLayout) findViewById(R.id.content_header_container); + mContentHeaderContainer = findViewById(R.id.content_header_container); - Toolbar toolbar = (Toolbar) findViewById(R.id.action_bar); + Toolbar toolbar = findViewById(R.id.action_bar); if (theme.getBoolean(android.R.styleable.Theme_windowNoTitle, false)) { toolbar.setVisibility(View.GONE); return; @@ -89,7 +88,9 @@ public class SettingsDrawerActivity extends Activity { @Override public boolean onNavigateUp() { - finish(); + if (!super.onNavigateUp()) { + finish(); + } return true; } @@ -104,11 +105,6 @@ public class SettingsDrawerActivity extends Activity { registerReceiver(mPackageReceiver, filter); new CategoriesUpdateTask().execute(); - final Intent intent = getIntent(); - if (intent != null && intent.getBooleanExtra(EXTRA_SHOW_MENU, false)) { - // Intent explicitly set to show menu. - showMenuIcon(); - } } @Override @@ -125,13 +121,6 @@ public class SettingsDrawerActivity extends Activity { mCategoryListeners.remove(listener); } - public void setContentHeaderView(View headerView) { - mContentHeaderContainer.removeAllViews(); - if (headerView != null) { - mContentHeaderContainer.addView(headerView); - } - } - @Override public void setContentView(@LayoutRes int layoutResID) { final ViewGroup parent = findViewById(R.id.content_frame); @@ -151,13 +140,6 @@ public class SettingsDrawerActivity extends Activity { ((ViewGroup) findViewById(R.id.content_frame)).addView(view, params); } - private void showMenuIcon() { - final ActionBar actionBar = getActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - } - } - private void onCategoriesChanged() { final int N = mCategoryListeners.size(); for (int i = 0; i < N; i++) { @@ -165,10 +147,6 @@ public class SettingsDrawerActivity extends Activity { } } - public void onProfileTileOpen() { - finish(); - } - /** * @return whether or not the enabled state actually changed. */ diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/drawer/SettingsDrawerActivityTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/drawer/SettingsDrawerActivityTest.java index 003f90579415..2f417adb7077 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/drawer/SettingsDrawerActivityTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/drawer/SettingsDrawerActivityTest.java @@ -18,8 +18,6 @@ package com.android.settingslib.drawer; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist; -import static android.support.test.espresso.assertion.ViewAssertions.matches; -import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription; import android.app.Instrumentation; @@ -49,42 +47,22 @@ public class SettingsDrawerActivityTest { } @Test - public void startActivityWithNoExtra_showNoNavUp() { - Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); - instrumentation.startActivitySync(new Intent(instrumentation.getTargetContext(), - TestActivity.class)); - - onView(withContentDescription(com.android.internal.R.string.action_bar_up_description)) - .check(doesNotExist()); - } - - @Test - public void startActivityWithExtraToHideMenu_showNavUp() { - Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); - Intent intent = new Intent(instrumentation.getTargetContext(), TestActivity.class) - .putExtra(TestActivity.EXTRA_SHOW_MENU, false); + public void startActivity_doNotShowNavUp() { + final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); + final Intent intent = new Intent(instrumentation.getTargetContext(), TestActivity.class) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); instrumentation.startActivitySync(intent); onView(withContentDescription(com.android.internal.R.string.action_bar_up_description)) .check(doesNotExist()); } - @Test - public void startActivityWithExtraToShowMenu_showNavUp() { - Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); - Intent intent = new Intent(instrumentation.getTargetContext(), TestActivity.class) - .putExtra(TestActivity.EXTRA_SHOW_MENU, true); - instrumentation.startActivitySync(intent); - - onView(withContentDescription(com.android.internal.R.string.action_bar_up_description)) - .check(matches(isDisplayed())); - } - /** * Test Activity in this test. * * Use this activity because SettingsDrawerActivity hasn't been registered in its * AndroidManifest.xml */ - public static class TestActivity extends SettingsDrawerActivity {} + public static class TestActivity extends SettingsDrawerActivity { + } } -- 2.11.0