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

Commit 36dc648c authored by Jason Chiu's avatar Jason Chiu Committed by Automerger Merge Worker
Browse files

Merge "Finish HomepageActivity when it's not the root of a task and not...

Merge "Finish HomepageActivity when it's not the root of a task and not singleTask." into main am: 4f4bb89a

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2884507



Change-Id: I5b61af6e8d265bc62603554ff0236a62ba7f94a3
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 5cd56892 4f4bb89a
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -175,6 +175,12 @@ public class SettingsHomepageActivity extends FragmentActivity implements
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (!isTaskRoot() && !isSingleTask()) {
            Log.i(TAG, "Not task root nor single task, finish");
            finish();
            return;
        }

        mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this);
        if (mIsEmbeddingActivityEnabled) {
            final UserManager um = getSystemService(UserManager.class);
@@ -291,6 +297,12 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        updateSplitLayout();
    }

    private boolean isSingleTask() {
        ActivityInfo info = getIntent().resolveActivityInfo(getPackageManager(),
                PackageManager.MATCH_DEFAULT_ONLY);
        return info.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK;
    }

    private void updateSplitLayout() {
        if (!mIsEmbeddingActivityEnabled) {
            return;
+23 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -209,6 +210,28 @@ public class SettingsHomepageActivityTest {
                & SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS).isEqualTo(0);
    }

    @Test
    public void onCreate_notTaskRoot_shouldFinishActivity() {
        SettingsHomepageActivity activity =
                spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
        doReturn(false).when(activity).isTaskRoot();

        activity.onCreate(/* savedInstanceState */ null);

        verify(activity).finish();
    }

    @Test
    public void onCreate_singleTaskActivity_shouldNotFinishActivity() {
        SettingsHomepageActivity activity =
                spy(Robolectric.buildActivity(DeepLinkHomepageActivity.class).get());
        doReturn(false).when(activity).isTaskRoot();

        activity.onCreate(/* savedInstanceState */ null);

        verify(activity, never()).finish();
    }

    /** This test is for large screen devices Activity embedding. */
    @Test
    @Config(shadows = ShadowActivityEmbeddingUtils.class)