Merge "[Activity embedding] Fix unexpected finished 2nd layer problem"
This commit is contained in:
@@ -43,6 +43,7 @@ import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toolbar;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.core.graphics.Insets;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.WindowCompat;
|
||||
@@ -223,10 +224,23 @@ public class SettingsHomepageActivity extends FragmentActivity implements
|
||||
if (shouldLaunchDeepLinkIntentToRight()) {
|
||||
launchDeepLinkIntentToRight();
|
||||
}
|
||||
|
||||
// Settings app may be launched on an existing task. Reset SplitPairRule of SubSettings here
|
||||
// to prevent SplitPairRule of an existing task applied on a new started Settings app.
|
||||
if (ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)
|
||||
&& (getIntent().getFlags() & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) {
|
||||
initSplitPairRules();
|
||||
}
|
||||
|
||||
updateHomepagePaddings();
|
||||
updateSplitLayout();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void initSplitPairRules() {
|
||||
new ActivityEmbeddingRulesController(getApplicationContext()).initRules();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
((SettingsApplication) getApplication()).setHomeActivity(this);
|
||||
|
@@ -20,12 +20,14 @@ import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTE
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
@@ -37,6 +39,7 @@ import androidx.fragment.app.Fragment;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl;
|
||||
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.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
|
||||
|
||||
@@ -195,6 +198,20 @@ public class SettingsHomepageActivityTest {
|
||||
& 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 onCreate_flagClearTop_shouldInitRules() {
|
||||
ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(true);
|
||||
SettingsHomepageActivity activity =
|
||||
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
|
||||
doReturn(new Intent().setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).when(activity).getIntent();
|
||||
|
||||
activity.onCreate(/* savedInstanceState */ null);
|
||||
|
||||
verify(activity).initSplitPairRules();
|
||||
}
|
||||
|
||||
@Implements(SuggestionFeatureProviderImpl.class)
|
||||
public static class ShadowSuggestionFeatureProviderImpl {
|
||||
|
||||
|
Reference in New Issue
Block a user