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

Commit fc638c76 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Merge cherrypicks of [9111140, 9111141, 9111142, 9111143, 9109055] into qt-release

Change-Id: Ic77feced411fac42d289171f3c68ef95d64b1636
parents 690eef6d 6ec7dd25
Loading
Loading
Loading
Loading
+0 −47
Original line number Original line Diff line number Diff line
@@ -26,8 +26,6 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView;
import android.widget.RemoteViews;
import android.widget.RemoteViews;


import java.util.ArrayList;

/**
/**
 * A TextView that can float around an image on the end.
 * A TextView that can float around an image on the end.
 *
 *
@@ -44,7 +42,6 @@ public class MediaNotificationView extends FrameLayout {
    private View mMainColumn;
    private View mMainColumn;
    private View mMediaContent;
    private View mMediaContent;
    private int mImagePushIn;
    private int mImagePushIn;
    private ArrayList<VisibilityChangeListener> mListeners;


    public MediaNotificationView(Context context) {
    public MediaNotificationView(Context context) {
        this(context, null);
        this(context, null);
@@ -171,48 +168,4 @@ public class MediaNotificationView extends FrameLayout {
        mMainColumn = findViewById(com.android.internal.R.id.notification_main_column);
        mMainColumn = findViewById(com.android.internal.R.id.notification_main_column);
        mMediaContent = findViewById(com.android.internal.R.id.notification_media_content);
        mMediaContent = findViewById(com.android.internal.R.id.notification_media_content);
    }
    }

    @Override
    public void onVisibilityAggregated(boolean isVisible) {
        super.onVisibilityAggregated(isVisible);
        for (int i = 0; i < mListeners.size(); i++) {
            mListeners.get(i).onAggregatedVisibilityChanged(isVisible);
        }
    }

    /**
     * Add a listener to receive updates on the visibility of this view
     *
     * @param listener The listener to add.
     */
    public void addVisibilityListener(VisibilityChangeListener listener) {
        if (mListeners == null) {
            mListeners = new ArrayList<>();
        }
        if (!mListeners.contains(listener)) {
            mListeners.add(listener);
        }
    }

    /**
     * Remove the specified listener
     *
     * @param listener The listener to remove.
     */
    public void removeVisibilityListener(VisibilityChangeListener listener) {
        if (mListeners != null) {
            mListeners.remove(listener);
        }
    }

    /**
     * Interface for receiving updates when the view's visibility changes
     */
    public interface VisibilityChangeListener {
        /**
         * Method called when the visibility of this view has changed
         * @param isVisible true if the view is now visible
         */
        void onAggregatedVisibilityChanged(boolean isVisible);
    }
}
}
+8 −39
Original line number Original line Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.widget.MediaNotificationView;
import com.android.systemui.Dependency;
import com.android.systemui.Dependency;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.TransformableView;
import com.android.systemui.statusbar.TransformableView;
@@ -68,7 +67,6 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
    private View mSeekBarView;
    private View mSeekBarView;
    private Context mContext;
    private Context mContext;
    private MetricsLogger mMetricsLogger;
    private MetricsLogger mMetricsLogger;
    private boolean mIsViewVisible;


    @VisibleForTesting
    @VisibleForTesting
    protected SeekBar.OnSeekBarChangeListener mSeekListener =
    protected SeekBar.OnSeekBarChangeListener mSeekListener =
@@ -90,33 +88,11 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
        }
        }
    };
    };


    MediaNotificationView.VisibilityChangeListener mVisibilityListener =
            new MediaNotificationView.VisibilityChangeListener() {
        @Override
        public void onAggregatedVisibilityChanged(boolean isVisible) {
            mIsViewVisible = isVisible;
            if (isVisible) {
                // Restart timer if we're currently playing and didn't already have one going
                PlaybackState state = mMediaController.getPlaybackState();
                if (state != null && state.getState() == PlaybackState.STATE_PLAYING
                        && mSeekBarTimer == null && mSeekBarView != null
                        && mSeekBarView.getVisibility() != View.GONE) {
                    startTimer();
                }
            } else {
                clearTimer();
            }
        }
    };

    private MediaController.Callback mMediaCallback = new MediaController.Callback() {
    private MediaController.Callback mMediaCallback = new MediaController.Callback() {
        @Override
        @Override
        public void onSessionDestroyed() {
        public void onSessionDestroyed() {
            clearTimer();
            clearTimer();
            mMediaController.unregisterCallback(this);
            mMediaController.unregisterCallback(this);
            if (mView instanceof MediaNotificationView) {
                ((MediaNotificationView) mView).removeVisibilityListener(mVisibilityListener);
            }
        }
        }


        @Override
        @Override
@@ -150,16 +126,10 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
        mContext = ctx;
        mContext = ctx;
        mMediaManager = Dependency.get(NotificationMediaManager.class);
        mMediaManager = Dependency.get(NotificationMediaManager.class);
        mMetricsLogger = Dependency.get(MetricsLogger.class);
        mMetricsLogger = Dependency.get(MetricsLogger.class);

        if (mView instanceof MediaNotificationView) {
            MediaNotificationView mediaView = (MediaNotificationView) mView;
            mediaView.addVisibilityListener(mVisibilityListener);
        }
    }
    }


    private void resolveViews() {
    private void resolveViews() {
        mActions = mView.findViewById(com.android.internal.R.id.media_actions);
        mActions = mView.findViewById(com.android.internal.R.id.media_actions);
        mIsViewVisible = mView.isShown();


        final MediaSession.Token token = mRow.getEntry().notification.getNotification().extras
        final MediaSession.Token token = mRow.getEntry().notification.getNotification().extras
                .getParcelable(Notification.EXTRA_MEDIA_SESSION);
                .getParcelable(Notification.EXTRA_MEDIA_SESSION);
@@ -238,7 +208,6 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi


    private void startTimer() {
    private void startTimer() {
        clearTimer();
        clearTimer();
        if (mIsViewVisible) {
        mSeekBarTimer = new Timer(true /* isDaemon */);
        mSeekBarTimer = new Timer(true /* isDaemon */);
        mSeekBarTimer.schedule(new TimerTask() {
        mSeekBarTimer.schedule(new TimerTask() {
            @Override
            @Override
@@ -247,10 +216,10 @@ public class NotificationMediaTemplateViewWrapper extends NotificationTemplateVi
            }
            }
        }, 0, PROGRESS_UPDATE_INTERVAL);
        }, 0, PROGRESS_UPDATE_INTERVAL);
    }
    }
    }


    private void clearTimer() {
    private void clearTimer() {
        if (mSeekBarTimer != null) {
        if (mSeekBarTimer != null) {
            // TODO: also trigger this when the notification panel is collapsed
            mSeekBarTimer.cancel();
            mSeekBarTimer.cancel();
            mSeekBarTimer.purge();
            mSeekBarTimer.purge();
            mSeekBarTimer = null;
            mSeekBarTimer = null;
+3 −1
Original line number Original line Diff line number Diff line
@@ -7670,10 +7670,12 @@ public class WindowManagerService extends IWindowManager.Stub
            isDown = motionEvent.getAction() == MotionEvent.ACTION_DOWN;
            isDown = motionEvent.getAction() == MotionEvent.ACTION_DOWN;
            isUp = motionEvent.getAction() == MotionEvent.ACTION_UP;
            isUp = motionEvent.getAction() == MotionEvent.ACTION_UP;
        }
        }
        final boolean isMouseEvent = ev.getSource() == InputDevice.SOURCE_MOUSE;


        // For ACTION_DOWN, syncInputTransactions before injecting input.
        // For ACTION_DOWN, syncInputTransactions before injecting input.
        // For all mouse events, also sync before injecting.
        // For ACTION_UP, sync after injecting.
        // For ACTION_UP, sync after injecting.
        if (isDown) {
        if (isDown || isMouseEvent) {
            syncInputTransactions();
            syncInputTransactions();
        }
        }
        final boolean result =
        final boolean result =