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

Commit 6f086b06 authored by Johannes Gallmann's avatar Johannes Gallmann Committed by David Lin
Browse files

Fix RemoteInputView not visible when Reply tapped from AOD

Bug: <325118951>
Flag: NONE
Test: atest RemoteInputViewTest
Test: Manual, i.e. verifying that RIV is visible after the following sequence of events: tap reply from AOD, post notification update, tap reply again from AOD
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:150e981c20d8b9a58df0fe8c1f993afe0246bd35)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:bc6360267959019c0ef59775af540516584ecc0b)
Merged-In: I7b478bf3071c0fbcebcfdaa1c2b902e0091387b3
Change-Id: I7b478bf3071c0fbcebcfdaa1c2b902e0091387b3
24D1-dev is based on 24Q2-release. Therefore, we merged this CL to 24D1-dev.
parent b75186ff
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -454,6 +454,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
                        setTopMargin(0);
                        if (grandParent != null) grandParent.setClipChildren(true);
                        setVisibility(GONE);
                        setAlpha(1f);
                        if (mWrapper != null) {
                            mWrapper.setRemoteInputVisible(false);
                        }
+30 −1
Original line number Diff line number Diff line
@@ -67,11 +67,11 @@ import androidx.test.filters.SmallTest;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.testing.UiEventLoggerFake;
import com.android.systemui.Dependency;
import com.android.systemui.res.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.animation.AnimatorTestRule;
import com.android.systemui.flags.FakeFeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.res.R;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -449,6 +449,35 @@ public class RemoteInputViewTest extends SysuiTestCase {
        assertEquals(1f, fadeInView.getAlpha());
    }

    @Test
    public void testUnanimatedFocusAfterDefocusAnimation() throws Exception {
        mFeatureFlags.set(Flags.NOTIFICATION_INLINE_REPLY_ANIMATION, true);
        NotificationTestHelper helper = new NotificationTestHelper(
                mContext,
                mDependency,
                TestableLooper.get(this));
        ExpandableNotificationRow row = helper.createRow();
        RemoteInputView view = RemoteInputView.inflate(mContext, null, row.getEntry(), mController);
        bindController(view, row.getEntry());

        FrameLayout parent = new FrameLayout(mContext);
        parent.addView(view);

        // Play defocus animation
        view.onDefocus(true /* animate */, false /* logClose */, null /* doAfterDefocus */);
        mAnimatorTestRule.advanceTimeBy(ANIMATION_DURATION_STANDARD);

        // assert that RemoteInputView is no longer visible, but alpha is reset to 1f
        assertEquals(View.GONE, view.getVisibility());
        assertEquals(1f, view.getAlpha());

        // focus RemoteInputView without an animation
        view.focus();
        // assert that RemoteInputView is visible, and alpha is 1f
        assertEquals(View.VISIBLE, view.getVisibility());
        assertEquals(1f, view.getAlpha());
    }

    // NOTE: because we're refactoring the RemoteInputView and moving logic into the
    // RemoteInputViewController, it's easiest to just test the system of the two classes together.
    @NonNull