Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87fadeeb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 279050c8 45f07013
Loading
Loading
Loading
Loading
+33 −1
Original line number Diff line number Diff line
@@ -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();
    }
}
+17 −0
Original line number Diff line number Diff line
@@ -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;