Merge "Finish HomepageActivity when it's not the root of a task and not singleTask." into main am: 4f4bb89a23
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2884507 Change-Id: I5b61af6e8d265bc62603554ff0236a62ba7f94a3 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -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;
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user