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

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

Merge "Only allow primary users to block numbers" into nyc-dev am: c98a5633

am: 25b094b0

* commit '25b094b0':
  Only allow primary users to block numbers
parents e5c0b968 25b094b0
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -16,7 +16,9 @@

package com.android.dialer.compat;

import android.content.Context;
import android.net.Uri;
import android.provider.BlockedNumberContract;
import android.provider.BlockedNumberContract.BlockedNumbers;

public class BlockedNumbersSdkCompat {
@@ -29,4 +31,7 @@ public class BlockedNumbersSdkCompat {

    public static final String E164_NUMBER = BlockedNumbers.COLUMN_E164_NUMBER;

    public static boolean canCurrentUserBlockNumbers(Context context) {
        return BlockedNumberContract.canCurrentUserBlockNumbers(context);
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.dialer.compat;

import android.content.Context;
import android.net.Uri;

public class BlockedNumbersSdkCompat {
@@ -27,4 +28,8 @@ public class BlockedNumbersSdkCompat {
    public static final String COLUMN_ORIGINAL_NUMBER = null;

    public static final String E164_NUMBER = null;

    public static boolean canCurrentUserBlockNumbers(Context context) {
        return false;
    }
}
+11 −4
Original line number Diff line number Diff line
@@ -59,7 +59,6 @@ import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnCheckBlockedListener;
import com.android.dialer.filterednumber.BlockNumberDialogFragment;
import com.android.dialer.filterednumber.FilteredNumbersUtil;
import com.android.dialer.filterednumber.MigrateBlockedNumbersDialogFragment;
import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
import com.android.dialer.util.DialerUtils;
@@ -156,7 +155,8 @@ public class CallDetailActivity extends AppCompatActivity
                    PhoneNumberUtil.canPlaceCallsTo(mNumber, mDetails.numberPresentation);
            mCallButton.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);
            mCopyNumberActionItem.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);
            mBlockNumberActionItem.setVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);

            updateBlockActionItemVisibility(canPlaceCallsTo ? View.VISIBLE : View.GONE);

            final boolean isSipNumber = PhoneNumberUtil.isSipNumber(mNumber);
            final boolean isVoicemailNumber =
@@ -277,7 +277,9 @@ public class CallDetailActivity extends AppCompatActivity
            }
        });


        mBlockNumberActionItem = (TextView) findViewById(R.id.call_detail_action_block);
        updateBlockActionItemVisibility(View.VISIBLE);
        mBlockNumberActionItem.setOnClickListener(this);
        mEditBeforeCallActionItem = findViewById(R.id.call_detail_action_edit_before_call);
        mEditBeforeCallActionItem.setOnClickListener(this);
@@ -292,6 +294,13 @@ public class CallDetailActivity extends AppCompatActivity
        }
    }

    private void updateBlockActionItemVisibility(int visibility) {
        if (!FilteredNumberCompat.canAttemptBlockOperations(mContext)) {
            visibility = View.GONE;
        }
        mBlockNumberActionItem.setVisibility(visibility);
    }

    @Override
    public void onResume() {
        super.onResume();
@@ -468,8 +477,6 @@ public class CallDetailActivity extends AppCompatActivity
            mBlockNumberActionItem.setCompoundDrawablesRelativeWithIntrinsicBounds(
                    R.drawable.ic_call_detail_unblock, 0, 0, 0);
        }

        mBlockNumberActionItem.setVisibility(View.VISIBLE);
    }

    private void closeSystemDialogs() {
+2 −2
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ import com.android.dialer.compat.FilteredNumberCompat;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
import com.android.dialer.filterednumber.BlockNumberDialogFragment;
import com.android.dialer.filterednumber.FilteredNumbersUtil;
import com.android.dialer.filterednumber.MigrateBlockedNumbersDialogFragment;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.service.ExtendedBlockingButtonRenderer;
@@ -346,7 +345,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
                    .setOnMenuItemClickListener(this);
        }

        if (FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) {
        if (FilteredNumberCompat.canAttemptBlockOperations(mContext)
                && FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) {
            mFilteredNumberAsyncQueryHandler.isBlockedNumber(
                    new FilteredNumberAsyncQueryHandler.OnCheckBlockedListener() {
                        @Override
+36 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.UserManager;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.telecom.TelecomManager;
@@ -293,4 +294,39 @@ public class FilteredNumberCompat {
        }
        return new Intent(context, BlockedNumbersSettingsActivity.class);
    }

    /**
     * Method used to determine if block operations are possible.
     *
     * @param context The {@link Context}.
     * @return {@code true} if the app and user can block numbers, {@code false} otherwise.
     */
    public static boolean canAttemptBlockOperations(Context context) {
        if (!CompatUtils.isNCompatible()) {
            // Dialer blocking, must be primary user
            return UserManagerCompat.isSystemUser(
                    (UserManager) context.getSystemService(Context.USER_SERVICE));
        }

        // Great Wall blocking, must be primary user and the default or system dialer
        // TODO(maxwelb): check that we're the default or system Dialer
        return BlockedNumbersSdkCompat.canCurrentUserBlockNumbers(context);
    }

    /**
     * Used to determine if the call blocking settings can be opened.
     *
     * @param context The {@link Context}.
     * @return {@code true} if the current user can open the call blocking settings, {@code false}
     * otherwise.
     */
    public static boolean canCurrentUserOpenBlockSettings(Context context) {
        if (!CompatUtils.isNCompatible()) {
            // Dialer blocking, must be primary user
            return UserManagerCompat.isSystemUser(
                    (UserManager) context.getSystemService(Context.USER_SERVICE));
        }
        // BlockedNumberContract blocking, verify through Contract API
        return BlockedNumbersSdkCompat.canCurrentUserBlockNumbers(context);
    }
}
Loading