From dfba9a0f6d5a83d1fe851054a2244413e47b11d2 Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Fri, 18 Oct 2019 12:51:28 +0800 Subject: [PATCH] Change Panels creation interface to take a bundle 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 --- .../settings/panel/PanelFeatureProvider.java | 6 ++--- .../panel/PanelFeatureProviderImpl.java | 8 ++++++- .../android/settings/panel/PanelFragment.java | 7 +----- .../panel/PanelFeatureProviderImplTest.java | 22 +++++++++++++------ .../settings/panel/PanelFragmentTest.java | 5 ++--- .../panel/PanelSlicesAdapterTest.java | 6 ++--- .../panel/SettingsPanelActivityTest.java | 2 +- 7 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/com/android/settings/panel/PanelFeatureProvider.java b/src/com/android/settings/panel/PanelFeatureProvider.java index 85e098d603c..402a562d53d 100644 --- a/src/com/android/settings/panel/PanelFeatureProvider.java +++ b/src/com/android/settings/panel/PanelFeatureProvider.java @@ -17,12 +17,12 @@ 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); } diff --git a/src/com/android/settings/panel/PanelFeatureProviderImpl.java b/src/com/android/settings/panel/PanelFeatureProviderImpl.java index e6b0a231885..04d3095cc38 100644 --- a/src/com/android/settings/panel/PanelFeatureProviderImpl.java +++ b/src/com/android/settings/panel/PanelFeatureProviderImpl.java @@ -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); diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java index 006ed005ee4..0eda36f5205 100644 --- a/src/com/android/settings/panel/PanelFragment.java +++ b/src/com/android/settings/panel/PanelFragment.java @@ -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(); diff --git a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java index ae57a778b61..54f18948cb7 100644 --- a/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/panel/PanelFeatureProviderImplTest.java @@ -17,17 +17,19 @@ 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); } diff --git a/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java b/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java index 44dc3bcfcee..cbeff97c314 100644 --- a/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java +++ b/tests/robotests/src/com/android/settings/panel/PanelFragmentTest.java @@ -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); } diff --git a/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java b/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java index 89288f6bbd9..9f4fffcdeff 100644 --- a/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java +++ b/tests/robotests/src/com/android/settings/panel/PanelSlicesAdapterTest.java @@ -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 activityController = Robolectric.buildActivity(FakeSettingsPanelActivity.class); diff --git a/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java b/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java index a4b7aa551bb..44e5eefcf6c 100644 --- a/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java +++ b/tests/robotests/src/com/android/settings/panel/SettingsPanelActivityTest.java @@ -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