[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:
@@ -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();
|
||||||
|
@@ -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 {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user