Merge "Add a listener for subscription changes to SimDialogFragment" into qt-dev
am: 87fadeeb4a
Change-Id: I59e0e265a5e91bed12d7e786d4fdd3043c068fed
This commit is contained in:
@@ -16,20 +16,25 @@
|
||||
|
||||
package com.android.settings.sim;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settings.network.SubscriptionsChangeListener;
|
||||
|
||||
/** 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 KEY_TITLE_ID = "title_id";
|
||||
private static final String KEY_DIALOG_TYPE = "dialog_type";
|
||||
|
||||
private SubscriptionsChangeListener mChangeListener;
|
||||
|
||||
protected static Bundle initArguments(int dialogType, int titleResId) {
|
||||
final Bundle args = new Bundle();
|
||||
args.putInt(KEY_DIALOG_TYPE, dialogType);
|
||||
@@ -45,6 +50,24 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment {
|
||||
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
|
||||
public void onDismiss(@NonNull DialogInterface dialog) {
|
||||
super.onDismiss(dialog);
|
||||
@@ -55,4 +78,13 @@ public abstract class SimDialogFragment extends InstrumentedDialogFragment {
|
||||
}
|
||||
|
||||
public abstract void updateDialog();
|
||||
|
||||
@Override
|
||||
public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSubscriptionsChanged() {
|
||||
updateDialog();
|
||||
}
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.telephony.SubscriptionManager;
|
||||
@@ -77,6 +78,22 @@ public class SimListDialogFragmentTest extends SimDialogFragmentTestBase<SimList
|
||||
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
|
||||
public void onCreateDialog_twoSubscriptionsAskEveryTime_threeSubsForDisplay() {
|
||||
final int dialogType = SMS_PICK;
|
||||
|
Reference in New Issue
Block a user