Merge "Move ACTION_MENU/ACTION_CLOSE intent registraction to PipController"
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipController.java
index 8eac005..4f2d4e5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipController.java
@@ -19,6 +19,10 @@
 import static android.app.ActivityTaskManager.INVALID_STACK_ID;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.content.Intent.ACTION_MEDIA_RESOURCE_GRANTED;
+
+import static com.android.wm.shell.pip.tv.PipNotification.ACTION_CLOSE;
+import static com.android.wm.shell.pip.tv.PipNotification.ACTION_MENU;
 
 import android.app.ActivityManager;
 import android.app.ActivityTaskManager;
@@ -140,17 +144,26 @@
     private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            if (Intent.ACTION_MEDIA_RESOURCE_GRANTED.equals(action)) {
-                String[] packageNames = intent.getStringArrayExtra(Intent.EXTRA_PACKAGES);
-                int resourceType = intent.getIntExtra(Intent.EXTRA_MEDIA_RESOURCE_TYPE,
-                        INVALID_RESOURCE_TYPE);
-                if (packageNames != null && packageNames.length > 0
-                        && resourceType == Intent.EXTRA_MEDIA_RESOURCE_TYPE_VIDEO_CODEC) {
-                    handleMediaResourceGranted(packageNames);
-                }
+            if (DEBUG) {
+                Log.d(TAG, "mBroadcastReceiver, action: " + intent.getAction());
             }
-
+            switch (intent.getAction()) {
+                case ACTION_MENU:
+                    showPictureInPictureMenu();
+                    break;
+                case ACTION_CLOSE:
+                    closePip();
+                    break;
+                case ACTION_MEDIA_RESOURCE_GRANTED:
+                    String[] packageNames = intent.getStringArrayExtra(Intent.EXTRA_PACKAGES);
+                    int resourceType = intent.getIntExtra(Intent.EXTRA_MEDIA_RESOURCE_TYPE,
+                            INVALID_RESOURCE_TYPE);
+                    if (packageNames != null && packageNames.length > 0
+                            && resourceType == Intent.EXTRA_MEDIA_RESOURCE_TYPE_VIDEO_CODEC) {
+                        handleMediaResourceGranted(packageNames);
+                    }
+                    break;
+            }
         }
     };
     private final MediaSessionManager.OnActiveSessionsChangedListener mActiveMediaSessionListener =
@@ -233,8 +246,11 @@
             mPipTaskOrganizer = pipTaskOrganizer;
             mPipTaskOrganizer.registerPipTransitionCallback(this);
             mActivityTaskManager = ActivityTaskManager.getService();
-            IntentFilter intentFilter = new IntentFilter();
-            intentFilter.addAction(Intent.ACTION_MEDIA_RESOURCE_GRANTED);
+
+            final IntentFilter intentFilter = new IntentFilter();
+            intentFilter.addAction(ACTION_CLOSE);
+            intentFilter.addAction(ACTION_MENU);
+            intentFilter.addAction(ACTION_MEDIA_RESOURCE_GRANTED);
             mContext.registerReceiver(mBroadcastReceiver, intentFilter, UserHandle.USER_ALL);
 
             // Initialize the last orientation and apply the current configuration
@@ -249,10 +265,10 @@
             } catch (RemoteException e) {
                 Log.e(TAG, "Failed to register pinned stack listener", e);
             }
-        }
 
-        // TODO(b/169395392) Refactor PipMenuActivity to PipMenuView
-        PipMenuActivity.setPipController(this);
+            // TODO(b/169395392) Refactor PipMenuActivity to PipMenuView
+            PipMenuActivity.setPipController(this);
+        }
     }
 
     private void loadConfigurationsAndApply(Configuration newConfig) {
@@ -564,6 +580,7 @@
         } catch (RemoteException e) {
             Log.e(TAG, "getRootTaskInfo failed", e);
         }
+        if (DEBUG) Log.d(TAG, "getPinnedTaskInfo(), taskInfo=" + taskInfo);
         return taskInfo;
     }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipMenuActivity.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipMenuActivity.java
index 06d2408..e185a96 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipMenuActivity.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipMenuActivity.java
@@ -35,7 +35,7 @@
  */
 public class PipMenuActivity extends Activity implements PipController.Listener {
     private static final String TAG = "PipMenuActivity";
-    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+    private static final boolean DEBUG = PipController.DEBUG;
 
     static final String EXTRA_CUSTOM_ACTIONS = "custom_actions";
 
@@ -51,7 +51,7 @@
         if (DEBUG) Log.d(TAG, "onCreate()");
 
         super.onCreate(bundle);
-        if (sPipController == null || sPipController.isPipShown()) {
+        if (sPipController == null) {
             finish();
         }
         setContentView(R.layout.tv_pip_menu);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipNotification.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipNotification.java
index 7433085..f5bbd23 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipNotification.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/PipNotification.java
@@ -20,10 +20,8 @@
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.app.RemoteAction;
-import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ParceledListSlice;
@@ -32,9 +30,7 @@
 import android.media.MediaMetadata;
 import android.media.session.MediaController;
 import android.media.session.PlaybackState;
-import android.os.UserHandle;
 import android.text.TextUtils;
-import android.util.Log;
 
 import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
 import com.android.wm.shell.R;
@@ -49,8 +45,8 @@
     private static final String NOTIFICATION_TAG = PipNotification.class.getSimpleName();
     private static final boolean DEBUG = PipController.DEBUG;
 
-    private static final String ACTION_MENU = "PipNotification.menu";
-    private static final String ACTION_CLOSE = "PipNotification.close";
+    static final String ACTION_MENU = "PipNotification.menu";
+    static final String ACTION_CLOSE = "PipNotification.close";
 
     public static final String NOTIFICATION_CHANNEL_TVPIP = "TPP";
 
@@ -147,23 +143,6 @@
                 }
             };
 
-    private final BroadcastReceiver mEventReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (DEBUG) {
-                Log.d(TAG, "Received " + intent.getAction() + " from the notification UI");
-            }
-            switch (intent.getAction()) {
-                case ACTION_MENU:
-                    mPipController.showPictureInPictureMenu();
-                    break;
-                case ACTION_CLOSE:
-                    mPipController.closePip();
-                    break;
-            }
-        }
-    };
-
     public PipNotification(Context context, PipController pipController) {
         mPackageManager = context.getPackageManager();
 
@@ -182,11 +161,6 @@
         pipController.addListener(mPipListener);
         pipController.addMediaListener(mPipMediaListener);
 
-        IntentFilter intentFilter = new IntentFilter();
-        intentFilter.addAction(ACTION_MENU);
-        intentFilter.addAction(ACTION_CLOSE);
-        context.registerReceiver(mEventReceiver, intentFilter, UserHandle.USER_ALL);
-
         onConfigurationChanged(context);
     }