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

Commit a98b35c2 authored by Brandon Maxwell's avatar Brandon Maxwell Committed by Android (Google) Code Review
Browse files

Merge "Keeping migration dialog up while migration in progress" into nyc-dev

parents 60d449f4 b1e45086
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.os.AsyncTask;
import android.support.annotation.Nullable;

import com.android.dialer.compat.BlockedNumbersSdkCompat;
import com.android.dialer.compat.FilteredNumberCompat;
+33 −8
Original line number Diff line number Diff line
@@ -22,10 +22,12 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnShowListener;
import android.os.Bundle;
import android.view.View;

import com.android.dialer.R;
import com.android.dialer.filterednumber.BlockedNumbersMigrator.Listener;

/**
 * Dialog fragment shown to users when they need to migrate to use
@@ -57,20 +59,43 @@ public class MigrateBlockedNumbersDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        super.onCreateDialog(savedInstanceState);
        return new AlertDialog.Builder(getActivity())
        AlertDialog dialog = new AlertDialog.Builder(getActivity())
                .setTitle(R.string.migrate_blocked_numbers_dialog_title)
                .setMessage(R.string.migrate_blocked_numbers_dialog_message)
                .setPositiveButton(R.string.migrate_blocked_numbers_dialog_allow_button,
                        newPositiveButtonOnClickListener())
                .setPositiveButton(R.string.migrate_blocked_numbers_dialog_allow_button, null)
                .setNegativeButton(R.string.migrate_blocked_numbers_dialog_cancel_button, null)
                .create();
        // The Dialog's buttons aren't available until show is called, so an OnShowListener
        // is used to set the positive button callback.
        dialog.setOnShowListener(new OnShowListener() {
            @Override
            public void onShow(DialogInterface dialog) {
                final AlertDialog alertDialog = (AlertDialog) dialog;
                alertDialog.getButton(AlertDialog.BUTTON_POSITIVE)
                        .setOnClickListener(newPositiveButtonOnClickListener(alertDialog));
            }
        });
        return dialog;
    }

    private DialogInterface.OnClickListener newPositiveButtonOnClickListener() {
        return new OnClickListener() {
    /*
     * Creates a new View.OnClickListener to be used as the positive button in this dialog. The
     * OnClickListener will grey out the dialog's positive and negative buttons while the migration
     * is underway, and close the dialog once the migrate is complete.
     */
    private View.OnClickListener newPositiveButtonOnClickListener(final AlertDialog alertDialog) {
        return new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
                alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
                mBlockedNumbersMigrator.migrate(new Listener() {
                    @Override
            public void onClick(DialogInterface dialog, int which) {
                mBlockedNumbersMigrator.migrate(mMigrationListener);
                    public void onComplete() {
                        alertDialog.dismiss();
                        mMigrationListener.onComplete();
                    }
                });
            }
        };
    }
+17 −10
Original line number Diff line number Diff line
@@ -16,12 +16,9 @@

package com.android.dialer.filterednumber;

import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.AlertDialog;
import android.app.DialogFragment;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.test.ActivityInstrumentationTestCase2;

@@ -40,9 +37,8 @@ public class MigrateBlockedNumbersDialogFragmentInstrumentationTest extends

    private static final String SHOW_TAG = "ShowTag";

    @Mock private BlockedNumbersMigrator mBlockedNumbersMigrator;
    private BlockedNumbersMigrator mBlockedNumbersMigrator;
    @Mock private Listener mListener;
    private DialtactsActivity mActivity;
    private DialogFragment mMigrateDialogFragment;

    public MigrateBlockedNumbersDialogFragmentInstrumentationTest() {
@@ -53,13 +49,14 @@ public class MigrateBlockedNumbersDialogFragmentInstrumentationTest extends
    public void setUp() throws Exception {
        super.setUp();
        MockitoAnnotations.initMocks(this);
        mActivity = getActivity();
        mBlockedNumbersMigrator = new SynchronousBlockedNumbersMigrator(
                getActivity().getContentResolver());
        mMigrateDialogFragment = MigrateBlockedNumbersDialogFragment
                .newInstance(mBlockedNumbersMigrator, mListener);
        getInstrumentation().runOnMainSync(new Runnable() {
            @Override
            public void run() {
                mMigrateDialogFragment.show(mActivity.getFragmentManager(), SHOW_TAG);
                mMigrateDialogFragment.show(getActivity().getFragmentManager(), SHOW_TAG);
            }
        });
        getInstrumentation().waitForIdleSync();
@@ -70,7 +67,6 @@ public class MigrateBlockedNumbersDialogFragmentInstrumentationTest extends
    }

    public void testDialogPositiveButtonPress() {
        when(mBlockedNumbersMigrator.migrate(mListener)).thenReturn(true);
        getInstrumentation().runOnMainSync(new Runnable() {
            @Override
            public void run() {
@@ -81,6 +77,17 @@ public class MigrateBlockedNumbersDialogFragmentInstrumentationTest extends
        getInstrumentation().waitForIdleSync();
        // Dialog was dismissed
        assertNull(mMigrateDialogFragment.getDialog());
        verify(mBlockedNumbersMigrator).migrate(mListener);
    }

    private static class SynchronousBlockedNumbersMigrator extends BlockedNumbersMigrator {
        public SynchronousBlockedNumbersMigrator(ContentResolver contentResolver) {
            super(contentResolver);
        }

        @Override
        public boolean migrate(BlockedNumbersMigrator.Listener listener) {
            listener.onComplete();
            return true;
        }
    }
}