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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user