[Activity embedding] Fix unexpected finished 2nd layer problem am: 9e207bfcd0

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

Change-Id: I0ed23ce19ce4dca5308ecae20e891f4476738258
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Arc Wang
2022-11-01 02:54:36 +00:00
committed by Automerger Merge Worker
2 changed files with 34 additions and 1 deletions

View File

@@ -43,6 +43,7 @@ import android.widget.FrameLayout;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Toolbar; import android.widget.Toolbar;
import androidx.annotation.VisibleForTesting;
import androidx.core.graphics.Insets; import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.view.WindowCompat; import androidx.core.view.WindowCompat;
@@ -242,10 +243,21 @@ public class SettingsHomepageActivity extends FragmentActivity implements
if (isFinishing()) { if (isFinishing()) {
return; return;
} }
if (ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)
&& (intent.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) {
initSplitPairRules();
}
// Launch the intent from deep link for large screen devices. // Launch the intent from deep link for large screen devices.
launchDeepLinkIntentToRight(); launchDeepLinkIntentToRight();
} }
@VisibleForTesting
void initSplitPairRules() {
new ActivityEmbeddingRulesController(getApplicationContext()).initRules();
}
@Override @Override
public void onConfigurationChanged(Configuration newConfig) { public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);
@@ -502,7 +514,8 @@ public class SettingsHomepageActivity extends FragmentActivity implements
return menuKey; return menuKey;
} }
private void reloadHighlightMenuKey() { @VisibleForTesting
void reloadHighlightMenuKey() {
mMainFragment.getArguments().putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, mMainFragment.getArguments().putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY,
getHighlightMenuKey()); getHighlightMenuKey());
mMainFragment.reloadHighlightMenuKey(); mMainFragment.reloadHighlightMenuKey();

View File

@@ -20,12 +20,15 @@ import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTE
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
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;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
@@ -37,6 +40,7 @@ import androidx.fragment.app.Fragment;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl; import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl;
import com.android.settings.homepage.contextualcards.slices.BatteryFixSliceTest; import com.android.settings.homepage.contextualcards.slices.BatteryFixSliceTest;
import com.android.settings.testutils.shadow.ShadowActivityEmbeddingUtils;
import com.android.settings.testutils.shadow.ShadowUserManager; import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin; import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
@@ -195,6 +199,22 @@ public class SettingsHomepageActivityTest {
& SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS).isEqualTo(0); & SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS).isEqualTo(0);
} }
/** This test is for large screen devices Activity embedding. */
@Test
@Config(shadows = ShadowActivityEmbeddingUtils.class)
public void onNewIntent_flagClearTop_shouldInitRules() {
ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(true);
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
doNothing().when(activity).reloadHighlightMenuKey();
TopLevelSettings topLevelSettings = mock(TopLevelSettings.class);
doReturn(topLevelSettings).when(activity).getMainFragment();
activity.onNewIntent(new Intent().setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
verify(activity).initSplitPairRules();
}
@Implements(SuggestionFeatureProviderImpl.class) @Implements(SuggestionFeatureProviderImpl.class)
public static class ShadowSuggestionFeatureProviderImpl { public static class ShadowSuggestionFeatureProviderImpl {