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

Commit e9bb1717 authored by Brandon Maxwell's avatar Brandon Maxwell Committed by android-build-merger
Browse files

Checking for blocked number after migrating am: ac6cd58c

am: ecacd03b

* commit 'ecacd03b':
  Checking for blocked number after migrating
parents 12c93d5a ecacd03b
Loading
Loading
Loading
Loading
+44 −13
Original line number Diff line number Diff line
@@ -30,11 +30,14 @@ import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.telecom.TelecomManager;
import android.telephony.PhoneNumberUtils;
import android.util.Log;

import com.android.contacts.common.compat.CompatUtils;
import com.android.contacts.common.compat.TelecomManagerUtil;
import com.android.contacts.common.testing.NeededForTesting;
import com.android.dialer.DialerApplication;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
import com.android.dialer.database.FilteredNumberContract.FilteredNumber;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns;
import com.android.dialer.database.FilteredNumberContract.FilteredNumberSources;
@@ -45,7 +48,6 @@ import com.android.dialer.filterednumber.BlockedNumbersMigrator;
import com.android.dialer.filterednumber.BlockedNumbersSettingsActivity;
import com.android.dialer.filterednumber.MigrateBlockedNumbersDialogFragment;
import com.android.dialerbind.ObjectFactory;
import com.android.incallui.Log;

import java.util.ArrayList;
import java.util.List;
@@ -257,18 +259,10 @@ public class FilteredNumberCompat {
        if (shouldShowMigrationDialog(blockId == null)) {
            Log.i(TAG, "showBlockNumberDialogFlow - showing migration dialog");
            MigrateBlockedNumbersDialogFragment
                    .newInstance(new BlockedNumbersMigrator(contentResolver),
                            new BlockedNumbersMigrator.Listener() {
                                @Override
                                public void onComplete() {
                                    Log.i(TAG, "showBlockNumberDialogFlow - listener showing block "
                                            + "number dialog");
                                    BlockNumberDialogFragment
                                            .show(null, number, countryIso, displayNumber,
                                                    parentViewId,
                                                    fragmentManager, callback);
                                }
                            }).show(fragmentManager, "MigrateBlockedNumbers");
                    .newInstance(new BlockedNumbersMigrator(contentResolver), newMigrationListener(
                            DialerApplication.getContext().getContentResolver(), number, countryIso,
                            displayNumber, parentViewId, fragmentManager, callback))
                    .show(fragmentManager, "MigrateBlockedNumbers");
            return;
        }
        Log.i(TAG, "showBlockNumberDialogFlow - showing block number dialog");
@@ -281,6 +275,43 @@ public class FilteredNumberCompat {
        return isBlocking && canUseNewFiltering() && !hasMigratedToNewBlocking();
    }

    private static BlockedNumbersMigrator.Listener newMigrationListener(
            final ContentResolver contentResolver, final String number, final String countryIso,
            final String displayNumber, final Integer parentViewId,
            final FragmentManager fragmentManager, @Nullable final Callback callback) {
        return new BlockedNumbersMigrator.Listener() {
            @Override
            public void onComplete() {
                Log.i(TAG, "showBlockNumberDialogFlow - listener showing block number dialog");
                if (!hasMigratedToNewBlocking()) {
                    Log.i(TAG, "showBlockNumberDialogFlow - migration failed");
                    return;
                }
                /*
                 * Edge case to cover here: if the user initiated the migration workflow with a
                 * number that's already blocked in the framework, don't show the block number
                 * dialog. Doing so would allow them to block the same number twice, causing a
                 * crash.
                 */
                new FilteredNumberAsyncQueryHandler(contentResolver).isBlockedNumber(
                        new OnCheckBlockedListener() {
                            @Override
                            public void onCheckComplete(Integer id) {
                                if (id != null) {
                                    Log.i(TAG,
                                            "showBlockNumberDialogFlow - number already blocked");
                                    return;
                                }
                                Log.i(TAG, "showBlockNumberDialogFlow - need to block number");
                                BlockNumberDialogFragment
                                        .show(null, number, countryIso, displayNumber, parentViewId,
                                                fragmentManager, callback);
                            }
                        }, number, countryIso);
            }
        };
    }

    /**
     * Creates the {@link Intent} which opens the blocked numbers management interface.
     *
+92 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.dialer.compat;

import android.app.AlertDialog;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.provider.BlockedNumberContract.BlockedNumbers;
import android.test.ActivityInstrumentationTestCase2;

import com.android.contacts.common.compat.CompatUtils;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.R;

/**
 * UI tests for FilteredNumberCompat
 */
public class FilteredNumberCompatInstrumentationTest extends
        ActivityInstrumentationTestCase2<DialtactsActivity> {

    private static final String E164_NUMBER = "+16502530000";
    private static final String NUMBER = "6502530000";
    private static final String COUNTRY_ISO = "US";

    private ContentResolver mContentResolver;
    private FragmentManager mFragmentManager;

    public FilteredNumberCompatInstrumentationTest() {
        super(DialtactsActivity.class);
    }

    @Override
    public void setUp() throws Exception {
        super.setUp();
        mContentResolver = getActivity().getContentResolver();
        mFragmentManager = getActivity().getFragmentManager();
        mContentResolver.delete(BlockedNumbersSdkCompat.CONTENT_URI,
                BlockedNumbers.COLUMN_ORIGINAL_NUMBER + " = ?", new String[]{NUMBER});
    }

    public void testShowBlockNumberDialogFlow_AlreadyBlocked() throws InterruptedException {
        if (!CompatUtils.isNCompatible()) {
            return;
        }

        ContentValues values = new ContentValues();
        values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, NUMBER);
        mContentResolver.insert(BlockedNumbers.CONTENT_URI, values);

        FilteredNumberCompat.setHasMigratedToNewBlocking(false);
        getInstrumentation().runOnMainSync(new Runnable() {
            @Override
            public void run() {
                FilteredNumberCompat
                        .showBlockNumberDialogFlow(mContentResolver, null, NUMBER, COUNTRY_ISO,
                                E164_NUMBER, R.id.floating_action_button_container,
                                mFragmentManager, null);
            }
        });
        getInstrumentation().waitForIdleSync();

        final DialogFragment migrateDialogFragment = (DialogFragment) mFragmentManager
                .findFragmentByTag("MigrateBlockedNumbers");
        assertTrue(migrateDialogFragment.getDialog().isShowing());
        getInstrumentation().runOnMainSync(new Runnable() {
            @Override
            public void run() {
                ((AlertDialog) migrateDialogFragment.getDialog())
                        .getButton(DialogInterface.BUTTON_POSITIVE).performClick();
            }
        });
        getInstrumentation().waitForIdleSync();
        assertNull(mFragmentManager.findFragmentByTag("BlockNumberDialog"));
    }
}