OSDN Git Service

Change Panels creation interface to take a bundle
authorRaff Tsai <rafftsai@google.com>
Fri, 18 Oct 2019 04:51:28 +0000 (12:51 +0800)
committerRaff Tsai <rafftsai@google.com>
Fri, 18 Oct 2019 05:21:18 +0000 (13:21 +0800)
Fixes: 124399577
Test: robolectric
adb shell am start -a android.settings.panel.action.WIFI
adb shell am start -a android.settings.panel.action.VOLUME

Change-Id: I9e13357444e4ebeee50fb8cc68fbc974ce5fffb6

src/com/android/settings/panel/PanelFeatureProvider.java
src/com/android/settings/panel/PanelFeatureProviderImpl.java
src/com/android/settings/panel/PanelFragment.java
tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java
tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java
tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java
tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java

index 85e098d..402a562 100644 (file)
 package com.android.settings.panel;
 
 import android.content.Context;
+import android.os.Bundle;
 
 public interface PanelFeatureProvider {
 
     /**
-     * Returns {@link PanelContent} as specified by the {@param panelType}, and
-     * {@param mediaPackageName}.
+     * Returns {@link PanelContent} as specified by the {@param bundle}
      */
-    PanelContent getPanel(Context context, String panelType, String mediaPackageName);
+    PanelContent getPanel(Context context, Bundle bundle);
 }
index e6b0a23..04d3095 100644 (file)
@@ -19,16 +19,22 @@ package com.android.settings.panel;
 import static com.android.settingslib.media.MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT;
 
 import android.content.Context;
+import android.os.Bundle;
 import android.provider.Settings;
 
 public class PanelFeatureProviderImpl implements PanelFeatureProvider {
 
     @Override
-    public PanelContent getPanel(Context context, String panelType, String mediaPackageName) {
+    public PanelContent getPanel(Context context, Bundle bundle) {
         if (context == null) {
             return null;
         }
 
+        final String panelType =
+                bundle.getString(SettingsPanelActivity.KEY_PANEL_TYPE_ARGUMENT);
+        final String mediaPackageName =
+                bundle.getString(SettingsPanelActivity.KEY_MEDIA_PACKAGE_NAME);
+
         switch (panelType) {
             case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:
                 return InternetConnectivityPanel.create(context);
index 006ed00..0eda36f 100644 (file)
@@ -161,17 +161,12 @@ public class PanelFragment extends Fragment {
         mPanelSlices.setVisibility(View.GONE);
 
         final Bundle arguments = getArguments();
-        final String panelType =
-                arguments.getString(SettingsPanelActivity.KEY_PANEL_TYPE_ARGUMENT);
         final String callingPackageName =
                 arguments.getString(SettingsPanelActivity.KEY_CALLING_PACKAGE_NAME);
-        final String mediaPackageName =
-                arguments.getString(SettingsPanelActivity.KEY_MEDIA_PACKAGE_NAME);
 
-        // TODO (b/124399577) transform interface to take a context and bundle.
         mPanel = FeatureFactory.getFactory(activity)
                 .getPanelFeatureProvider()
-                .getPanel(activity, panelType, mediaPackageName);
+                .getPanel(activity, arguments);
 
         if (mPanel == null) {
             activity.finish();
index ae57a77..54f1894 100644 (file)
 
 package com.android.settings.panel;
 
+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;
 
 import android.content.Context;
+import android.os.Bundle;
 import android.provider.Settings;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
@@ -38,33 +40,39 @@ public class PanelFeatureProviderImplTest {
 
     private Context mContext;
     private PanelFeatureProviderImpl mProvider;
+    private Bundle mBundle;
 
     @Before
     public void setUp() {
         mContext = RuntimeEnvironment.application;
         mProvider = new PanelFeatureProviderImpl();
+        mBundle = new Bundle();
+        mBundle.putString(KEY_MEDIA_PACKAGE_NAME, TEST_PACKAGENAME);
     }
 
     @Test
     public void getPanel_internetConnectivityKey_returnsCorrectPanel() {
-        final PanelContent panel = mProvider.getPanel(mContext,
-                Settings.Panel.ACTION_INTERNET_CONNECTIVITY, TEST_PACKAGENAME);
+        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, Settings.Panel.ACTION_INTERNET_CONNECTIVITY);
+
+        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
 
         assertThat(panel).isInstanceOf(InternetConnectivityPanel.class);
     }
 
     @Test
     public void getPanel_volume_returnsCorrectPanel() {
-        final PanelContent panel = mProvider.getPanel(mContext,
-                Settings.Panel.ACTION_VOLUME, TEST_PACKAGENAME);
+        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, Settings.Panel.ACTION_VOLUME);
+
+        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
 
         assertThat(panel).isInstanceOf(VolumePanel.class);
     }
 
     @Test
     public void getPanel_mediaOutputKey_returnsCorrectPanel() {
-        final PanelContent panel = mProvider.getPanel(mContext,
-                ACTION_MEDIA_OUTPUT, TEST_PACKAGENAME);
+        mBundle.putString(KEY_PANEL_TYPE_ARGUMENT, ACTION_MEDIA_OUTPUT);
+
+        final PanelContent panel = mProvider.getPanel(mContext, mBundle);
 
         assertThat(panel).isInstanceOf(MediaOutputPanel.class);
     }
index 44dc3bc..cbeff97 100644 (file)
@@ -38,7 +38,6 @@ import com.android.settings.testutils.FakeFeatureFactory;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
@@ -63,7 +62,7 @@ public class PanelFragmentTest {
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
         mFakeFeatureFactory.panelFeatureProvider = mPanelFeatureProvider;
         mFakePanelContent = new FakePanelContent();
-        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any(), any());
+        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any());
 
         mActivity = spy(Robolectric.buildActivity(FakeSettingsPanelActivity.class).setup().get());
 
@@ -83,7 +82,7 @@ public class PanelFragmentTest {
                 new LinearLayout(mContext), null);
         PanelSlicesLoaderCountdownLatch countdownLatch =
                 mPanelFragment.mPanelSlicesLoaderCountdownLatch;
-        for (Uri sliecUri: mFakePanelContent.getSlices()) {
+        for (Uri sliecUri : mFakePanelContent.getSlices()) {
             countdownLatch.markSliceLoaded(sliecUri);
         }
 
index 89288f6..9f4fffc 100644 (file)
@@ -40,17 +40,15 @@ import com.android.settings.slices.CustomSliceRegistry;
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
-import org.junit.runner.RunWith;
 import org.junit.Test;
+import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.android.controller.ActivityController;
 
-import java.util.ArrayList;
 import java.util.LinkedHashMap;
-import java.util.List;
 import java.util.Map;
 
 @RunWith(RobolectricTestRunner.class)
@@ -74,7 +72,7 @@ public class PanelSlicesAdapterTest {
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
         mFakeFeatureFactory.panelFeatureProvider = mPanelFeatureProvider;
         mFakePanelContent = new FakePanelContent();
-        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any(), any());
+        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any());
 
         ActivityController<FakeSettingsPanelActivity> activityController =
                 Robolectric.buildActivity(FakeSettingsPanelActivity.class);
index a4b7aa5..44e5eef 100644 (file)
@@ -65,7 +65,7 @@ public class SettingsPanelActivityTest {
         mPanelFeatureProvider = spy(new PanelFeatureProviderImpl());
         mFakeFeatureFactory.panelFeatureProvider = mPanelFeatureProvider;
         mFakePanelContent = new FakePanelContent();
-        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any(), any());
+        doReturn(mFakePanelContent).when(mPanelFeatureProvider).getPanel(any(), any());
     }
 
     @Test