Finish HomepageActivity when it's not the root of a task and not singleTask.
HomepageActivity should be the first activity in a task, or be launched in singleTask mode. Finishing it will bring up the previous activity in the task. Fix: 297857732 Test: robotest Change-Id: Iddcba1652060d755693dd20d0e350e3d6c1ae138
This commit is contained in:
@@ -183,6 +183,12 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
if (!isTaskRoot() && !isSingleTask()) {
|
||||||
|
Log.i(TAG, "Not task root nor single task, finish");
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this);
|
mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this);
|
||||||
if (mIsEmbeddingActivityEnabled) {
|
if (mIsEmbeddingActivityEnabled) {
|
||||||
final UserManager um = getSystemService(UserManager.class);
|
final UserManager um = getSystemService(UserManager.class);
|
||||||
@@ -308,6 +314,12 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
|||||||
updateHomepageUI();
|
updateHomepageUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isSingleTask() {
|
||||||
|
ActivityInfo info = getIntent().resolveActivityInfo(getPackageManager(),
|
||||||
|
PackageManager.MATCH_DEFAULT_ONLY);
|
||||||
|
return info.launchMode == ActivityInfo.LAUNCH_SINGLE_TASK;
|
||||||
|
}
|
||||||
|
|
||||||
private void updateSplitLayout() {
|
private void updateSplitLayout() {
|
||||||
if (!mIsEmbeddingActivityEnabled) {
|
if (!mIsEmbeddingActivityEnabled) {
|
||||||
return;
|
return;
|
||||||
|
@@ -29,6 +29,7 @@ import static org.mockito.ArgumentMatchers.anyString;
|
|||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -210,6 +211,28 @@ public class SettingsHomepageActivityTest {
|
|||||||
& SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS).isEqualTo(0);
|
& 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. */
|
/** This test is for large screen devices Activity embedding. */
|
||||||
@Test
|
@Test
|
||||||
@Config(shadows = ShadowActivityEmbeddingUtils.class)
|
@Config(shadows = ShadowActivityEmbeddingUtils.class)
|
||||||
|
Reference in New Issue
Block a user