Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67dc170d authored by Arc Wang's avatar Arc Wang Committed by Automerger Merge Worker
Browse files

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

parents 778ef161 9e207bfc
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -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;
@@ -242,10 +243,21 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        if (isFinishing()) {
            return;
        }

        if (ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)
                && (intent.getFlags() & Intent.FLAG_ACTIVITY_CLEAR_TOP) != 0) {
            initSplitPairRules();
        }

        // Launch the intent from deep link for large screen devices.
        launchDeepLinkIntentToRight();
    }

    @VisibleForTesting
    void initSplitPairRules() {
        new ActivityEmbeddingRulesController(getApplicationContext()).initRules();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
@@ -502,7 +514,8 @@ public class SettingsHomepageActivity extends FragmentActivity implements
        return menuKey;
    }

    private void reloadHighlightMenuKey() {
    @VisibleForTesting
    void reloadHighlightMenuKey() {
        mMainFragment.getArguments().putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY,
                getHighlightMenuKey());
        mMainFragment.reloadHighlightMenuKey();
+20 −0
Original line number Diff line number Diff line
@@ -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 org.mockito.Mockito.doNothing;
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 +40,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 +199,22 @@ 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 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)
    public static class ShadowSuggestionFeatureProviderImpl {