Redirect to output switcher panel to the new dialog

-Redirect for Cast button
-Send intent when call MediaOutputPanel::create()
-Return null to finish the activity

Bug: 172178632
Test: make -j50 RunSettingsRoboTests
Merged-In: I1038e237113f433c847aff98a45b1dd6089d80a8
Change-Id: I1038e237113f433c847aff98a45b1dd6089d80a8
diff --git a/src/com/android/settings/panel/MediaOutputPanel.java b/src/com/android/settings/panel/MediaOutputPanel.java
index 7caf7dd..4bfe3ca 100644
--- a/src/com/android/settings/panel/MediaOutputPanel.java
+++ b/src/com/android/settings/panel/MediaOutputPanel.java
@@ -44,6 +44,7 @@
 import com.android.settingslib.media.InfoMediaDevice;
 import com.android.settingslib.media.LocalMediaManager;
 import com.android.settingslib.media.MediaDevice;
+import com.android.settingslib.media.MediaOutputSliceConstants;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -72,7 +73,12 @@
     private MediaController mMediaController;
 
     public static MediaOutputPanel create(Context context, String packageName) {
-        return new MediaOutputPanel(context, packageName);
+        // Redirect to new media output dialog
+        context.sendBroadcast(new Intent()
+                .setPackage(MediaOutputSliceConstants.SYSTEMUI_PACKAGE_NAME)
+                .setAction(MediaOutputSliceConstants.ACTION_LAUNCH_MEDIA_OUTPUT_DIALOG)
+                .putExtra(MediaOutputSliceConstants.EXTRA_PACKAGE_NAME, packageName));
+        return null;
     }
 
     private MediaOutputPanel(Context context, String packageName) {
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index 6f2d59b..57585eb 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -436,12 +436,14 @@
         if (mLayoutView != null) {
             mLayoutView.getViewTreeObserver().removeOnGlobalLayoutListener(mPanelLayoutListener);
         }
-        mMetricsProvider.action(
-                0 /* attribution */,
-                SettingsEnums.PAGE_HIDE,
-                mPanel.getMetricsCategory(),
-                mPanelClosedKey,
-                0 /* value */);
+        if (mPanel != null) {
+            mMetricsProvider.action(
+                    0 /* attribution */,
+                    SettingsEnums.PAGE_HIDE,
+                    mPanel.getMetricsCategory(),
+                    mPanelClosedKey,
+                    0 /* value */);
+        }
     }
 
     @VisibleForTesting
diff --git a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
index 54f1894..f924d7a 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
@@ -19,7 +19,6 @@
 
 import static com.android.settings.panel.SettingsPanelActivity.KEY_MEDIA_PACKAGE_NAME;
 import static com.android.settings.panel.SettingsPanelActivity.KEY_PANEL_TYPE_ARGUMENT;
-import static com.android.settingslib.media.MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -67,13 +66,4 @@
 
         assertThat(panel).isInstanceOf(VolumePanel.class);
     }
-
-    @Test
-    public void getPanel_mediaOutputKey_returnsCorrectPanel() {
-        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, ACTION_MEDIA_OUTPUT);
-
-        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
-
-        assertThat(panel).isInstanceOf(MediaOutputPanel.class);
-    }
 }