Move Panel to public API

Change the SettingsPanelActivity to reference the
public API.

Bug: 117804442
Test: robolectric, manual app
Change-Id: I4b128ae9d97c1000fdaa0c3fb5b94f8dc096055f
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index caca444..cbe4f6d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2977,11 +2977,16 @@
             android:label="@string/settings_panel_title"
             android:theme="@style/Theme.BottomDialog"
             android:excludeFromRecents="true"
-            android:launchMode="singleTask">
+            android:launchMode="singleTask"
+            android:exported="true">
                  <intent-filter>
-                     <action android:name="android.settings.SETTINGSPANEL" />
+                     <action android:name="android.settings.panel.action.INTERNET_CONNECTIVITY" />
                      <category android:name="android.intent.category.DEFAULT" />
                  </intent-filter>
+                <intent-filter>
+                    <action android:name="android.settings.panel.action.VOLUME" />
+                    <category android:name="android.intent.category.DEFAULT" />
+                </intent-filter>
         </activity>
 
         <provider android:name=".slices.SettingsSliceProvider"
diff --git a/res/layout/panel_layout.xml b/res/layout/panel_layout.xml
index a6f62a4..c466ce8 100644
--- a/res/layout/panel_layout.xml
+++ b/res/layout/panel_layout.xml
@@ -22,7 +22,7 @@
               android:orientation="vertical">
 
     <TextView
-        android:id="@+id/title"
+        android:id="@+id/panel_title"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:gravity="center"
diff --git a/src/com/android/settings/panel/PanelFeatureProviderImpl.java b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
index 503a5c3..ade2ffd 100644
--- a/src/com/android/settings/panel/PanelFeatureProviderImpl.java
+++ b/src/com/android/settings/panel/PanelFeatureProviderImpl.java
@@ -17,15 +17,16 @@
 package com.android.settings.panel;
 
 import android.content.Context;
+import android.provider.Settings;
 
 public class PanelFeatureProviderImpl implements PanelFeatureProvider {
 
     @Override
     public PanelContent getPanel(Context context, String panelType) {
         switch (panelType) {
-            case SettingsPanelActivity.PANEL_TYPE_WIFI:
+            case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:
                 return InternetConnectivityPanel.create(context);
-            case SettingsPanelActivity.PANEL_TYPE_VOLUME:
+            case Settings.Panel.ACTION_VOLUME:
                 return VolumePanel.create(context);
         }
 
diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java
index e61b8f8..7655be8 100644
--- a/src/com/android/settings/panel/PanelFragment.java
+++ b/src/com/android/settings/panel/PanelFragment.java
@@ -69,7 +69,7 @@
         mPanelSlices = view.findViewById(R.id.panel_parent_layout);
         mSeeMoreButton = view.findViewById(R.id.see_more);
         mDoneButton = view.findViewById(R.id.done);
-        mTitleView = view.findViewById(R.id.title);
+        mTitleView = view.findViewById(R.id.panel_title);
 
         final Bundle arguments = getArguments();
         final String panelType = arguments.getString(SettingsPanelActivity.KEY_PANEL_TYPE_ARGUMENT);
diff --git a/src/com/android/settings/panel/SettingsPanelActivity.java b/src/com/android/settings/panel/SettingsPanelActivity.java
index 09bead4..ffe94f8 100644
--- a/src/com/android/settings/panel/SettingsPanelActivity.java
+++ b/src/com/android/settings/panel/SettingsPanelActivity.java
@@ -16,11 +16,9 @@
 
 package com.android.settings.panel;
 
-import android.content.ComponentName;
 import android.content.Intent;
 import android.os.Bundle;
 
-import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.Window;
@@ -35,8 +33,6 @@
 
 /**
  * Dialog Activity to host Settings Slices.
- *
- * TODO link to action / framework API
  */
 public class SettingsPanelActivity extends FragmentActivity {
 
@@ -47,28 +43,10 @@
      */
     public static final String KEY_PANEL_TYPE_ARGUMENT = "PANEL_TYPE_ARGUMENT";
 
-
-    // TODO (b/117804442) move to framework
-    public static final String EXTRA_PANEL_TYPE = "com.android.settings.panel.extra";
-
-    // TODO (b/117804442) move to framework
-    public static final String PANEL_TYPE_WIFI = "wifi_panel";
-
-    // TODO (b/117804442) move to framework
-    public static final String PANEL_TYPE_VOLUME = "volume_panel";
-
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        final ComponentName callingActivityName = getCallingActivity();
-
-        if (callingActivityName == null) {
-            Log.e(TAG, "Must start with startActivityForResult. Closing.");
-            finish();
-            return;
-        }
-
         final Intent callingIntent = getIntent();
         if (callingIntent == null) {
             Log.e(TAG, "Null intent, closing Panel Activity");
@@ -76,12 +54,6 @@
             return;
         }
 
-        final String typeExtra = callingIntent.getStringExtra(EXTRA_PANEL_TYPE);
-        if (TextUtils.isEmpty(typeExtra)) {
-            Log.e(TAG, "No intent passed, closing Panel Activity");
-            return;
-        }
-
         setContentView(R.layout.settings_panel);
 
         // Move the window to the bottom of screen, and make it take up the entire screen width.
@@ -90,9 +62,8 @@
         window.setLayout(WindowManager.LayoutParams.MATCH_PARENT,
                 WindowManager.LayoutParams.WRAP_CONTENT);
 
-
         final Bundle bundle = new Bundle();
-        bundle.putString(KEY_PANEL_TYPE_ARGUMENT, typeExtra);
+        bundle.putString(KEY_PANEL_TYPE_ARGUMENT, callingIntent.getAction());
 
         final PanelFragment panelFragment = new PanelFragment();
         panelFragment.setArguments(bundle);
diff --git a/tests/robotests/src/com/android/settings/panel/FakePanelContent.java b/tests/robotests/src/com/android/settings/panel/FakePanelContent.java
index 60f0d5d..1d79952 100644
--- a/tests/robotests/src/com/android/settings/panel/FakePanelContent.java
+++ b/tests/robotests/src/com/android/settings/panel/FakePanelContent.java
@@ -29,7 +29,7 @@
  */
 public class FakePanelContent implements PanelContent {
 
-    public static final String FAKE_KEY = "fake_key";
+    public static final String FAKE_ACTION = "fake_action";
 
     public static final CharSequence TITLE = "title";
 
diff --git a/tests/robotests/src/com/android/settings/panel/FakeSettingsPanelActivity.java b/tests/robotests/src/com/android/settings/panel/FakeSettingsPanelActivity.java
index afd0bec..2a62b54 100644
--- a/tests/robotests/src/com/android/settings/panel/FakeSettingsPanelActivity.java
+++ b/tests/robotests/src/com/android/settings/panel/FakeSettingsPanelActivity.java
@@ -27,8 +27,7 @@
 
     @Override
     public Intent getIntent() {
-        final Intent intent = new Intent();
-        intent.putExtra(SettingsPanelActivity.EXTRA_PANEL_TYPE, FakePanelContent.FAKE_KEY);
+        final Intent intent = new Intent(FakePanelContent.FAKE_ACTION);
         return intent;
     }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
index 754c937..99d5d6c 100644
--- a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
@@ -20,6 +20,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
+import android.provider.Settings;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -43,8 +44,16 @@
     @Test
     public void getPanel_internetConnectivityKey_returnsCorrectPanel() {
         final PanelContent panel = mProvider.getPanel(mContext,
-                SettingsPanelActivity.PANEL_TYPE_WIFI);
+                Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
 
         assertThat(panel).isInstanceOf(InternetConnectivityPanel.class);
     }
+
+    @Test
+    public void getPanel_volume_returnsCorrectPanel() {
+        final PanelContent panel = mProvider.getPanel(mContext,
+                Settings.Panel.ACTION_VOLUME);
+
+        assertThat(panel).isInstanceOf(VolumePanel.class);
+    }
 }