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

Commit 9231b672 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "[RemoteInputView] Reorder fields + clean listener registration APIs"...

Merge "[RemoteInputView] Reorder fields + clean listener registration APIs" into sc-v2-dev am: 6afd143e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15950145

Change-Id: Iadec09eb6433a38136eeb531a2530aeeeac1725d
parents 39258b69 6afd143e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1253,7 +1253,7 @@ public class NotificationContentView extends FrameLayout {
            }
            if (hasRemoteInput) {
                existing.setWrapper(wrapper);
                existing.setOnVisibilityChangedListener(this::setRemoteInputVisible);
                existing.addOnVisibilityChangedListener(this::setRemoteInputVisible);

                if (existingPendingIntent != null || existing.isActive()) {
                    // The current action could be gone, or the pending intent no longer valid.
+42 −25
Original line number Diff line number Diff line
@@ -108,36 +108,36 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene

    private final SendButtonTextWatcher mTextWatcher;
    private final TextView.OnEditorActionListener mEditorActionHandler;
    private final UiEventLogger mUiEventLogger;
    private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
    private final List<OnFocusChangeListener> mEditTextFocusChangeListeners = new ArrayList<>();
    private final List<OnSendRemoteInputListener> mOnSendListeners = new ArrayList<>();
    private final ArrayList<OnSendRemoteInputListener> mOnSendListeners = new ArrayList<>();
    private final ArrayList<Consumer<Boolean>> mOnVisibilityChangedListeners = new ArrayList<>();
    private final ArrayList<OnFocusChangeListener> mEditTextFocusChangeListeners =
            new ArrayList<>();

    private RemoteEditText mEditText;
    private ImageButton mSendButton;
    private GradientDrawable mContentBackground;
    private ProgressBar mProgressBar;
    private PendingIntent mPendingIntent;
    private RemoteInput[] mRemoteInputs;
    private RemoteInput mRemoteInput;
    private RemoteInputController mController;

    private NotificationEntry mEntry;

    private boolean mRemoved;

    private ImageView mDelete;
    private ImageView mDeleteBg;
    // TODO(b/193539698): remove reveal param fields, turn them into parameters where needed
    private int mRevealCx;
    private int mRevealCy;
    private int mRevealR;

    private boolean mColorized;
    private int mTint;

    private boolean mResetting;
    private NotificationViewWrapper mWrapper;
    private Consumer<Boolean> mOnVisibilityChangedListener;

    // TODO(b/193539698): move these to a Controller
    private RemoteInputController mController;
    private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
    private final UiEventLogger mUiEventLogger;
    private NotificationEntry mEntry;
    private PendingIntent mPendingIntent;
    private RemoteInput mRemoteInput;
    private RemoteInput[] mRemoteInputs;
    private NotificationRemoteInputManager.BouncerChecker mBouncerChecker;
    private ImageView mDelete;
    private ImageView mDeleteBg;
    private boolean mRemoved;
    private NotificationViewWrapper mWrapper;

    /**
     * Enum for logged notification remote input UiEvents.
@@ -382,7 +382,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
    private void sendRemoteInput(Intent intent) {
        if (mBouncerChecker != null && mBouncerChecker.showBouncerIfNecessary()) {
            mEditText.hideIme();
            for (OnSendRemoteInputListener listener : mOnSendListeners) {
            for (OnSendRemoteInputListener listener : new ArrayList<>(mOnSendListeners)) {
                listener.onSendRequestBounced();
            }
            return;
@@ -399,7 +399,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
        mController.remoteInputSent(mEntry);
        mEntry.setHasSentReply();

        for (OnSendRemoteInputListener listener : mOnSendListeners) {
        for (OnSendRemoteInputListener listener : new ArrayList<>(mOnSendListeners)) {
            listener.onSendRemoteInput();
        }

@@ -760,15 +760,32 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
        mWrapper = wrapper;
    }

    public void setOnVisibilityChangedListener(Consumer<Boolean> visibilityChangedListener) {
        mOnVisibilityChangedListener = visibilityChangedListener;
    /**
     * Register a listener to be notified when this view's visibility changes.
     *
     * Specifically, the passed {@link Consumer} will receive {@code true} when
     * {@link #getVisibility()} would return {@link View#VISIBLE}, and {@code false} it would return
     * any other value.
     */
    public void addOnVisibilityChangedListener(Consumer<Boolean> listener) {
        mOnVisibilityChangedListeners.add(listener);
    }

    /**
     * Unregister a listener previously registered via
     * {@link #addOnVisibilityChangedListener(Consumer)}.
     */
    public void removeOnVisibilityChangedListener(Consumer<Boolean> listener) {
        mOnVisibilityChangedListeners.remove(listener);
    }

    @Override
    protected void onVisibilityChanged(View changedView, int visibility) {
        super.onVisibilityChanged(changedView, visibility);
        if (changedView == this && mOnVisibilityChangedListener != null) {
            mOnVisibilityChangedListener.accept(visibility == VISIBLE);
        if (changedView == this) {
            for (Consumer<Boolean> listener : new ArrayList<>(mOnVisibilityChangedListeners)) {
                listener.accept(visibility == VISIBLE);
            }
            // Hide soft-keyboard when the input view became invisible
            // (i.e. The notification shade collapsed by pressing the home key)
            if (visibility != VISIBLE && !mEditText.isVisibleToUser()
+1 −1
Original line number Diff line number Diff line
@@ -205,7 +205,7 @@ public class RemoteInputViewTest extends SysuiTestCase {
        ExpandableNotificationRow row = helper.createRow();
        RemoteInputView view = RemoteInputView.inflate(mContext, null, row.getEntry(), mController);

        view.setOnVisibilityChangedListener(null);
        view.addOnVisibilityChangedListener(null);
        view.setVisibility(View.INVISIBLE);
        view.setVisibility(View.VISIBLE);
    }