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

Commit a52de61f authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes Ie4172c40,I43661f61 into main

* changes:
  Clean-up overlay flag
  Extract background color from AnimationOptions
parents 5ac62be2 537db9ac
Loading
Loading
Loading
Loading
+1 −25
Original line number Diff line number Diff line
@@ -1152,7 +1152,6 @@ public final class TransitionInfo implements Parcelable {
            mEnterResId = in.readInt();
            mChangeResId = in.readInt();
            mExitResId = in.readInt();
            mBackgroundColor = in.readInt();
            mOverrideTaskTransition = in.readBoolean();
            mPackageName = in.readString();
            mTransitionBounds.readFromParcel(in);
@@ -1202,23 +1201,6 @@ public final class TransitionInfo implements Parcelable {
            customTransition.addCustomActivityTransition(enterResId, exitResId, backgroundColor);
        }

        /**
         * Make options for a custom animation based on anim resources.
         *
         * @param packageName the package name to find the animation resources
         * @param enterResId the open animation resources ID
         * @param exitResId the close animation resources ID
         * @param backgroundColor the background color
         * @param overrideTaskTransition whether to override the task transition
         */
        @NonNull
        public static AnimationOptions makeCustomAnimOptions(@NonNull String packageName,
                @AnimRes int enterResId, @AnimRes int exitResId, @ColorInt int backgroundColor,
                boolean overrideTaskTransition) {
            return makeCustomAnimOptions(packageName, enterResId, DEFAULT_ANIMATION_RESOURCES_ID,
                    exitResId, backgroundColor, overrideTaskTransition);
        }

        /**
         * Creates a {@link android.app.ActivityOptions#ANIM_CUSTOM} {@link AnimationOptions}.
         *
@@ -1231,13 +1213,12 @@ public final class TransitionInfo implements Parcelable {
        @NonNull
        public static AnimationOptions makeCustomAnimOptions(@NonNull String packageName,
                @AnimRes int enterResId, @AnimRes int changeResId, @AnimRes int exitResId,
                @ColorInt int backgroundColor, boolean overrideTaskTransition) {
                boolean overrideTaskTransition) {
            AnimationOptions options = new AnimationOptions(ANIM_CUSTOM);
            options.mPackageName = packageName;
            options.mEnterResId = enterResId;
            options.mChangeResId = changeResId;
            options.mExitResId = exitResId;
            options.mBackgroundColor = backgroundColor;
            options.mOverrideTaskTransition = overrideTaskTransition;
            return options;
        }
@@ -1313,10 +1294,6 @@ public final class TransitionInfo implements Parcelable {
            return mExitResId;
        }

        public @ColorInt int getBackgroundColor() {
            return mBackgroundColor;
        }

        public boolean getOverrideTaskTransition() {
            return mOverrideTaskTransition;
        }
@@ -1352,7 +1329,6 @@ public final class TransitionInfo implements Parcelable {
            dest.writeInt(mEnterResId);
            dest.writeInt(mChangeResId);
            dest.writeInt(mExitResId);
            dest.writeInt(mBackgroundColor);
            dest.writeBoolean(mOverrideTaskTransition);
            dest.writeString(mPackageName);
            mTransitionBounds.writeToParcel(dest, flags);
+0 −7
Original line number Diff line number Diff line
@@ -5,13 +5,6 @@
package: "com.android.window.flags"
container: "system"

flag {
    namespace: "windowing_sdk"
    name: "activity_embedding_overlay_presentation_flag"
    description: "Whether the overlay presentation feature is enabled"
    bug: "293370683"
}

flag {
    namespace: "windowing_sdk"
    name: "task_fragment_system_organizer_flag"
+1 −18
Original line number Diff line number Diff line
@@ -107,7 +107,6 @@ import androidx.window.extensions.embedding.TransactionManager.TransactionRecord
import androidx.window.extensions.layout.WindowLayoutComponentImpl;

import com.android.internal.annotations.VisibleForTesting;
import com.android.window.flags.Flags;

import java.util.ArrayList;
import java.util.Collections;
@@ -421,9 +420,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
    public void setActivityStackAttributesCalculator(
            @NonNull Function<ActivityStackAttributesCalculatorParams, ActivityStackAttributes>
                    calculator) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag()) {
            return;
        }
        synchronized (mLock) {
            mActivityStackAttributesCalculator = calculator;
        }
@@ -431,9 +427,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen

    @Override
    public void clearActivityStackAttributesCalculator() {
        if (!Flags.activityEmbeddingOverlayPresentationFlag()) {
            return;
        }
        synchronized (mLock) {
            mActivityStackAttributesCalculator = null;
        }
@@ -623,9 +616,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
    @Override
    public void updateActivityStackAttributes(@NonNull ActivityStack.Token activityStackToken,
                                              @NonNull ActivityStackAttributes attributes) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag()) {
            return;
        }
        Objects.requireNonNull(activityStackToken);
        Objects.requireNonNull(attributes);

@@ -652,9 +642,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
    @Nullable
    public ParentContainerInfo getParentContainerInfo(
            @NonNull ActivityStack.Token activityStackToken) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag()) {
            return null;
        }
        Objects.requireNonNull(activityStackToken);
        synchronized (mLock) {
            final TaskFragmentContainer container = getContainer(activityStackToken.getRawToken());
@@ -670,9 +657,6 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
    @Override
    @Nullable
    public ActivityStack.Token getActivityStackToken(@NonNull String tag) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag()) {
            return null;
        }
        Objects.requireNonNull(tag);
        synchronized (mLock) {
            final TaskFragmentContainer taskFragmentContainer =
@@ -3152,8 +3136,7 @@ public class SplitController implements JetpackTaskFragmentOrganizer.TaskFragmen
                final TaskFragmentContainer launchedInTaskFragment;
                if (launchingActivity != null) {
                    final String overlayTag = options.getString(KEY_OVERLAY_TAG);
                    if (Flags.activityEmbeddingOverlayPresentationFlag()
                            && overlayTag != null) {
                    if (overlayTag != null) {
                        launchedInTaskFragment = createOrUpdateOverlayTaskFragmentIfNeeded(wct,
                                options, intent, launchingActivity);
                    } else {
+1 −12
Original line number Diff line number Diff line
@@ -62,7 +62,6 @@ import androidx.window.extensions.layout.WindowLayoutInfo;

import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.window.flags.Flags;

import java.util.ArrayList;
import java.util.List;
@@ -465,9 +464,6 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer {
    void setTaskFragmentIsolatedNavigation(@NonNull WindowContainerTransaction wct,
                                           @NonNull TaskFragmentContainer container,
                                           boolean isolatedNavigationEnabled) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag() && container.isOverlay()) {
            return;
        }
        if (container.isIsolatedNavigationEnabled() == isolatedNavigationEnabled) {
            return;
        }
@@ -488,9 +484,6 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer {
    void setTaskFragmentPinned(@NonNull WindowContainerTransaction wct,
                               @NonNull TaskFragmentContainer container,
                               boolean pinned) {
        if (!Flags.activityEmbeddingOverlayPresentationFlag() && container.isOverlay()) {
            return;
        }
        if (container.isPinned() == pinned) {
            return;
        }
@@ -692,7 +685,7 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer {
        final TaskContainer taskContainer = container.getTaskContainer();
        final int windowingMode = taskContainer.getWindowingModeForTaskFragment(relativeBounds);
        updateTaskFragmentWindowingModeIfRegistered(wct, container, windowingMode);
        if (container.isOverlay() && isOverlayTransitionSupported()) {
        if (container.isOverlay()) {
            // Use the overlay transition for the overlay container if it's supported.
            final TaskFragmentAnimationParams params = createOverlayAnimationParams(relativeBounds,
                    taskContainer.getBounds(), container);
@@ -704,10 +697,6 @@ class SplitPresenter extends JetpackTaskFragmentOrganizer {
        setTaskFragmentDimOnTask(wct, fragmentToken, dimOnTask);
    }

    private static boolean isOverlayTransitionSupported() {
        return Flags.activityEmbeddingOverlayPresentationFlag();
    }

    @NonNull
    private static TaskFragmentAnimationParams createOverlayAnimationParams(
            @NonNull Rect relativeBounds, @NonNull Rect parentContainerBounds,
+0 −47
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;

import android.app.Activity;
import android.app.ActivityOptions;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ActivityInfo;
@@ -70,7 +69,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.platform.test.annotations.Presubmit;
import android.platform.test.flag.junit.SetFlagsRule;
import android.util.Size;
import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentInfo;
@@ -85,8 +83,6 @@ import androidx.window.common.DeviceStateManagerFoldingFeatureProducer;
import androidx.window.extensions.layout.WindowLayoutComponentImpl;
import androidx.window.extensions.layout.WindowLayoutInfo;

import com.android.window.flags.Flags;

import com.google.testing.junit.testparameterinjector.TestParameter;
import com.google.testing.junit.testparameterinjector.TestParameterInjector;

@@ -121,9 +117,6 @@ public class OverlayPresentationTest {
    private static final Intent PLACEHOLDER_INTENT = new Intent().setComponent(
            new ComponentName("test", "placeholder"));

    @Rule
    public final SetFlagsRule mSetFlagRule = new SetFlagsRule();

    private SplitController.ActivityStartMonitor mMonitor;

    private Intent mIntent;
@@ -168,8 +161,6 @@ public class OverlayPresentationTest {
        doReturn(activityConfig).when(mActivityResources).getConfiguration();
        doReturn(mHandler).when(mSplitController).getHandler();
        mActivity = createMockActivity();

        mSetFlagRule.enableFlags(Flags.FLAG_ACTIVITY_EMBEDDING_OVERLAY_PRESENTATION_FLAG);
    }

    /** Creates a mock activity in the organizer process. */
@@ -186,44 +177,6 @@ public class OverlayPresentationTest {
        return activity;
    }

    @Test
    public void testStartActivity_overlayFeatureDisabled_notInvokeCreateOverlayContainer() {
        mSetFlagRule.disableFlags(Flags.FLAG_ACTIVITY_EMBEDDING_OVERLAY_PRESENTATION_FLAG);

        final Bundle optionsBundle = ActivityOptions.makeBasic().toBundle();
        optionsBundle.putString(KEY_OVERLAY_TAG, "test");
        mMonitor.onStartActivity(mActivity, mIntent, optionsBundle);

        verify(mSplitController, never()).createOrUpdateOverlayTaskFragmentIfNeeded(any(), any(),
                any(), any());
    }

    @Test
    public void testSetIsolatedNavigation_overlayFeatureDisabled_earlyReturn() {
        mSetFlagRule.disableFlags(Flags.FLAG_ACTIVITY_EMBEDDING_OVERLAY_PRESENTATION_FLAG);

        final TaskFragmentContainer container = createTestOverlayContainer(TASK_ID, "test");

        mSplitPresenter.setTaskFragmentIsolatedNavigation(mTransaction, container,
                !container.isIsolatedNavigationEnabled());

        verify(mSplitPresenter, never()).setTaskFragmentIsolatedNavigation(any(),
                any(IBinder.class), anyBoolean());
    }

    @Test
    public void testSetPinned_overlayFeatureDisabled_earlyReturn() {
        mSetFlagRule.disableFlags(Flags.FLAG_ACTIVITY_EMBEDDING_OVERLAY_PRESENTATION_FLAG);

        final TaskFragmentContainer container = createTestOverlayContainer(TASK_ID, "test");

        mSplitPresenter.setTaskFragmentPinned(mTransaction, container,
                !container.isPinned());

        verify(mSplitPresenter, never()).setTaskFragmentPinned(any(), any(IBinder.class),
                anyBoolean());
    }

    @Test
    public void testGetAllNonFinishingOverlayContainers() {
        assertThat(mSplitController.getAllNonFinishingOverlayContainers()).isEmpty();
Loading