Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92a26133 authored by Fan Zhang's avatar Fan Zhang
Browse files

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
parent c65eb444
Loading
Loading
Loading
Loading
+5 −27
Original line number Diff line number Diff line
@@ -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() {
        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.
     */
+6 −28
Original line number Diff line number Diff line
@@ -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 {
    }
}