Merge "Add a listener for subscription changes to SimDialogFragment" into qt-dev

am: 87fadeeb4a

Change-Id: I59e0e265a5e91bed12d7e786d4fdd3043c068fed
This commit is contained in:
Antony Sargent
2019-06-25 11:40:48 -07:00
committed by android-build-merger
2 changed files with 50 additions and 1 deletions

View File

@@ -16,20 +16,25 @@
package com.android.settings.sim; package com.android.settings.sim;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.network.SubscriptionsChangeListener;
/** Common functionality for showing a dialog in SimDialogActivity. */ /** Common functionality for showing a dialog in SimDialogActivity. */
public abstract class SimDialogFragment extends InstrumentedDialogFragment { public abstract class SimDialogFragment extends InstrumentedDialogFragment implements
SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
private static final String TAG = "SimDialogFragment"; private static final String TAG = "SimDialogFragment";
private static final String KEY_TITLE_ID = "title_id"; private static final String KEY_TITLE_ID = "title_id";
private static final String KEY_DIALOG_TYPE = "dialog_type"; private static final String KEY_DIALOG_TYPE = "dialog_type";
private SubscriptionsChangeListener mChangeListener;
protected static Bundle initArguments(int dialogType, int titleResId) { protected static Bundle initArguments(int dialogType, int titleResId) {
final Bundle args = new Bundle(); final Bundle args = new Bundle();
args.putInt(KEY_DIALOG_TYPE, dialogType); args.putInt(KEY_DIALOG_TYPE, dialogType);
@@ -45,6 +50,24 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment {
return getArguments().getInt(KEY_TITLE_ID); return getArguments().getInt(KEY_TITLE_ID);
} }
@Override
public void onAttach(Context context) {
super.onAttach(context);
mChangeListener = new SubscriptionsChangeListener(context, this);
}
@Override
public void onPause() {
super.onPause();
mChangeListener.stop();
}
@Override
public void onResume() {
super.onResume();
mChangeListener.start();
}
@Override @Override
public void onDismiss(@NonNull DialogInterface dialog) { public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog); super.onDismiss(dialog);
@@ -55,4 +78,13 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment {
} }
public abstract void updateDialog(); public abstract void updateDialog();
@Override
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
}
@Override
public void onSubscriptionsChanged() {
updateDialog();
}
} }

View File

@@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
@@ -77,6 +78,22 @@ public class SimListDialogFragmentTest extends SimDialogFragmentTestBase<SimList
verify(activity).onSubscriptionSelected(dialogType, SIM2_ID); verify(activity).onSubscriptionSelected(dialogType, SIM2_ID);
} }
@Test
public void onSubscriptionsChanged_dialogUpdates() {
final int dialogType = DATA_PICK;
setDialogType(dialogType);
mFragment = spy(SimListDialogFragment.newInstance(dialogType, R.string.select_sim_for_data,
false /* includeAskEveryTime */));
doReturn(Arrays.asList(mSim1, mSim2)).when(mFragment).getCurrentSubscriptions();
// Avoid problems robolectric has with our real adapter.
doNothing().when(mFragment).setAdapter(any());
startDialog();
verify(mFragment).updateDialog();
mFragment.onSubscriptionsChanged();
verify(mFragment, times(2)).updateDialog();
}
@Test @Test
public void onCreateDialog_twoSubscriptionsAskEveryTime_threeSubsForDisplay() { public void onCreateDialog_twoSubscriptionsAskEveryTime_threeSubsForDisplay() {
final int dialogType = SMS_PICK; final int dialogType = SMS_PICK;