Revert "Stop timer when notification isn't visible"

This reverts commit 3c4a8e48d404649bd03ee8e6e377dcf9a65afee9.

Reason for revert: NPE errors
Fixes: b/138697134

Change-Id: Ic89eb58cd68485dcc5e7c5a3ef48d7ed79c303ca
(cherry picked from commit 4c9726e0417521b20205165c8e81d24b3a95729c)
diff --git a/core/java/com/android/internal/widget/MediaNotificationView.java b/core/java/com/android/internal/widget/MediaNotificationView.java
index 0d87afa..e7d240a 100644
--- a/core/java/com/android/internal/widget/MediaNotificationView.java
+++ b/core/java/com/android/internal/widget/MediaNotificationView.java
@@ -26,8 +26,6 @@
 import android.widget.ImageView;
 import android.widget.RemoteViews;
 
-import java.util.ArrayList;
-
 /**
  * A TextView that can float around an image on the end.
  *
@@ -44,7 +42,6 @@
     private View mMainColumn;
     private View mMediaContent;
     private int mImagePushIn;
-    private ArrayList<VisibilityChangeListener> mListeners;
 
     public MediaNotificationView(Context context) {
         this(context, null);
@@ -171,48 +168,4 @@
         mMainColumn = findViewById(com.android.internal.R.id.notification_main_column);
         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);
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapper.java
index 38f9bff..20e8b73 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapper.java
@@ -39,7 +39,6 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.internal.widget.MediaNotificationView;
 import com.android.systemui.Dependency;
 import com.android.systemui.statusbar.NotificationMediaManager;
 import com.android.systemui.statusbar.TransformableView;
@@ -68,7 +67,6 @@
     private View mSeekBarView;
     private Context mContext;
     private MetricsLogger mMetricsLogger;
-    private boolean mIsViewVisible;
 
     @VisibleForTesting
     protected SeekBar.OnSeekBarChangeListener mSeekListener =
@@ -90,33 +88,11 @@
         }
     };
 
-    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() {
         @Override
         public void onSessionDestroyed() {
             clearTimer();
             mMediaController.unregisterCallback(this);
-            if (mView instanceof MediaNotificationView) {
-                ((MediaNotificationView) mView).removeVisibilityListener(mVisibilityListener);
-            }
         }
 
         @Override
@@ -150,16 +126,10 @@
         mContext = ctx;
         mMediaManager = Dependency.get(NotificationMediaManager.class);
         mMetricsLogger = Dependency.get(MetricsLogger.class);
-
-        if (mView instanceof MediaNotificationView) {
-            MediaNotificationView mediaView = (MediaNotificationView) mView;
-            mediaView.addVisibilityListener(mVisibilityListener);
-        }
     }
 
     private void resolveViews() {
         mActions = mView.findViewById(com.android.internal.R.id.media_actions);
-        mIsViewVisible = mView.isShown();
 
         final MediaSession.Token token = mRow.getEntry().notification.getNotification().extras
                 .getParcelable(Notification.EXTRA_MEDIA_SESSION);
@@ -238,19 +208,18 @@
 
     private void startTimer() {
         clearTimer();
-        if (mIsViewVisible) {
-            mSeekBarTimer = new Timer(true /* isDaemon */);
-            mSeekBarTimer.schedule(new TimerTask() {
-                @Override
-                public void run() {
-                    mHandler.post(mOnUpdateTimerTick);
-                }
-            }, 0, PROGRESS_UPDATE_INTERVAL);
-        }
+        mSeekBarTimer = new Timer(true /* isDaemon */);
+        mSeekBarTimer.schedule(new TimerTask() {
+            @Override
+            public void run() {
+                mHandler.post(mOnUpdateTimerTick);
+            }
+        }, 0, PROGRESS_UPDATE_INTERVAL);
     }
 
     private void clearTimer() {
         if (mSeekBarTimer != null) {
+            // TODO: also trigger this when the notification panel is collapsed
             mSeekBarTimer.cancel();
             mSeekBarTimer.purge();
             mSeekBarTimer = null;